Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

109 lines
2.8 KiB

//+-------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1997.
//
// File: Reg.cpp
//
// Contents: Registration Routines
//
// Classes:
//
// Notes:
//
// History: 05-Nov-97 rogerg Created.
//
//--------------------------------------------------------------------------
#include "precomp.h"
//--------------------------------------------------------------------------------
//
// FUNCTION: GetLastIdleHandler()
//
// PURPOSE: returns last handler synchronized on an Idle
//
//
//--------------------------------------------------------------------------------
STDMETHODIMP GetLastIdleHandler(CLSID *clsidHandler)
{
HRESULT hr = E_UNEXPECTED;
HKEY hkeyIdle;
TCHAR szGuid[GUID_SIZE];
// write out the Handler to the Registry.
if (ERROR_SUCCESS == RegCreateKeyEx(HKEY_CURRENT_USER,
IDLESYNC_REGKEY, 0, NULL,
REG_OPTION_NON_VOLATILE, KEY_QUERY_VALUE, NULL, &hkeyIdle,
NULL))
{
DWORD dwDataSize;
DWORD dwType;
dwDataSize = sizeof(szGuid);
dwType = REG_SZ;
if (ERROR_SUCCESS != RegQueryValueEx(hkeyIdle, SZ_IDLELASTHANDLERKEY ,NULL, &dwType, (LPBYTE) szGuid, &dwDataSize))
{
hr = S_FALSE;
}
// Explicit NULL termination...
szGuid[ARRAYSIZE(szGuid)-1] = 0;
RegCloseKey(hkeyIdle);
}
else
{
hr = S_FALSE;
}
if (hr == S_FALSE)
{
return hr;
}
return CLSIDFromString(szGuid, clsidHandler);
}
//--------------------------------------------------------------------------------
//
// FUNCTION: SetLastIdleHandler()
//
// PURPOSE: sets the last handler synchronized on an Idle
//
//
//--------------------------------------------------------------------------------
STDMETHODIMP SetLastIdleHandler(REFCLSID clsidHandler)
{
HRESULT hr = E_UNEXPECTED;
HKEY hkeyIdle;
TCHAR szGuid[GUID_SIZE];
DWORD dwDataSize;
if (0 == StringFromGUID2(clsidHandler, szGuid, ARRAYSIZE(szGuid)))
{
AssertSz(0,"SetLastIdleHandler Failed");
return E_UNEXPECTED;
}
// write out the Handler to the Registry.
if (ERROR_SUCCESS == RegCreateKeyEx(HKEY_CURRENT_USER,
IDLESYNC_REGKEY,0,NULL,
REG_OPTION_NON_VOLATILE,KEY_WRITE,NULL,&hkeyIdle,
NULL))
{
dwDataSize = sizeof(szGuid);
DWORD dwRet = RegSetValueEx(hkeyIdle,SZ_IDLELASTHANDLERKEY ,NULL, REG_SZ, (LPBYTE) szGuid, dwDataSize);
hr = HRESULT_FROM_WIN32(dwRet);
RegCloseKey(hkeyIdle);
}
return hr;
}