0

子プロセスで TerminateProcess を呼び出そうとしています (子プロセスがデッドロックまたは劇的な何かに陥ったときに使用される安全メカニズムとしてのみ) が、ERROR_INVALID_HANDLER を取得しています。

プロセス設定で遊んでみましたが、役に立ちませんでした。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 を使用しようとしましたが、うまくいきませんでした。

何が間違っているのか誰にも分かりませんか?

編集:そのようなばかげたエラーを撃ちます!hProcess に NULL を割り当てていました (「==」ではなく「=」)

投稿失礼します!

4

1 に答える 1