Why would WaitForSingleObject return WAIT_FAILED

mutex, winapi, windows

Solution

If you lack the SYNCHRONIZE privilege on the object, then you cannot wait. WAIT_FAILED will be returned.

Problem

MSDN says If the function fails, the return value is WAIT_FAILED. To get extended error information, call GetLastError. The code is: ``` 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 ); ``` But what are the reasons that could happen?

Original source