HRESULT Service_Monitor::EnsureInitialized()

in src/ServiceMonitor/ServiceMonitor.cpp [20:42]


HRESULT Service_Monitor::EnsureInitialized()
{
    HRESULT hr = S_OK;
    if (!_fInitialized)
    {
        AcquireSRWLockExclusive(&_srwLock);
        if (!_fInitialized)
        {
            _hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_CONNECT);
            if (_hSCManager == NULL)
            {
                hr = HRESULT_FROM_WIN32(GetLastError());
                _tprintf(L"\nERROR:Could NOT open server control manager [%x]\n", hr);
            }
            else
            {
                _fInitialized = TRUE;
            }
        }
        ReleaseSRWLockExclusive(&_srwLock);
    }
    return hr;
}