/*++ Copyright (c) 1992 Microsoft Corporation Module Name: client.h Abstract: This module is the header file for the client side of the Win32 DLL Author: Ramon J. San Andres (ramonsa) 13-May-1992 --*/ #if DBG extern BOOLEAN BreakPointOnEntry; #endif // // Macros to manage local versus remote handles (HKEYs), as // well as class registration keys from HKEY_CLASSES_ROOT // #define REMOTE_HANDLE_TAG ( 0x00000001 ) #define REG_CLASSES_MASK ( 0x00000003 ) #define REG_CLASSES_SPECIAL_TAG ( 0x00000002 ) // // BOOL // IsLocalHandle( // IN HKEY Handle // ); // #define IsLocalHandle( Handle ) \ ( ! ((( DWORD_PTR )( Handle )) & REMOTE_HANDLE_TAG )) // // BOOL // IsSpeciaClassesHandle( // IN HKEY Handle // ); // #define IsSpecialClassesHandle( Handle ) \ ( ((( DWORD_PTR )( Handle )) & REG_CLASSES_SPECIAL_TAG )) // // VOID // TagRemoteHandle( // IN PHKEY Handle // ); // #define TagRemoteHandle( Handle ) \ ASSERT( IsLocalHandle( *Handle )); \ ( *Handle = (( HKEY )((( DWORD_PTR )( *Handle )) | REMOTE_HANDLE_TAG ))) // // HKEY // DereferenceRemoteHandle( // IN HKEY Handle // ); // #define DereferenceRemoteHandle( Handle ) \ (( HKEY )((( DWORD_PTR )( Handle )) & ~REMOTE_HANDLE_TAG )) // // HKEY // TagSpecialClassesHandle ( // IN HKEY Handle // ); // #define TagSpecialClassesHandle( Handle ) \ ASSERT( IsLocalHandle( *Handle )); \ ( *Handle = (( HKEY )((( ULONG_PTR )( *Handle )) | REG_CLASSES_SPECIAL_TAG ))) // // disable predefined cache not enabled on remote ! // #define CLOSE_LOCAL_HANDLE(TempHandle) \ if( TempHandle != NULL ) { \ /* disable cache is not enabled on remote registry */ \ ASSERT( IsLocalHandle(TempHandle) ); \ LocalBaseRegCloseKey(&TempHandle); \ } #if defined(LEAK_TRACK) typedef struct _RegLeakTraceInfo { DWORD dwMaxStackDepth; LPTSTR szSymPath; BOOL bEnableLeakTrack; } RegLeakTraceInfo; extern RegLeakTraceInfo g_RegLeakTraceInfo; #endif // LEAK_TRACK