title: Why would WaitForSingleObject return WAIT_FAILED
body: <p>MSDN says</p>
  
  <blockquote>
    <p>If the function fails, the return value is WAIT_FAILED.  To get extended error information, call GetLastError.</p>
  </blockquote>
  
  <p>The code is:</p>
  
  <pre><code>HANDLE     m_mutex_handle;    /**&lt; m_mutex_handle. The handle to the created mutex. */
  m_mutex_handle = ::CreateMutex( 0, false, NULL );
  ::WaitForSingleObject( m_mutex_handle, INFINITE );
  </code></pre>
  
  <p>But what are the reasons that could happen?</p>