6

MSDNによると

関数が失敗した場合、戻り値は WAIT_FAILED です。拡張エラー情報を取得するには、GetLastError を呼び出します。

コードは次のとおりです。

HANDLE     m_mutex_handle;    /**< m_mutex_handle. The handle to the created mutex. */
m_mutex_handle = ::CreateMutex( 0, false, NULL );
::WaitForSingleObject( m_mutex_handle, INFINITE );

しかし、どのような理由が考えられるのでしょうか?

4

4 に答える 4

7

オブジェクトに対する SYNCHRONIZE 権限がない場合は、待機できません。WAIT_FAILED が返されます。

于 2008-10-17T00:56:21.750 に答える
4

偽のオブジェクトを渡すと、それが発生する可能性があります。

于 2008-10-17T00:41:33.997 に答える
1

スレッド ハンドルの 1 つが疑似ハンドルであるため、スレッド ハンドルの配列を渡すときに、WaitForMultipleObjects から WAIT_FAILED を取得しました。いつものように、不滅の Raymond Chen が説明し、修正を提供しました: https://devblogs.microsoft.com/oldnewthing/20141015-00/?p=43843

于 2016-12-14T20:00:19.907 に答える
1

ハンドルの待機中にハンドルを閉じると、未定義の動作が発生する可能性もあります。

于 2008-10-17T00:46:24.487 に答える