You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			|  | 5 years ago | |
|---|---|---|
| .. | ||
| examples | 5 years ago | |
| src | 5 years ago | |
| .gitignore | 5 years ago | |
| Cargo.toml | 5 years ago | |
| README.md | 5 years ago | |
| binddestr.h | 5 years ago | |
| bindgen.sh | 5 years ago | |
| cbindgen.toml | 5 years ago | |
| memflow.h | 5 years ago | |
| memflow_cpp.h | 5 years ago | |
		
			
				
				README.md
			
		
		
			
			
		
	
	memflow-ffi
The memflow FFI crate provides an interface to the memflow API for C/C++. Currently a single memflow.h file is generated aside from the dynamic library that can be used to interact with memflow.
A simple example that initializes the library:
#include "memflow.h"
#include <stdio.h>
int main(int argc, char *argv[]) {
	log_init(4);
	ConnectorInventory *inv = inventory_try_new();
	printf("inv: %p\n", inv);
	const char *conn_name = argc > 1? argv[1]: "kvm";
	const char *conn_arg = argc > 2? argv[2]: "";
	CloneablePhysicalMemoryObj *conn =
        inventory_create_connector(inv, conn_name, conn_arg);
	printf("conn: %p\n", conn);
	if (conn) {
		PhysicalMemoryObj *phys_mem = downcast_cloneable(conn);
		printf("phys_mem: %p\n", phys_mem);
		uint64_t read = phys_read_u64(phys_mem, addr_to_paddr(0x30000));
		printf("Read: %lx\n", read);
		phys_free(phys_mem);
		connector_free(conn);
		printf("conn freed!\n");
	}
	inventory_free(inv);
	printf("inv freed!\n");
	return 0;
}
Additional examples can be found in the examples folder as well as in the memflow-win32-ffi crate.