Leaked source code of windows server 2003
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.

114 lines
2.5 KiB

  1. /*++
  2. Copyright (c) 1992 Microsoft Corporation
  3. Module Name:
  4. client.h
  5. Abstract:
  6. This module is the header file for the client side of the Win32 DLL
  7. Author:
  8. Ramon J. San Andres (ramonsa) 13-May-1992
  9. --*/
  10. #if DBG
  11. extern BOOLEAN BreakPointOnEntry;
  12. #endif
  13. //
  14. // Macros to manage local versus remote handles (HKEYs), as
  15. // well as class registration keys from HKEY_CLASSES_ROOT
  16. //
  17. #define REMOTE_HANDLE_TAG ( 0x00000001 )
  18. #define REG_CLASSES_MASK ( 0x00000003 )
  19. #define REG_CLASSES_SPECIAL_TAG ( 0x00000002 )
  20. //
  21. // BOOL
  22. // IsLocalHandle(
  23. // IN HKEY Handle
  24. // );
  25. //
  26. #define IsLocalHandle( Handle ) \
  27. ( ! ((( DWORD_PTR )( Handle )) & REMOTE_HANDLE_TAG ))
  28. //
  29. // BOOL
  30. // IsSpeciaClassesHandle(
  31. // IN HKEY Handle
  32. // );
  33. //
  34. #define IsSpecialClassesHandle( Handle ) \
  35. ( ((( DWORD_PTR )( Handle )) & REG_CLASSES_SPECIAL_TAG ))
  36. //
  37. // VOID
  38. // TagRemoteHandle(
  39. // IN PHKEY Handle
  40. // );
  41. //
  42. #define TagRemoteHandle( Handle ) \
  43. ASSERT( IsLocalHandle( *Handle )); \
  44. ( *Handle = (( HKEY )((( DWORD_PTR )( *Handle )) | REMOTE_HANDLE_TAG )))
  45. //
  46. // HKEY
  47. // DereferenceRemoteHandle(
  48. // IN HKEY Handle
  49. // );
  50. //
  51. #define DereferenceRemoteHandle( Handle ) \
  52. (( HKEY )((( DWORD_PTR )( Handle )) & ~REMOTE_HANDLE_TAG ))
  53. //
  54. // HKEY
  55. // TagSpecialClassesHandle (
  56. // IN HKEY Handle
  57. // );
  58. //
  59. #define TagSpecialClassesHandle( Handle ) \
  60. ASSERT( IsLocalHandle( *Handle )); \
  61. ( *Handle = (( HKEY )((( ULONG_PTR )( *Handle )) | REG_CLASSES_SPECIAL_TAG )))
  62. //
  63. // disable predefined cache not enabled on remote !
  64. //
  65. #define CLOSE_LOCAL_HANDLE(TempHandle) \
  66. if( TempHandle != NULL ) { \
  67. /* disable cache is not enabled on remote registry */ \
  68. ASSERT( IsLocalHandle(TempHandle) ); \
  69. LocalBaseRegCloseKey(&TempHandle); \
  70. }
  71. #if defined(LEAK_TRACK)
  72. typedef struct _RegLeakTraceInfo {
  73. DWORD dwMaxStackDepth;
  74. LPTSTR szSymPath;
  75. BOOL bEnableLeakTrack;
  76. } RegLeakTraceInfo;
  77. extern RegLeakTraceInfo g_RegLeakTraceInfo;
  78. #endif // LEAK_TRACK