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 );
しかし、どのような理由が考えられるのでしょうか?