JNA本机代码有时会失败,并显示错误代码127:“找不到指定的过程”

时间:2018-06-28 18:55:37

标签: java winapi dll jna kernel-module

我正在使用JNA来调用本机代码。在大多数情况下,这是可行的,但有时会出现以下异常:

java.lang.IllegalStateException: 127: The specified procedure could not be found.

通常,第一次调用此异常(如果有的话)。如果调用成功,则只要Java程序运行,随后的所有调用都会成功。

我的代码例如如下所示:

boolean succeeded = MY_KERNEL_32.DebugSetProcessKillOnExit(false);
if (!succeeded)
{
    checkForKernelError();
}

checkForKernelError()的定义如下:

private static void checkForKernelError()
{
    int lastErrorCode = MY_KERNEL_32.GetLastError();

    if (lastErrorCode != 0)
    {
        String lastErrorMessage = formatMessage(lastErrorCode);
        String errorMessage = lastErrorCode + ": " + lastErrorMessage;
        throw new IllegalStateException(errorMessage);
    }
}

这个想法是将Windows API的本机代码与在Windows上运行的其他进程一起调用,并始终断言此后成功。但是为什么当本机函数永不更改且应始终找到时,为什么有时会得到The specified procedure could not be found。可能是这里的问题,如何解决它,使其始终如一地正常工作?

0 个答案:

没有答案