8

どして

HANDLE mutexHandle = INVALID_HANDLE_VALUE;
WaitForSingleObject(mutexHandle, INFINITE);

ブロック?エラーメッセージは返されません。INVALID_HANDLEミューテックスハンドルにアクセスするにはミューテックスが必要になるため、ハンドルをチェックするのはミューテックスにとってばかげています...

ところで:WAIT_FAILEDハンドルが閉じられた場合、それは戻ります。

4

1 に答える 1

19

http://blogs.msdn.com/oldnewthing/archive/2004/03/02/82639.aspxから:

第4に、値には特に注意する必要がありINVALID_HANDLE_VALUEます。偶然にも、値INVALID_HANDLE_VALUEは、によって返される疑似ハンドルと数値的に等しくなりGetCurrentProcess()ます。WaitForSingleObject多くのカーネル関数は疑似ハンドルを受け入れるため、たとえば、失敗したハンドルを台無しにして誤って呼び出した場合、INVALID_HANDLE_VALUE実際には自分のプロセスを待つことになります。もちろん、この待機は決して完了しません。プロセスが終了すると通知されるため、自分で待機することになります。

于 2009-09-24T13:33:02.470 に答える