gpt4 book ai didi

java - 如何修复 QueryFullProcessImageName 抛出 "A device attached to the system is not functioning"?

转载 作者:行者123 更新时间:2023-12-05 07:17:40 32 4
gpt4 key购买 nike

我试图从通过 NtQueryObject 获得的句柄列表中找到拥有句柄的进程的名称。我正在运行每个句柄以检查其进程名称,有时它会抛出“com.sun.jna.platform.win32.Win32Exception:连接到系统的设备无法正常工作。”错误。这通常工作正常,但当它确实发生时,它似乎会在多个进程上抛出大量句柄。我正在使用 JNA 从在 Windows 10 上运行的 Java 程序进行所有调用。

我已尝试尽可能缩小它的范围,但我无法弄清楚为什么它有时会抛出此错误。

NtDllX.SYSTEM_HANDLE_INFORMATION info = getSystemHandleInfo();

for(int i = 0; i < info.HandleCount; i++) {
//For each handle check for target handle
NtDllX.SYSTEM_HANDLE sh = info.Handles[i];
HANDLE sHandle = new HANDLE(new Pointer(sh.Handle));
HANDLE rProcess = Kernel32.INSTANCE.OpenProcess(Kernel32.PROCESS_DUP_HANDLE | Kernel32.PROCESS_QUERY_INFORMATION | Kernel32.PROCESS_VM_READ, false, sh.ProcessId);
//Check for target process
if(rProcess != null) {
String p = "";
try {
p = Kernel32Util.QueryFullProcessImageName(rProcess, 0); //Throwing Error Occasionally
} catch (Exception e) {
...

抛出的错误:

com.sun.jna.platform.win32.Win32Exception: A device attached to the system is not functioning. at com.sun.jna.platform.win32.Kernel32Util.QueryFullProcessImageName(Kernel32Util.java:842)

最佳答案

QueryFullProcessImageNameW 失败,返回 ERROR_GEN_FAILURE(310x1f,“连接到系统的设备无法正常工作") 如果该进程是一个“僵尸”进程,即该进程已终止但并非所有指向它的句柄都已关闭。在这种情况下,您仍然可以使用带有 PROCESS_NAME_NATIVE 标志的 QueryFullProcessImageNameW 来获取 native 路径,但您可能只想跳过它,因为它不再运行。

关于java - 如何修复 QueryFullProcessImageName 抛出 "A device attached to the system is not functioning"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58696505/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com