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