HRESULT Init()

in Include/rwlock.h [34:61]


    HRESULT Init()
    {
        HRESULT hr = S_OK;
    
        if (FALSE == m_bInited)
        {
            m_rwLock.fWriterWaiting = FALSE;
            m_rwLock.LockCount = 0;
            if ( !InitializeCriticalSectionAndSpinCount( &m_rwLock.critsec, 0 )) 
            {
                DWORD dwError  = GetLastError();
                hr = HRESULT_FROM_WIN32(dwError);
                return hr;
            }

            m_rwLock.ReadersDoneEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
            if( NULL == m_rwLock.ReadersDoneEvent ) 
            {
                DWORD dwError  = GetLastError();
                hr = HRESULT_FROM_WIN32(dwError);
                DeleteCriticalSection(&m_rwLock.critsec);
                return hr;
            }
            m_bInited = TRUE;
        }

        return hr;
    }