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 );
Но по каким причинам это может произойти?