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 8typedef 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_SEVERITY_MASK 0xff000000 52 53typedef struct { 54 ULONG OffsetInstanceData; 55 ULONG LengthInstanceData; 56} OFFSETINSTANCEDATAANDLENGTH,*POFFSETINSTANCEDATAANDLENGTH; 57 58typedef struct tagWNODE_ALL_DATA { 59 struct _WNODE_HEADER WnodeHeader; 60 ULONG DataBlockOffset; 61 ULONG InstanceCount; 62 ULONG OffsetInstanceNameOffsets; 63 __C89_NAMELESS union { 64 ULONG FixedInstanceSize; 65 OFFSETINSTANCEDATAANDLENGTH OffsetInstanceDataAndLength[1]; 66 }; 67} WNODE_ALL_DATA,*PWNODE_ALL_DATA; 68 69typedef struct tagWNODE_SINGLE_INSTANCE { 70 struct _WNODE_HEADER WnodeHeader; 71 ULONG OffsetInstanceName; 72 ULONG InstanceIndex; 73 ULONG DataBlockOffset; 74 ULONG SizeDataBlock; 75 UCHAR VariableData[]; 76} WNODE_SINGLE_INSTANCE,*PWNODE_SINGLE_INSTANCE; 77 78typedef struct tagWNODE_SINGLE_ITEM { 79 struct _WNODE_HEADER WnodeHeader; 80 ULONG OffsetInstanceName; 81 ULONG InstanceIndex; 82 ULONG ItemId; 83 ULONG DataBlockOffset; 84 ULONG SizeDataItem; 85 UCHAR VariableData[]; 86} WNODE_SINGLE_ITEM,*PWNODE_SINGLE_ITEM; 87 88typedef struct tagWNODE_METHOD_ITEM { 89 struct _WNODE_HEADER WnodeHeader; 90 ULONG OffsetInstanceName; 91 ULONG InstanceIndex; 92 ULONG MethodId; 93 ULONG DataBlockOffset; 94 ULONG SizeDataBlock; 95 UCHAR VariableData[]; 96} WNODE_METHOD_ITEM,*PWNODE_METHOD_ITEM; 97 98typedef struct tagWNODE_EVENT_ITEM { 99 struct _WNODE_HEADER WnodeHeader; 100} WNODE_EVENT_ITEM,*PWNODE_EVENT_ITEM; 101 102typedef struct tagWNODE_EVENT_REFERENCE { 103 struct _WNODE_HEADER WnodeHeader; 104 GUID TargetGuid; 105 ULONG TargetDataBlockSize; 106 __C89_NAMELESS union { 107 ULONG TargetInstanceIndex; 108 WCHAR TargetInstanceName[1]; 109 }; 110} WNODE_EVENT_REFERENCE,*PWNODE_EVENT_REFERENCE; 111 112typedef struct tagWNODE_TOO_SMALL { 113 struct _WNODE_HEADER WnodeHeader; 114 ULONG SizeNeeded; 115} WNODE_TOO_SMALL,*PWNODE_TOO_SMALL; 116 117typedef struct { 118 GUID Guid; 119 ULONG Flags; 120 ULONG InstanceCount; 121 __C89_NAMELESS union { 122 ULONG InstanceNameList; 123 ULONG BaseNameOffset; 124 ULONG_PTR Pdo; 125 ULONG_PTR InstanceInfo; 126 }; 127} WMIREGGUIDW,*PWMIREGGUIDW; 128 129typedef WMIREGGUIDW WMIREGGUID; 130typedef PWMIREGGUIDW PWMIREGGUID; 131 132#define WMIREG_FLAG_EXPENSIVE 0x00000001 133#define WMIREG_FLAG_INSTANCE_LIST 0x00000004 134#define WMIREG_FLAG_INSTANCE_BASENAME 0x00000008 135#define WMIREG_FLAG_INSTANCE_PDO 0x00000020 136#define WMIREG_FLAG_REMOVE_GUID 0x00010000 137#define WMIREG_FLAG_RESERVED1 0x00020000 138#define WMIREG_FLAG_RESERVED2 0x00040000 139#define WMIREG_FLAG_TRACED_GUID 0x00080000 140#define WMIREG_FLAG_TRACE_CONTROL_GUID 0x00001000 141#define WMIREG_FLAG_EVENT_ONLY_GUID 0x00000040 142 143typedef struct { 144 ULONG BufferSize; 145 ULONG NextWmiRegInfo; 146 ULONG RegistryPath; 147 ULONG MofResourceName; 148 ULONG GuidCount; 149 WMIREGGUIDW WmiRegGuid[]; 150} WMIREGINFOW,*PWMIREGINFOW; 151 152typedef WMIREGINFOW WMIREGINFO; 153typedef PWMIREGINFOW PWMIREGINFO; 154 155typedef enum { 156 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, 157 WMI_ENABLE_COLLECTION = 6,WMI_DISABLE_COLLECTION = 7,WMI_REGINFO = 8,WMI_EXECUTE_METHOD = 9, 158 WMI_CAPTURE_STATE = 10 159} WMIDPREQUESTCODE; 160 161#if defined(_WINNT_) || defined(WINNT) 162 163#define WMI_GUIDTYPE_TRACECONTROL 0 164#define WMI_GUIDTYPE_TRACE 1 165#define WMI_GUIDTYPE_DATA 2 166#define WMI_GUIDTYPE_EVENT 3 167 168#define WMIGUID_QUERY 0x0001 169#define WMIGUID_SET 0x0002 170#define WMIGUID_NOTIFICATION 0x0004 171#define WMIGUID_READ_DESCRIPTION 0x0008 172#define WMIGUID_EXECUTE 0x0010 173#define TRACELOG_CREATE_REALTIME 0x0020 174#define TRACELOG_CREATE_ONDISK 0x0040 175#define TRACELOG_GUID_ENABLE 0x0080 176#define TRACELOG_ACCESS_KERNEL_LOGGER 0x0100 177#define TRACELOG_CREATE_INPROC 0x0200 178#define TRACELOG_LOG_EVENT 0x0200 179#define TRACELOG_ACCESS_REALTIME 0x0400 180#define TRACELOG_REGISTER_GUIDS 0x0800 181 182#define WMIGUID_ALL_ACCESS (STANDARD_RIGHTS_READ | SYNCHRONIZE | 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 | TRACELOG_REGISTER_GUIDS) 183 184#define WMI_GLOBAL_LOGGER_ID 0x0001 185#endif 186#endif 187