|
|
/************************************************************************
Copyright (c) 2000 - 2000 Microsoft Corporation
Module Name :
cfreg.cpp
Abstract :
Registry wrapper functions.
Author :
Revision History :
***********************************************************************/ #include "qmgrlibp.h"
#if !defined(BITS_V12_ON_NT4)
#include "cfreg.tmh"
#endif
////////////////////////////////////////////////////////////////////////////
//
// Public Function GetRegStringValue()
// Read the registry value of timestamp for last detection
// Input: Name of value
// Output: SYSTEMTIME structure contains the time
// Return: HRESULT flag indicating the success of this function
//
////////////////////////////////////////////////////////////////////////////
HRESULT GetRegStringValue(LPCTSTR lpszValueName, LPTSTR lpszBuffer, int iBufferSize) { HKEY hKey; DWORD dwType = REG_SZ; DWORD dwSize = iBufferSize; DWORD dwRet;
if (lpszValueName == NULL || lpszBuffer == NULL) { return E_INVALIDARG; }
//
// query the last timestamp value
//
dwRet = RegQueryValueEx( g_GlobalInfo->m_QmgrRegistryRoot, lpszValueName, NULL, &dwType, (LPBYTE)lpszBuffer, &dwSize);
if (dwRet == ERROR_SUCCESS && dwType == REG_SZ) { return S_OK; }
return E_FAIL;
}
////////////////////////////////////////////////////////////////////////////
//
// Public Function SetRegStringValue()
// Set the registry value of timestamp as current system local time
// Input: name of the value to set. pointer to the time structure to set time. if null,
// we use current system time.
// Output: None
// Return: HRESULT flag indicating the success of this function
//
////////////////////////////////////////////////////////////////////////////
HRESULT SetRegStringValue(LPCTSTR lpszValueName, LPCTSTR lpszNewValue) { HKEY hKey; HRESULT hRet = E_FAIL; DWORD dwResult;
if (lpszValueName == NULL || lpszNewValue == NULL) { return E_INVALIDARG; }
//
// set the time to the lasttimestamp value
//
hRet = (RegSetValueEx( //SEC: REVIEWED 2002-03-28
g_GlobalInfo->m_QmgrRegistryRoot, lpszValueName, 0, REG_SZ, (const unsigned char *)lpszNewValue, lstrlen(lpszNewValue) + 1 // SEC: REVIEWED 2002-03-28
) == ERROR_SUCCESS) ? S_OK : E_FAIL;
return hRet; }
////////////////////////////////////////////////////////////////////////////
//
// Public Function DeleteRegStringValue()
// Delete the registry value entry
// Input: name of the value to entry,
// Output: None
// Return: HRESULT flag indicating the success of this function
//
////////////////////////////////////////////////////////////////////////////
HRESULT DeleteRegStringValue(LPCTSTR lpszValueName) { HKEY hKey; HRESULT hRet = E_FAIL; DWORD dwResult;
if (lpszValueName == NULL) { return E_INVALIDARG; }
//
// set the time to the lasttimestamp value
//
hRet = (RegDeleteValue( g_GlobalInfo->m_QmgrRegistryRoot, lpszValueName ) == ERROR_SUCCESS) ? S_OK : E_FAIL;
return hRet;
}
////////////////////////////////////////////////////////////////////////////
//
// Public Function GetRegDWordValue()
// Get a DWORD from specified regustry value name
// Input: name of the value to retrieve value
// Output: pointer to the retrieved value
// Return: HRESULT flag indicating the success of this function
//
////////////////////////////////////////////////////////////////////////////
HRESULT GetRegDWordValue(LPCTSTR lpszValueName, LPDWORD pdwValue) { HKEY hKey; int iRet; DWORD dwType = REG_DWORD, dwSize = sizeof(DWORD);
if (lpszValueName == NULL) { return E_INVALIDARG; }
//
// open critical fix key
//
iRet = RegOpenKeyEx( HKEY_LOCAL_MACHINE, C_QMGR_REG_KEY, 0, KEY_READ, &hKey);
if (iRet == ERROR_SUCCESS) {
//
// query the last timestamp value
//
iRet = RegQueryValueEx( //SEC: REVIEWED 2002-03-28
hKey, lpszValueName, NULL, &dwType, (LPBYTE)pdwValue, &dwSize); RegCloseKey(hKey);
if (iRet == ERROR_SUCCESS) { if (dwType == REG_DWORD) { return S_OK; }
return E_FAIL; } }
return HRESULT_FROM_WIN32( iRet ); }
////////////////////////////////////////////////////////////////////////////
//
// Public Function SetRegDWordValue()
// Set the registry value as a DWORD
// Input: name of the value to set. value to set
// Output: None
// Return: HRESULT flag indicating the success of this function
//
////////////////////////////////////////////////////////////////////////////
HRESULT SetRegDWordValue(LPCTSTR lpszValueName, DWORD dwValue) { HKEY hKey; HRESULT hRet = E_FAIL; DWORD dwResult;
if (lpszValueName == NULL) { return E_INVALIDARG; }
//
// open the key
//
if (RegCreateKeyEx( //SEC: REVIEWED 2002-03-28
HKEY_LOCAL_MACHINE, // root key
C_QMGR_REG_KEY, // subkey
0, // reserved
NULL, // class name
REG_OPTION_NON_VOLATILE, // option
KEY_WRITE, // security
NULL, // security attribute
&hKey, &dwResult) == ERROR_SUCCESS) {
//
// set the time to the lasttimestamp value
//
hRet = (RegSetValueEx( //SEC: REVIEWED 2002-03-28
hKey, lpszValueName, 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(DWORD) ) == ERROR_SUCCESS) ? S_OK : E_FAIL; RegCloseKey(hKey); } return hRet; }
|