/*++ 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