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