Source code of Windows XP (NT5)
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.
 
 
 
 
 
 

200 lines
3.6 KiB

/*++
Copyright (c) 1998-1999 Microsoft Corporation
All rights reserved.
Module Name:
dbgreg.cxx
Abstract:
Debug Registry class header
Author:
Steve Kiraly (SteveKi) 18-Jun-1998
Revision History:
--*/
#ifndef _DBGREG_HXX_
#define _DBGREG_HXX_
DEBUG_NS_BEGIN
class TDebugRegApis
{
public:
typedef LONG (APIENTRY *pfRegCreateKeyEx)( HKEY, LPCTSTR, DWORD, LPTSTR, DWORD, REGSAM, LPSECURITY_ATTRIBUTES, PHKEY, LPDWORD );
typedef LONG (APIENTRY *pfRegOpenKeyEx)(HKEY, LPCTSTR, DWORD, REGSAM, PHKEY );
typedef LONG (APIENTRY *pfRegCloseKey)( HKEY );
typedef LONG (APIENTRY *pfRegQueryValueEx)(HKEY, LPCTSTR, LPDWORD, LPDWORD, LPBYTE, LPDWORD);
typedef LONG (APIENTRY *pfRegSetValueEx)(HKEY, LPCTSTR, DWORD, DWORD, CONST BYTE*, DWORD );
typedef LONG (APIENTRY *pfRegEnumKeyEx)(HKEY, DWORD, LPTSTR, LPDWORD, LPDWORD, LPTSTR, LPDWORD, PFILETIME );
typedef LONG (APIENTRY *pfRegDeleteKey)(HKEY, LPCTSTR );
typedef LONG (APIENTRY *pfRegDeleteValue)(HKEY, LPCTSTR );
TDebugRegApis::
TDebugRegApis(
VOID
);
BOOL
TDebugRegApis::
bValid(
VOID
) const;
pfRegCreateKeyEx m_CreateKeyEx;
pfRegOpenKeyEx m_OpenKeyEx;
pfRegCloseKey m_CloseKey;
pfRegQueryValueEx m_QueryValueEx;
pfRegSetValueEx m_SetValueEx;
pfRegEnumKeyEx m_EnumKeyEx;
pfRegDeleteKey m_DeleteKey;
pfRegDeleteValue m_DeleteValue;
private:
//
// Copying and assignment are not defined.
//
TDebugRegApis(
const TDebugRegApis &
);
TDebugRegApis&
operator =(
const TDebugRegApis &
);
TDebugLibrary m_Lib;
BOOL m_bValid;
};
class TDebugRegistry
{
public:
enum EIoFlags
{
kRead = 1 << 0,
kWrite = 1 << 1,
kCreate = 1 << 2,
kOpen = 1 << 3,
};
enum EConstants
{
kHint = 256,
};
TDebugRegistry(
IN LPCTSTR pszSection,
IN UINT ioFlags,
IN HKEY hOpenedKey = HKEY_CURRENT_USER
);
~TDebugRegistry(
VOID
);
BOOL
bValid(
VOID
) const;
DWORD
LastError(
VOID
) const;
BOOL
bRead(
IN LPCTSTR pValueName,
IN OUT DWORD &dwValue
);
BOOL
bRead(
IN LPCTSTR pValueName,
IN OUT BOOL &bValue
);
BOOL
bRead(
IN LPCTSTR pValueName,
IN OUT TDebugString &strValue
);
BOOL
bRead(
IN LPCTSTR pValueName,
IN OUT PVOID pValue,
IN DWORD cbSize,
OUT LPDWORD pcbNeeded = NULL
);
BOOL
bWrite(
IN LPCTSTR pValueName,
IN const DWORD dwValue
);
BOOL
bWrite(
IN LPCTSTR pValueName,
IN LPCTSTR pszValue
);
BOOL
bWrite(
IN LPCTSTR pValueName,
IN const PVOID pValue,
IN DWORD cbSize
);
BOOL
bRemove(
IN LPCTSTR pValueName
);
BOOL
bRemoveKey(
IN LPCTSTR pKeyName
);
private:
//
// Copying and assignment are not defined.
//
TDebugRegistry(
const TDebugRegistry &
);
TDebugRegistry&
operator =(
const TDebugRegistry &
);
DWORD
dwRecursiveRegDeleteKey(
IN HKEY hKey,
IN LPCTSTR pszSubkey
) const;
TDebugString m_strSection;
HKEY m_hKey;
DWORD m_Status;
TDebugRegApis m_Reg;
};
DEBUG_NS_END
#endif