wmistr.h 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. /**
  2. * This file is part of the mingw-w64 runtime package.
  3. * No warranty is given; refer to the file DISCLAIMER within this package.
  4. */
  5. #ifndef _WMISTR_
  6. #define _WMISTR_
  7. typedef struct _WNODE_HEADER {
  8. ULONG BufferSize;
  9. ULONG ProviderId;
  10. __C89_NAMELESS union {
  11. ULONG64 HistoricalContext;
  12. __C89_NAMELESS struct {
  13. ULONG Version;
  14. ULONG Linkage;
  15. };
  16. };
  17. __C89_NAMELESS union {
  18. ULONG CountLost;
  19. HANDLE KernelHandle;
  20. LARGE_INTEGER TimeStamp;
  21. };
  22. GUID Guid;
  23. ULONG ClientContext;
  24. ULONG Flags;
  25. } WNODE_HEADER,*PWNODE_HEADER;
  26. #define WNODE_FLAG_ALL_DATA 0x00000001
  27. #define WNODE_FLAG_SINGLE_INSTANCE 0x00000002
  28. #define WNODE_FLAG_SINGLE_ITEM 0x00000004
  29. #define WNODE_FLAG_EVENT_ITEM 0x00000008
  30. #define WNODE_FLAG_FIXED_INSTANCE_SIZE 0x00000010
  31. #define WNODE_FLAG_TOO_SMALL 0x00000020
  32. #define WNODE_FLAG_INSTANCES_SAME 0x00000040
  33. #define WNODE_FLAG_STATIC_INSTANCE_NAMES 0x00000080
  34. #define WNODE_FLAG_INTERNAL 0x00000100
  35. #define WNODE_FLAG_USE_TIMESTAMP 0x00000200
  36. #define WNODE_FLAG_PERSIST_EVENT 0x00000400
  37. #define WNODE_FLAG_EVENT_REFERENCE 0x00002000
  38. #define WNODE_FLAG_ANSI_INSTANCENAMES 0x00004000
  39. #define WNODE_FLAG_METHOD_ITEM 0x00008000
  40. #define WNODE_FLAG_PDO_INSTANCE_NAMES 0x00010000
  41. #define WNODE_FLAG_TRACED_GUID 0x00020000
  42. #define WNODE_FLAG_LOG_WNODE 0x00040000
  43. #define WNODE_FLAG_USE_GUID_PTR 0x00080000
  44. #define WNODE_FLAG_USE_MOF_PTR 0x00100000
  45. #define WNODE_FLAG_NO_HEADER 0x00200000
  46. #if NTDDI_VERSION >= 0x06000000
  47. #define WNODE_FLAG_SEND_DATA_BLOCK 0x00400000
  48. #endif
  49. #define WNODE_FLAG_VERSIONED_PROPERTIES 0x00800000
  50. #define WNODE_FLAG_SEVERITY_MASK 0xff000000
  51. typedef struct {
  52. ULONG OffsetInstanceData;
  53. ULONG LengthInstanceData;
  54. } OFFSETINSTANCEDATAANDLENGTH,*POFFSETINSTANCEDATAANDLENGTH;
  55. typedef struct tagWNODE_ALL_DATA {
  56. struct _WNODE_HEADER WnodeHeader;
  57. ULONG DataBlockOffset;
  58. ULONG InstanceCount;
  59. ULONG OffsetInstanceNameOffsets;
  60. __C89_NAMELESS union {
  61. ULONG FixedInstanceSize;
  62. OFFSETINSTANCEDATAANDLENGTH OffsetInstanceDataAndLength[1];
  63. };
  64. } WNODE_ALL_DATA,*PWNODE_ALL_DATA;
  65. typedef struct tagWNODE_SINGLE_INSTANCE {
  66. struct _WNODE_HEADER WnodeHeader;
  67. ULONG OffsetInstanceName;
  68. ULONG InstanceIndex;
  69. ULONG DataBlockOffset;
  70. ULONG SizeDataBlock;
  71. UCHAR VariableData[];
  72. } WNODE_SINGLE_INSTANCE,*PWNODE_SINGLE_INSTANCE;
  73. typedef struct tagWNODE_SINGLE_ITEM {
  74. struct _WNODE_HEADER WnodeHeader;
  75. ULONG OffsetInstanceName;
  76. ULONG InstanceIndex;
  77. ULONG ItemId;
  78. ULONG DataBlockOffset;
  79. ULONG SizeDataItem;
  80. UCHAR VariableData[];
  81. } WNODE_SINGLE_ITEM,*PWNODE_SINGLE_ITEM;
  82. typedef struct tagWNODE_METHOD_ITEM {
  83. struct _WNODE_HEADER WnodeHeader;
  84. ULONG OffsetInstanceName;
  85. ULONG InstanceIndex;
  86. ULONG MethodId;
  87. ULONG DataBlockOffset;
  88. ULONG SizeDataBlock;
  89. UCHAR VariableData[];
  90. } WNODE_METHOD_ITEM,*PWNODE_METHOD_ITEM;
  91. typedef struct tagWNODE_EVENT_ITEM {
  92. struct _WNODE_HEADER WnodeHeader;
  93. } WNODE_EVENT_ITEM,*PWNODE_EVENT_ITEM;
  94. typedef struct tagWNODE_EVENT_REFERENCE {
  95. struct _WNODE_HEADER WnodeHeader;
  96. GUID TargetGuid;
  97. ULONG TargetDataBlockSize;
  98. __C89_NAMELESS union {
  99. ULONG TargetInstanceIndex;
  100. WCHAR TargetInstanceName[1];
  101. };
  102. } WNODE_EVENT_REFERENCE,*PWNODE_EVENT_REFERENCE;
  103. typedef struct tagWNODE_TOO_SMALL {
  104. struct _WNODE_HEADER WnodeHeader;
  105. ULONG SizeNeeded;
  106. } WNODE_TOO_SMALL,*PWNODE_TOO_SMALL;
  107. typedef struct {
  108. GUID Guid;
  109. ULONG Flags;
  110. ULONG InstanceCount;
  111. __C89_NAMELESS union {
  112. ULONG InstanceNameList;
  113. ULONG BaseNameOffset;
  114. ULONG_PTR Pdo;
  115. ULONG_PTR InstanceInfo;
  116. };
  117. } WMIREGGUIDW,*PWMIREGGUIDW;
  118. typedef WMIREGGUIDW WMIREGGUID;
  119. typedef PWMIREGGUIDW PWMIREGGUID;
  120. #define WMIREG_FLAG_EXPENSIVE 0x00000001
  121. #define WMIREG_FLAG_INSTANCE_LIST 0x00000004
  122. #define WMIREG_FLAG_INSTANCE_BASENAME 0x00000008
  123. #define WMIREG_FLAG_INSTANCE_PDO 0x00000020
  124. #define WMIREG_FLAG_REMOVE_GUID 0x00010000
  125. #define WMIREG_FLAG_RESERVED1 0x00020000
  126. #define WMIREG_FLAG_RESERVED2 0x00040000
  127. #define WMIREG_FLAG_TRACED_GUID 0x00080000
  128. #define WMIREG_FLAG_TRACE_CONTROL_GUID 0x00001000
  129. #define WMIREG_FLAG_EVENT_ONLY_GUID 0x00000040
  130. typedef struct {
  131. ULONG BufferSize;
  132. ULONG NextWmiRegInfo;
  133. ULONG RegistryPath;
  134. ULONG MofResourceName;
  135. ULONG GuidCount;
  136. WMIREGGUIDW WmiRegGuid[];
  137. } WMIREGINFOW,*PWMIREGINFOW;
  138. typedef WMIREGINFOW WMIREGINFO;
  139. typedef PWMIREGINFOW PWMIREGINFO;
  140. typedef enum {
  141. WMI_GET_ALL_DATA = 0,WMI_GET_SINGLE_INSTANCE = 1,WMI_SET_SINGLE_INSTANCE = 2,WMI_SET_SINGLE_ITEM = 3,WMI_ENABLE_EVENTS = 4,WMI_DISABLE_EVENTS = 5,
  142. WMI_ENABLE_COLLECTION = 6,WMI_DISABLE_COLLECTION = 7,WMI_REGINFO = 8,WMI_EXECUTE_METHOD = 9,
  143. WMI_CAPTURE_STATE = 10
  144. } WMIDPREQUESTCODE;
  145. #if defined(_WINNT_) || defined(WINNT)
  146. #define WMI_GUIDTYPE_TRACECONTROL 0
  147. #define WMI_GUIDTYPE_TRACE 1
  148. #define WMI_GUIDTYPE_DATA 2
  149. #define WMI_GUIDTYPE_EVENT 3
  150. #define WMIGUID_QUERY 0x0001
  151. #define WMIGUID_SET 0x0002
  152. #define WMIGUID_NOTIFICATION 0x0004
  153. #define WMIGUID_READ_DESCRIPTION 0x0008
  154. #define WMIGUID_EXECUTE 0x0010
  155. #define TRACELOG_CREATE_REALTIME 0x0020
  156. #define TRACELOG_CREATE_ONDISK 0x0040
  157. #define TRACELOG_GUID_ENABLE 0x0080
  158. #define TRACELOG_ACCESS_KERNEL_LOGGER 0x0100
  159. #define TRACELOG_CREATE_INPROC 0x0200
  160. #define TRACELOG_LOG_EVENT 0x0200
  161. #define TRACELOG_ACCESS_REALTIME 0x0400
  162. #define TRACELOG_REGISTER_GUIDS 0x0800
  163. #define TRACELOG_JOIN_GROUP 0x1000
  164. #define WMIGUID_ALL_ACCESS_WIN2K (STANDARD_RIGHTS_READ | WMIGUID_QUERY | WMIGUID_SET | WMIGUID_NOTIFICATION | WMIGUID_READ_DESCRIPTION | WMIGUID_EXECUTE | TRACELOG_CREATE_REALTIME | TRACELOG_CREATE_ONDISK | TRACELOG_GUID_ENABLE | TRACELOG_ACCESS_KERNEL_LOGGER | TRACELOG_CREATE_INPROC | TRACELOG_ACCESS_REALTIME)
  165. #define WMIGUID_ALL_ACCESS_WINXP (WMIGUID_ALL_ACCESS_WIN2K | SYNCHRONIZE | TRACELOG_REGISTER_GUIDS)
  166. #define WMIGUID_ALL_ACCESS_RS1 (WMIGUID_ALL_ACCESS_WINXP | TRACELOG_JOIN_GROUP)
  167. #if (NTDDI_VERSION >= 0x0A000002)
  168. #define WMIGUID_ALL_ACCESS WMIGUID_ALL_ACCESS_RS1
  169. #elif (NTDDI_VERSION >= 0x05010000)
  170. #define WMIGUID_ALL_ACCESS WMIGUID_ALL_ACCESS_WINXP
  171. #else
  172. #define WMIGUID_ALL_ACCESS WMIGUID_ALL_ACCESS_WIN2K
  173. #endif
  174. #define WMI_GLOBAL_LOGGER_ID 0x0001
  175. #endif
  176. #endif