Windows:终止进程:ERROR_INVALID_HANDLE

问题描述 投票:0回答:1

我正在尝试在子进程上调用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('='而不是'==')

抱歉,该帖子!

windows terminate createprocess
1个回答
0
投票
if (hProcess = NULL)

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

© www.soinside.com 2019 - 2024. All rights reserved.