|
|
//+-------------------------------------------------------------------------
//
// 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; WCHAR wszGuid[GUID_SIZE]; TCHAR *pszGuid; DWORD dwDataSize; #ifndef _UNICODE
TCHAR szGuid[GUID_SIZE]; #endif // _UNICODE
#ifdef _UNICODE
dwDataSize = sizeof(wszGuid); pszGuid = wszGuid; #else
dwDataSize = sizeof(szGuid); pszGuid = szGuid; #endif
// write out the Handler to the Registry.
if (ERROR_SUCCESS == RegCreateKeyExXp(HKEY_CURRENT_USER, IDLESYNC_REGKEY,0,NULL, REG_OPTION_NON_VOLATILE,KEY_QUERY_VALUE,NULL,&hkeyIdle, NULL,FALSE /*fSetSecurity*/)) { DWORD dwType;
dwType = REG_SZ;
hr = RegQueryValueEx(hkeyIdle,SZ_IDLELASTHANDLERKEY ,NULL, &dwType , (LPBYTE) pszGuid, &dwDataSize);
RegCloseKey(hkeyIdle); } else { return S_FALSE; }
if (hr != ERROR_SUCCESS) { hr = S_FALSE; return hr; }
#ifndef _UNICODE
MultiByteToWideChar(CP_ACP ,0,szGuid,-1,wszGuid,GUID_SIZE); #endif // _UNICODE
return CLSIDFromString(wszGuid,clsidHandler); }
//--------------------------------------------------------------------------------
//
// FUNCTION: SetLastIdleHandler()
//
// PURPOSE: sets the last handler synchronized on an Idle
//
//
//--------------------------------------------------------------------------------
STDMETHODIMP SetLastIdleHandler(REFCLSID clsidHandler) { HRESULT hr = E_UNEXPECTED; HKEY hkeyIdle; WCHAR wszGuid[GUID_SIZE]; TCHAR *pszGuid; DWORD dwDataSize; #ifndef _UNICODE
TCHAR szGuid[GUID_SIZE]; #endif // _UNICODE
if (0 == StringFromGUID2(clsidHandler,wszGuid, GUID_SIZE)) { AssertSz(0,"SetLastIdleHandler Failed"); return E_UNEXPECTED; }
#ifdef _UNICODE
pszGuid = wszGuid; dwDataSize = sizeof(wszGuid); #else
BOOL fUsedDefaultChar;
WideCharToMultiByte(CP_ACP ,0,wszGuid, -1,szGuid,GUID_SIZE, NULL,&fUsedDefaultChar);
pszGuid = szGuid; dwDataSize = GUID_SIZE * sizeof(TCHAR); #endif // _UNICODE
// write out the Handler to the Registry.
if (ERROR_SUCCESS == RegCreateKeyExXp(HKEY_CURRENT_USER, IDLESYNC_REGKEY,0,NULL, REG_OPTION_NON_VOLATILE,KEY_WRITE,NULL,&hkeyIdle, NULL,FALSE /*fSetSecurity*/)) {
hr = RegSetValueEx(hkeyIdle,SZ_IDLELASTHANDLERKEY ,NULL, REG_SZ , (LPBYTE) pszGuid, dwDataSize);
RegCloseKey(hkeyIdle); }
return hr; }
|