首页 > 解决方案 > GetProcessImageFileNameA 抛出 ERROR_INVALID_PARAMETER

问题描述

我使用 JNAGetProcessImageFileNameA从 Kernel32 调用,但每次运行程序时都会得到一个随机结果,要么得到 ERROR_SUCCESS 要么 ERROR_INVALID_PARAMETER。

Memory processName = new Memory(1024);
IntByReference read = new IntByReference(1024);
psapi.GetProcessImageFileNameA(handle, processName, read);

System.out.println(processName.getString(0));
System.out.println(kernel32.GetLastError());

句柄每次都有效,与最终结果无关。

标签: javawindowsjna

解决方案


第三个参数的函数映射是DWORD nSize。ADWORD可以直接映射到 (4-byte) int

您已经传递了 an IntByReferencewhich 是指向 an 的指针int

尝试

int read = 1024;

推荐阅读