0

我正在尝试在我的子进程上调用 TerminateProcess(仅作为当孩子陷入死锁或剧烈事件时使用的安全机制),但我收到了 ERROR_INVALID_HANDLER。

我尝试过使用 Process 设置,但没有帮助。如果我在 CreateProcess() 之后立即调用 TerminateProcess(),则该调用确实有效。

BOOL ret;
HANDLE hProcess;

hProcess = OpenProcess(PROCESS_TERMINATE,
                        FALSE,
                        pid);

if (hProcess = NULL) {
    debug("Error: OpenProcess failed: %d", GetLastError());
    return -1;
}

ret = TerminateProcess(hProcess, 1);
CloseHandle(hProcess);

if (!ret) {
    debug("Error: TerminateProcess failed: %d", GetLastError());
    return -1;
}
else return 0;

我收到错误 6,INVALID_HANDLE_EXCEPTION。我仔细检查了 pid 是正确的(它与任务管理器中的内容匹配)。唯一可能的错误可能是我如何使用 OpenProcess() 获取句柄。我尝试使用 PROCESS_ALL_ACCESS 但效果不佳。

有谁知道可能出了什么问题?

编辑:拍摄这样一个愚蠢的错误!我将 NULL 分配给 hProcess('=' 而不是 '==')

对不起这个帖子!

4

1 回答 1

0
if (hProcess = NULL)

这是一个分配而不是一个条件,将“=”更改为“==”

于 2020-03-28T23:33:01.353 回答