Благодаря Дэниелу Уиддису у меня есть ответ.
В настоящее время метод EnumProcessModulesEx не отображается в JNA, поэтому вам нужно создать свою собственную версию Psapi, которая в моем случае выглядит примерно так:
import com.sun.jna.Native;
import com.sun.jna.platform.win32.Psapi;
import com.sun.jna.platform.win32.WinDef.HMODULE;
import com.sun.jna.platform.win32.WinNT.HANDLE;
import com.sun.jna.ptr.IntByReference;
import com.sun.jna.win32.W32APIOptions;
public interface CustomPsapi extends Psapi{
Psapi INSTANCE = Native.load("psapi", Psapi.class,
W32APIOptions.DEFAULT_OPTIONS);
public void EnumProcessModulesEx(HANDLE hProcess, HMODULE[] lphModule, int cb,
IntByReference lpcbNeeded, int dwFilterFlag);
}
Затем вы можете загрузить свой собственный класс и использовать методы, которые вы отобразили.
public static CustomPsapi c_psapi = Native.load("psapi", CustomPsapi.class);
Что касается правильного отображения всех библиотек DLL, вам нужно использовать теперь сопоставленный EnumProcessModulesEx. метод с флагом для всех модулей в качестве последнего аргумента (0x03), поэтому метод должен выглядеть примерно так:
c_psapi.EnumProcessModulesEx(process, modules, 1024, new IntByReference(1024), 0x03);