HKEY OpenRegKeyWorkerA ( IN HKEY ParentKey, IN PCSTR KeyToOpen OPTIONAL DEBUG_TRACKING_PARAMS ); HKEY OpenRegKeyWorkerW ( IN HKEY ParentKey, IN PCWSTR KeyToOpen DEBUG_TRACKING_PARAMS ); LONG CloseRegKeyWorker ( IN HKEY Key ); #ifdef DEBUG VOID RegTrackTerminate ( VOID ); VOID AddKeyReferenceA ( HKEY Key, PCSTR SubKey, PCSTR File, DWORD Line ); VOID AddKeyReferenceW ( HKEY Key, PCWSTR SubKey, PCSTR File, DWORD Line ); #define TRACK_KEYA(handle,keystr) AddKeyReferenceA(handle,keystr,__FILE__,__LINE__) #define TRACK_KEYW(handle,keystr) AddKeyReferenceW(handle,keystr,__FILE__,__LINE__) #else #define TRACK_KEYA(handle,keystr) #define TRACK_KEYW(handle,keystr) #endif // // Cache apis // BOOL RegEnumInitialize ( VOID ); VOID RegEnumTerminate ( VOID ); VOID RegRecordParentInCacheA ( IN PCSTR KeyString, IN PCSTR StringEnd ); HKEY RegGetKeyFromCacheA ( IN PCSTR KeyString, IN PCSTR End, OPTIONAL IN REGSAM Sam, IN BOOL IncRefCount ); VOID RegAddKeyToCacheA ( IN PCSTR KeyString, IN HKEY Key, IN REGSAM Sam ); VOID RegRecordParentInCacheW ( IN PCWSTR KeyString, IN PCWSTR StringEnd ); HKEY RegGetKeyFromCacheW ( IN PCWSTR KeyString, IN PCWSTR End, OPTIONAL IN REGSAM Sam, IN BOOL IncRefCount ); VOID RegAddKeyToCacheW ( IN PCWSTR KeyString, IN HKEY Key, IN REGSAM Sam ); VOID RegRemoveItemFromCacheA ( IN PCSTR RegKey ); VOID RegRemoveItemFromCacheW ( IN PCWSTR RegKey ); BOOL RegDecrementRefCount ( IN HKEY Key ); VOID RegIncrementRefCount ( IN HKEY Key ); extern REGSAM g_OpenSam;