0

最近、Windows のスレッドが生きているかどうかを確認するコードを作成しようとしました。このフォーラムを検索したところ、次のような議論が見つかりました:プロセスまたはスレッドが生きているか、C++ で ID が与えられていないかを確認する方法は? .

OpenThread API を使用できることを理解しています。ただし、次のように私のコードでは機能しないようです。

DWORD WINAPI myThread( LPVOID lpParam )
{
    cout<<"child thread"<<endl;
    return 0;
}

int main(void)
{
    DWORD  lTldID = 0;
    HANDLE lTldHD = CreateThread(NULL, 0, myThread, 0, 0, &lTldID);

    WaitForSingleObject(lTldHD, INFINITE);
    HANDLE lHD = OpenThread(0x0040, FALSE, lTldID);
    return 1;
}

スレッド 'myThread' は OpenThread() の呼び出し時に終了しているはずなので、HANDLE lHD は NULL になるはずです。ただし、常に 0x00000068 のような NOT NULL 値を取得しました。なぜこれが起こったのかわかりません。何か案が?

ありがとう、シャオモ

4

1 に答える 1

0
BOOL WINAPI GetExitCodeThread(
  _In_  HANDLE  hThread,
  _Out_ LPDWORD lpExitCode
);

この関数はすぐに戻ります。指定されたスレッドが終了しておらず、関数が成功した場合、返されるステータスは ですSTILL_ACTIVE

于 2017-08-17T10:49:47.740 に答える