/*++ Copyright (c) 1998 Microsoft Corporation Module Name: reg95.h Abstract: Implements wrappers to the Win95Reg APIs. Author: Jim Schmidt (jimschm) 04-Feb-1998 Revision History: --*/ #pragma once // // Tracking of registry calls. These functions are completely // turned off for non-debug builds and are mapped to the standard // Win32 APIs via macro definitions. // // // The Track* API take the same params as the Reg* equivalents. // The Debug* API also take the same params as the Reg* equivalents, but // the debug versions have two extra parameters, File and Line. // // // Use the Track* API set instead of the Reg* API set. // #ifndef DEBUG #define DumpOpenKeys95() #define RegTrackTerminate95() #define TrackedRegOpenKey95 Win95RegOpenKey #define TrackedRegOpenKeyEx95 Win95RegOpenKeyEx #define TrackedRegOpenKey95A Win95RegOpenKeyA #define TrackedRegOpenKeyEx95A Win95RegOpenKeyExA #define TrackedRegOpenKey95W Win95RegOpenKeyW #define TrackedRegOpenKeyEx95W Win95RegOpenKeyExW #define OurRegOpenKeyEx95A Win95RegOpenKeyExA #define OurRegOpenRootKey95A(a,b) #define OurRegOpenRootKey95W(a,b) #define OurRegOpenKeyEx95W Win95RegOpenKeyExW #define CloseRegKey95 RealCloseRegKey95 #define DEBUG_TRACKING_PARAMS #define DEBUG_TRACKING_ARGS #else extern DWORD g_DontCare95; #define DEBUG_TRACKING_PARAMS ,PCSTR File,DWORD Line #define DEBUG_TRACKING_ARGS , File, Line VOID DumpOpenKeys95 ( VOID ); VOID RegTrackTerminate95 ( VOID ); LONG DebugRegOpenKeyEx95A ( HKEY Key, PCSTR SubKey, DWORD Unused, REGSAM SamMask, PHKEY ResultPtr, PCSTR File, DWORD Line ); LONG DebugRegOpenKeyEx95W ( HKEY Key, PCWSTR SubKey, DWORD Unused, REGSAM SamMask, PHKEY ResultPtr, PCSTR File, DWORD Line ); VOID DebugRegOpenRootKey95A ( HKEY Key, PCSTR SubKey, PCSTR File, DWORD Line ); VOID DebugRegOpenRootKey95W ( HKEY Key, PCWSTR SubKey, PCSTR File, DWORD Line ); #ifdef UNICODE #define DebugRegOpenRootKey95 DebugRegOpenRootKey95W #else #define DebugRegOpenRootKey95 DebugRegOpenRootKey95A #endif LONG DebugCloseRegKey95 ( HKEY Key, PCSTR File, DWORD Line ); #define CloseRegKey95(k) DebugCloseRegKey95(k,__FILE__,__LINE__) #define OurRegOpenKeyEx95A DebugRegOpenKeyEx95A #define OurRegOpenRootKey95A DebugRegOpenRootKey95A #define OurRegOpenRootKey95W DebugRegOpenRootKey95W #define OurRegOpenKeyEx95W DebugRegOpenKeyEx95W #define TrackedRegOpenKeyEx95(key,subkey,u,sam,res) DebugRegOpenKeyEx95(key,subkey,u,sam,res,__FILE__,__LINE__) #define TrackedRegOpenKey95(k,sk,rp) DebugRegOpenKeyEx95(k,sk,0,KEY_ALL_ACCESS,rp,__FILE__,__LINE__) #define TrackedRegOpenKeyEx95A(key,subkey,u,sam,res) DebugRegOpenKeyEx95A(key,subkey,u,sam,res,__FILE__,__LINE__) #define TrackedRegOpenKey95A(k,sk,rp) DebugRegOpenKeyEx95A(k,sk,0,KEY_ALL_ACCESS,rp,__FILE__,__LINE__) #define TrackedRegOpenKeyEx95W(key,subkey,u,sam,res) DebugRegOpenKeyEx95W(key,subkey,u,sam,res,__FILE__,__LINE__) #define TrackedRegOpenKey95W(k,sk,rp) DebugRegOpenKeyEx95W(k,sk,0,KEY_ALL_ACCESS,rp,__FILE__,__LINE__) // // Undefine the real registry APIs -- using them will throw off the tracking // #undef Win95RegOpenKey #undef Win95RegOpenKeyEx #define Win95RegCloseKey USE_CloseRegKey95 #define Win95RegOpenKeyA USE_TrackedRegOpenKey95A #define Win95RegOpenKeyExA USE_TrackedRegOpenKeyExA #define Win95RegOpenKeyW USE_TrackedRegOpenKey95W #define Win95RegOpenKeyExW USE_TrackedRegOpenKeyEx95W #define Win95RegOpenKey USE_TrackedRegOpenKey95 #define Win95RegOpenKeyEx USE_TrackedRegOpenKeyEx95 #endif #ifdef UNICODE #define DebugRegOpenKeyEx95 DebugRegOpenKeyEx95W #else #define DebugRegOpenKeyEx95 DebugRegOpenKeyEx95A #endif // // Enum functions // BOOL EnumFirstRegKey95A ( OUT PREGKEY_ENUMA EnumPtr, IN HKEY hKey ); BOOL EnumFirstRegKey95W ( OUT PREGKEY_ENUMW EnumPtr, IN HKEY hKey ); BOOL RealEnumFirstRegKeyStr95A ( OUT PREGKEY_ENUMA EnumPtr, IN PCSTR RegKey DEBUG_TRACKING_PARAMS ); BOOL RealEnumFirstRegKeyStr95W ( OUT PREGKEY_ENUMW EnumPtr, IN PCWSTR RegKey DEBUG_TRACKING_PARAMS ); #ifdef DEBUG #define EnumFirstRegKeyStr95A(a,b) RealEnumFirstRegKeyStr95A(a,b,__FILE__,__LINE__) #define EnumFirstRegKeyStr95W(a,b) RealEnumFirstRegKeyStr95W(a,b,__FILE__,__LINE__) #else #define EnumFirstRegKeyStr95A RealEnumFirstRegKeyStr95A #define EnumFirstRegKeyStr95W RealEnumFirstRegKeyStr95W #endif BOOL EnumNextRegKey95A ( IN OUT PREGKEY_ENUMA EnumPtr ); BOOL EnumNextRegKey95W ( IN OUT PREGKEY_ENUMW EnumPtr ); VOID AbortRegKeyEnum95A ( IN OUT PREGKEY_ENUMA EnumPtr ); VOID AbortRegKeyEnum95W ( IN OUT PREGKEY_ENUMW EnumPtr ); BOOL RealEnumFirstRegKeyInTree95A ( OUT PREGTREE_ENUMA EnumPtr, IN PCSTR BaseKeyStr ); #define EnumFirstRegKeyInTree95A(e,base) SETTRACKCOMMENT(BOOL,"EnumFirstRegKeyInTree95A",__FILE__,__LINE__)\ RealEnumFirstRegKeyInTree95A(e,base)\ CLRTRACKCOMMENT BOOL RealEnumFirstRegKeyInTree95W ( OUT PREGTREE_ENUMW EnumPtr, IN PCWSTR BaseKeyStr ); #define EnumFirstRegKeyInTree95W(e,base) SETTRACKCOMMENT(BOOL,"EnumFirstRegKeyInTree95W",__FILE__,__LINE__)\ RealEnumFirstRegKeyInTree95W(e,base)\ CLRTRACKCOMMENT BOOL RealEnumNextRegKeyInTree95A ( IN OUT PREGTREE_ENUMA EnumPtr ); #define EnumNextRegKeyInTree95A(e) SETTRACKCOMMENT(BOOL,"EnumNextRegKeyInTree95A",__FILE__,__LINE__)\ RealEnumNextRegKeyInTree95A(e)\ CLRTRACKCOMMENT BOOL RealEnumNextRegKeyInTree95W ( IN OUT PREGTREE_ENUMW EnumPtr ); #define EnumNextRegKeyInTree95W(e) SETTRACKCOMMENT(BOOL,"EnumNextRegKeyInTree95W",__FILE__,__LINE__)\ RealEnumNextRegKeyInTree95W(e)\ CLRTRACKCOMMENT VOID AbortRegKeyTreeEnum95A ( IN OUT PREGTREE_ENUMA EnumPtr ); VOID AbortRegKeyTreeEnum95W ( IN OUT PREGTREE_ENUMW EnumPtr ); BOOL EnumFirstRegValue95A ( OUT PREGVALUE_ENUMA EnumPtr, IN HKEY hKey ); BOOL EnumFirstRegValue95W ( OUT PREGVALUE_ENUMW EnumPtr, IN HKEY hKey ); BOOL EnumNextRegValue95A ( IN OUT PREGVALUE_ENUMA EnumPtr ); BOOL EnumNextRegValue95W ( IN OUT PREGVALUE_ENUMW EnumPtr ); // // Versions that allow caller to specify allocator, and macro that uses // pMemAllocWrapper95 // ALLOCATOR_PROTOTYPE pMemAllocWrapper95; DEALLOCATOR_PROTOTYPE pMemFreeWrapper95; PBYTE GetRegValueDataEx95A ( IN HKEY hKey, IN PCSTR Value, IN ALLOCATOR Allocator, IN DEALLOCATOR Deallocator ); #define GetRegValueData95A(key,valuename) SETTRACKCOMMENT(PBYTE, "GetRegValueData95A",__FILE__, __LINE__)\ GetRegValueDataEx95A((key),(valuename),pMemAllocWrapper95,pMemFreeWrapper95)\ CLRTRACKCOMMENT PBYTE GetRegValueDataEx95W ( IN HKEY hKey, IN PCWSTR Value, IN ALLOCATOR Allocator, IN DEALLOCATOR Deallocator ); #define GetRegValueData95W(key,valuename) SETTRACKCOMMENT(PBYTE, "GetRegValueData95W",__FILE__, __LINE__)\ GetRegValueDataEx95W((key),(valuename),pMemAllocWrapper95,pMemFreeWrapper95)\ CLRTRACKCOMMENT PBYTE GetRegValueDataOfTypeEx95A ( IN HKEY hKey, IN PCSTR Value, IN DWORD MustBeType, IN ALLOCATOR Allocator, IN DEALLOCATOR Deallocator ); #define GetRegValueDataOfType95A(key,valuename,type) SETTRACKCOMMENT(PBYTE, "GetRegValueDataOfType95A",__FILE__,__LINE__)\ GetRegValueDataOfTypeEx95A((key),(valuename),(type),pMemAllocWrapper95,pMemFreeWrapper95)\ CLRTRACKCOMMENT PBYTE GetRegValueDataOfTypeEx95W ( IN HKEY hKey, IN PCWSTR Value, IN DWORD MustBeType, IN ALLOCATOR Allocator, IN DEALLOCATOR Deallocator ); #define GetRegValueDataOfType95W(key,valuename,type) SETTRACKCOMMENT(PBYTE, "GetRegValueDataOfType95W",__FILE__,__LINE__)\ GetRegValueDataOfTypeEx95W((key),(valuename),(type),pMemAllocWrapper95,pMemFreeWrapper95)\ CLRTRACKCOMMENT PBYTE GetRegKeyDataEx95A ( IN HKEY hKey, IN PCSTR SubKey, IN ALLOCATOR Allocator, IN DEALLOCATOR Deallocator ); #define GetRegKeyData95A(key,subkey) SETTRACKCOMMENT(PBYTE, "GetRegKeyData95A",__FILE__,__LINE__)\ GetRegKeyDataEx95A((key),(subkey),pMemAllocWrapper95,pMemFreeWrapper95)\ CLRTRACKCOMMENT PBYTE GetRegKeyDataEx95W ( IN HKEY hKey, IN PCWSTR SubKey, IN ALLOCATOR Allocator, IN DEALLOCATOR Deallocator ); #define GetRegKeyData95W(key,subkey) SETTRACKCOMMENT(PBYTE, "GetRegKeyData95W",__FILE__,__LINE__)\ GetRegKeyDataEx95W((key),(subkey),pMemAllocWrapper95,pMemFreeWrapper95)\ CLRTRACKCOMMENT PBYTE GetRegDataEx95A ( IN PCSTR KeyString, IN PCSTR ValueName, IN ALLOCATOR Allocator, IN DEALLOCATOR Deallocator ); #define GetRegData95A(keystr,value) SETTRACKCOMMENT(PBYTE, "GetRegData95A",__FILE__,__LINE__)\ GetRegDataEx95A((keystr),(value),pMemAllocWrapper95,pMemFreeWrapper95)\ CLRTRACKCOMMENT PBYTE GetRegDataEx95W ( IN PCWSTR KeyString, IN PCWSTR ValueName, IN ALLOCATOR Allocator, IN DEALLOCATOR Deallocator ); #define GetRegData95W(keystr,value) SETTRACKCOMMENT(PBYTE, "GetRegData95W",__FILE__,__LINE__)\ GetRegDataEx95W((keystr),(value),pMemAllocWrapper95,pMemFreeWrapper95)\ CLRTRACKCOMMENT // // Win95Reg key open // HKEY RealOpenRegKeyStr95A ( IN PCSTR RegKey DEBUG_TRACKING_PARAMS ); HKEY RealOpenRegKeyStr95W ( IN PCWSTR RegKey DEBUG_TRACKING_PARAMS ); HKEY RealOpenRegKey95A ( IN HKEY ParentKey, IN PCSTR KeyToOpen DEBUG_TRACKING_PARAMS ); HKEY RealOpenRegKey95W ( IN HKEY ParentKey, IN PCWSTR KeyToOpen DEBUG_TRACKING_PARAMS ); LONG RealCloseRegKey95 ( IN HKEY Key ); #ifdef DEBUG #define OpenRegKeyStr95A(a) RealOpenRegKeyStr95A(a,__FILE__,__LINE__) #define OpenRegKeyStr95W(a) RealOpenRegKeyStr95W(a,__FILE__,__LINE__) #define OpenRegKey95A(a,b) RealOpenRegKey95A(a,b,__FILE__,__LINE__) #define OpenRegKey95W(a,b) RealOpenRegKey95W(a,b,__FILE__,__LINE__) #else #define OpenRegKeyStr95A RealOpenRegKeyStr95A #define OpenRegKeyStr95W RealOpenRegKeyStr95W #define OpenRegKey95A RealOpenRegKey95A #define OpenRegKey95W RealOpenRegKey95W #endif // // Macros // #define GetRegValueString95A(key,valuename) (PCSTR) GetRegValueDataOfType95A((key),(valuename),REG_SZ) #define GetRegValueBinary95A(key,valuename) (PBYTE) GetRegValueDataOfType95A((key),(valuename),REG_BINARY) #define GetRegValueMultiSz95A(key,valuename) (PCSTR) GetRegValueDataOfType95A((key),(valuename),REG_MULTISZ) #define GetRegValueDword95A(key,valuename) (PDWORD) GetRegValueDataOfType95A((key),(valuename),REG_DWORD) #define GetRegValueString95W(key,valuename) (PCWSTR) GetRegValueDataOfType95W((key),(valuename),REG_SZ) #define GetRegValueBinary95W(key,valuename) (PBYTE) GetRegValueDataOfType95W((key),(valuename),REG_BINARY) #define GetRegValueMultiSz95W(key,valuename) (PCWSTR) GetRegValueDataOfType95W((key),(valuename),REG_MULTISZ) #define GetRegValueDword95W(key,valuename) (PDWORD) GetRegValueDataOfType95W((key),(valuename),REG_DWORD) #define GetRegValueStringEx95A(key,valuename,alloc,free) GetRegValueDataOfTypeEx95A((key),(valuename),REG_SZ,alloc,free) #define GetRegValueBinaryEx95A(key,valuename,alloc,free) GetRegValueDataOfTypeEx95A((key),(valuename),REG_BINARY,alloc,free) #define GetRegValueMultiSzEx95A(key,valuename,alloc,free) GetRegValueDataOfTypeEx95A((key),(valuename),REG_MULTISZ,alloc,free) #define GetRegValueDwordEx95A(key,valuename,alloc,free) GetRegValueDataOfTypeEx95A((key),(valuename),REG_DWORD,alloc,free) #define GetRegValueStringEx95W(key,valuename,alloc,free) GetRegValueDataOfTypeEx95W((key),(valuename),REG_SZ,alloc,free) #define GetRegValueBinaryEx95W(key,valuename,alloc,free) GetRegValueDataOfTypeEx95W((key),(valuename),REG_BINARY,alloc,free) #define GetRegValueMultiSzEx95W(key,valuename,alloc,free) GetRegValueDataOfTypeEx95W((key),(valuename),REG_MULTISZ,alloc,free) #define GetRegValueDwordEx95W(key,valuename,alloc,free) GetRegValueDataOfTypeEx95W((key),(valuename),REG_DWORD,alloc,free) #ifdef UNICODE #define EnumFirstRegKey95 EnumFirstRegKey95W #define EnumFirstRegKeyStr95 EnumFirstRegKeyStr95W #define EnumNextRegKey95 EnumNextRegKey95W #define AbortRegKeyEnum95 AbortRegKeyEnum95W #define EnumFirstRegKeyInTree95 EnumFirstRegKeyInTree95W #define EnumNextRegKeyInTree95 EnumNextRegKeyInTree95W #define AbortRegKeyTreeEnum95 AbortRegKeyTreeEnum95W #define EnumFirstRegValue95 EnumFirstRegValue95W #define EnumNextRegValue95 EnumNextRegValue95W #define GetRegValueData95 GetRegValueData95W #define GetRegValueDataOfType95 GetRegValueDataOfType95W #define GetRegKeyData95 GetRegKeyData95W #define GetRegValueDataEx95 GetRegValueDataEx95W #define GetRegValueDataOfTypeEx95 GetRegValueDataOfTypeEx95W #define GetRegKeyDataEx95 GetRegKeyDataEx95W #define GetRegValueString95 GetRegValueString95W #define GetRegValueBinary95 GetRegValueBinary95W #define GetRegValueMultiSz95 GetRegValueMultiSz95W #define GetRegValueDword95 GetRegValueDword95W #define GetRegValueStringEx95 GetRegValueStringEx95W #define GetRegValueBinaryEx95 GetRegValueBinaryEx95W #define GetRegValueMultiSzEx95 GetRegValueMultiSzEx95W #define GetRegValueDwordEx95 GetRegValueDwordEx95W #define GetRegDataEx95 GetRegDataEx95W #define GetRegData95 GetRegData95W #define OpenRegKey95 OpenRegKey95W #define OpenRegKeyStr95 OpenRegKeyStr95W #else #define EnumFirstRegKey95 EnumFirstRegKey95A #define EnumFirstRegKeyStr95 EnumFirstRegKeyStr95A #define EnumNextRegKey95 EnumNextRegKey95A #define AbortRegKeyEnum95 AbortRegKeyEnum95A #define EnumFirstRegKeyInTree95 EnumFirstRegKeyInTree95A #define EnumNextRegKeyInTree95 EnumNextRegKeyInTree95A #define AbortRegKeyTreeEnum95 AbortRegKeyTreeEnum95A #define EnumFirstRegValue95 EnumFirstRegValue95A #define EnumNextRegValue95 EnumNextRegValue95A #define GetRegValueData95 GetRegValueData95A #define GetRegValueDataOfType95 GetRegValueDataOfType95A #define GetRegKeyData95 GetRegKeyData95A #define GetRegValueDataEx95 GetRegValueDataEx95A #define GetRegValueDataOfTypeEx95 GetRegValueDataOfTypeEx95A #define GetRegKeyDataEx95 GetRegKeyDataEx95A #define GetRegValueString95 GetRegValueString95A #define GetRegValueBinary95 GetRegValueBinary95A #define GetRegValueMultiSz95 GetRegValueMultiSz95A #define GetRegValueDword95 GetRegValueDword95A #define GetRegValueStringEx95 GetRegValueStringEx95A #define GetRegValueBinaryEx95 GetRegValueBinaryEx95A #define GetRegValueMultiSzEx95 GetRegValueMultiSzEx95A #define GetRegValueDwordEx95 GetRegValueDwordEx95A #define GetRegDataEx95 GetRegDataEx95A #define GetRegData95 GetRegData95A #define OpenRegKey95 OpenRegKey95A #define OpenRegKeyStr95 OpenRegKeyStr95A #endif