package com.sun.jna.examples.win32.ext; import com.sun.jna.Memory; import com.sun.jna.Structure; import com.sun.jna.examples.win32.Kernel32; import com.sun.jna.examples.win32.W32API.HANDLE; import com.sun.jna.ptr.IntByReference; /** * Base structure for a structure that will be constructed in via * ReadProcessMemory. * * @author <a href="mailto:phil.kursawe@gmail.com">Philipp Kursawe</a> * */ public abstract class ProcessStructure extends Structure { private final HANDLE process; public ProcessStructure(HANDLE process, int baseAddress) { this.process = process; Memory memory = new Memory(size()); IntByReference read = new IntByReference(); Kernel32.INSTANCE.ReadProcessMemory(process, baseAddress, memory, new Kernel32.SIZE_T(memory.getSize()), read); useMemory(memory); read(); } /** * @return the process associated with this structure. */ protected final HANDLE getProcess() { return process; } }