我正在寻找使用JNA进行Windows进程读/写的最有效方法。
我使用以下两种方法来完成此任务:
public static Memory readMemory(Pointer process, long address, int bytesToRead) {
Memory memory = new Memory(bytesToRead);
KERNEL32.ReadProcessMemory(process, address, memory, bytesToRead, 0);
return memory;
}
public static void writeMemory(Pointer process, long address, Memory memory) {
KERNEL32.WriteProcessMemory(process, address, memory, (int) memory.size(), 0);
}
我更愿意使用ByteBuffer
这样的东西,我可以重复使用它来避免垃圾创建。是否有可能以类似的方式重用JNA的Memory
?
就Memory
而言,index
的意思是:
void write(long offset, byte[] buf, int index, int length)