REGSYS.H
上传用户:kevenhsn
上传日期:2007-01-03
资源大小:251k
文件大小:3k
源码类别:

系统编程

开发平台:

Visual C++

  1. //======================================================================
  2. // 
  3. //  Regmon.h
  4. //
  5. //  Copyright (C) 1996, 1997 Mark Russinovich and Bryce Cogswell
  6. //
  7. //  Typedefs and defines.
  8. // 
  9. //======================================================================
  10. //
  11. // Basic types
  12. //
  13. typedef unsigned int    UINT;
  14. typedef char            CHAR;
  15. typedef char *          PCHAR;
  16. typedef PVOID           POBJECT;
  17. //
  18. // The maximum length of Registry values that will be copied
  19. //
  20. #define MAXVALLEN      256
  21. //
  22. // Maximum seperate filter components 
  23. //
  24. #define MAXFILTERS 64
  25. //
  26. // The maximum registry path length that will be copied
  27. //
  28. #define MAXPATHLEN     1024
  29. //
  30. // Maximum length of data that will be copied to the "other" field in the display
  31. //
  32. #define MAXDATALEN     32
  33. //
  34. // Length of process name buffer. Process names are at most 16 characters so
  35. // we take into account a trailing NULL.
  36. //
  37. #define MAXPROCNAMELEN  20
  38. //
  39. // Maximum length of root keys that we will produce abbreviations for
  40. //
  41. #define MAXROOTLEN      128
  42. //
  43. // Maximum amount of memory that will be grabbed
  44. //
  45. #define MAXMEM          1000000
  46. //
  47. // Invalid handle
  48. //
  49. #define INVALID_HANDLE_VALUE  ((HANDLE) -1)
  50. //
  51. // Convenient mutex macros
  52. //
  53. #define MUTEX_INIT(v)      KeInitializeMutex( &v, 0 )
  54. #define MUTEX_WAIT(v)      KeWaitForMutexObject( &v, Executive, KernelMode, FALSE, NULL )
  55. #define MUTEX_RELEASE(v)   KeReleaseMutex( &v, FALSE )
  56. //
  57. // Definition for system call service table
  58. //
  59. typedef struct _SRVTABLE {
  60. PVOID           *ServiceTable;
  61. ULONG           LowCall;        
  62. ULONG           HiCall;
  63. PVOID *ArgTable;
  64. } SRVTABLE, *PSRVTABLE;
  65. //
  66. // Structure for our name hash table
  67. //
  68. typedef struct _nameentry {
  69.    POBJECT              Object;
  70.    PCHAR                FullPathName;
  71.    struct _nameentry    *Next;
  72. } HASH_ENTRY, *PHASH_ENTRY;
  73. //
  74. // Structure for keeping linked lists of output buffers
  75. //
  76. typedef struct _store {
  77.     ULONG               Len;
  78.     struct _store *     Next;
  79.     char                Data[ MAX_STORE ];
  80. } STORE_BUF, *PSTORE_BUF;
  81. //
  82. // Rootkey name translation structure
  83. //
  84. typedef struct _rootkey {
  85.     CHAR                RootName[256];
  86.     CHAR                RootShort[32];
  87.     ULONG               RootNameLen;
  88. } ROOTKEY, *PROOTKEY;
  89. //
  90. // Number of hash buckets
  91. //
  92. #define NUMHASH         0x100
  93. #define HASHOBJECT(_regobject)          (((ULONG)_regobject)>>2)%NUMHASH
  94. //
  95. // Definition for ZwDeleteValueKey call
  96. //
  97. NTSYSAPI
  98. NTSTATUS
  99. NTAPI ZwDeleteValueKey( IN HANDLE, IN PUNICODE_STRING );
  100. //
  101. // Definition for ObQueryNameString call
  102. //
  103. NTSYSAPI
  104. NTSTATUS
  105. NTAPI ObQueryNameString( POBJECT Object, PUNICODE_STRING Name, ULONG MaximumLength, PULONG ActualLength );
  106. //
  107. // For displaying messages to the Blue Screen
  108. //
  109. NTSYSAPI
  110. NTSTATUS
  111. NTAPI ZwDisplayString( PUNICODE_STRING Text );
  112. //
  113. // Pointer to the image of the system service table
  114. //
  115. extern PSRVTABLE KeServiceDescriptorTable;
  116. //
  117. // Extract transfer type
  118. //
  119. #define IOCTL_TRANSFER_TYPE( _iocontrol)   (_iocontrol & 0x3)