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