1 // Licensed under the Apache License, Version 2.0
2 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4 // All files in the project carrying such notice may not be copied, modified, or distributed
5 // except according to those terms.
6 use ctypes::c_long;
7 use shared::winerror::HRESULT;
8 use shared::wtypes::{BSTR, DATE, VARIANT_BOOL};
9 use um::oaidl::{DISPID, IDispatch, IDispatchVtbl, VARIANT};
10 use um::unknwnbase::IUnknown;
11 // extern RPC_IF_HANDLE __MIDL_itf_wbemdisp_0000_0000_v0_0_c_ifspec;
12 // extern RPC_IF_HANDLE __MIDL_itf_wbemdisp_0000_0000_v0_0_s_ifspec;
13 ENUM!{enum WbemChangeFlagEnum {
14     wbemChangeFlagCreateOrUpdate = 0,
15     wbemChangeFlagUpdateOnly = 0x1,
16     wbemChangeFlagCreateOnly = 0x2,
17     wbemChangeFlagUpdateCompatible = 0,
18     wbemChangeFlagUpdateSafeMode = 0x20,
19     wbemChangeFlagUpdateForceMode = 0x40,
20     wbemChangeFlagStrongValidation = 0x80,
21     wbemChangeFlagAdvisory = 0x10000,
22 }}
23 ENUM!{enum WbemFlagEnum {
24     wbemFlagReturnImmediately = 0x10,
25     wbemFlagReturnWhenComplete = 0,
26     wbemFlagBidirectional = 0,
27     wbemFlagForwardOnly = 0x20,
28     wbemFlagNoErrorObject = 0x40,
29     wbemFlagReturnErrorObject = 0,
30     wbemFlagSendStatus = 0x80,
31     wbemFlagDontSendStatus = 0,
32     wbemFlagEnsureLocatable = 0x100,
33     wbemFlagDirectRead = 0x200,
34     wbemFlagSendOnlySelected = 0,
35     wbemFlagUseAmendedQualifiers = 0x20000,
36     wbemFlagGetDefault = 0,
37     wbemFlagSpawnInstance = 0x1,
38     wbemFlagUseCurrentTime = 0x1,
39 }}
40 ENUM!{enum WbemQueryFlagEnum {
41     wbemQueryFlagDeep = 0,
42     wbemQueryFlagShallow = 1,
43     wbemQueryFlagPrototype = 2,
44 }}
45 ENUM!{enum WbemTextFlagEnum {
46     wbemTextFlagNoFlavors = 0x1,
47 }}
48 ENUM!{enum WbemTimeout {
49     wbemTimeoutInfinite = 0xffffffff,
50 }}
51 ENUM!{enum WbemComparisonFlagEnum {
52     wbemComparisonFlagIncludeAll = 0,
53     wbemComparisonFlagIgnoreQualifiers = 0x1,
54     wbemComparisonFlagIgnoreObjectSource = 0x2,
55     wbemComparisonFlagIgnoreDefaultValues = 0x4,
56     wbemComparisonFlagIgnoreClass = 0x8,
57     wbemComparisonFlagIgnoreCase = 0x10,
58     wbemComparisonFlagIgnoreFlavor = 0x20,
59 }}
60 ENUM!{enum WbemCimtypeEnum {
61     wbemCimtypeSint8 = 16,
62     wbemCimtypeUint8 = 17,
63     wbemCimtypeSint16 = 2,
64     wbemCimtypeUint16 = 18,
65     wbemCimtypeSint32 = 3,
66     wbemCimtypeUint32 = 19,
67     wbemCimtypeSint64 = 20,
68     wbemCimtypeUint64 = 21,
69     wbemCimtypeReal32 = 4,
70     wbemCimtypeReal64 = 5,
71     wbemCimtypeBoolean = 11,
72     wbemCimtypeString = 8,
73     wbemCimtypeDatetime = 101,
74     wbemCimtypeReference = 102,
75     wbemCimtypeChar16 = 103,
76     wbemCimtypeObject = 13,
77 }}
78 ENUM!{enum WbemErrorEnum {
79     wbemNoErr = 0,
80     wbemErrFailed = 0x80041001,
81     wbemErrNotFound = 0x80041002,
82     wbemErrAccessDenied = 0x80041003,
83     wbemErrProviderFailure = 0x80041004,
84     wbemErrTypeMismatch = 0x80041005,
85     wbemErrOutOfMemory = 0x80041006,
86     wbemErrInvalidContext = 0x80041007,
87     wbemErrInvalidParameter = 0x80041008,
88     wbemErrNotAvailable = 0x80041009,
89     wbemErrCriticalError = 0x8004100a,
90     wbemErrInvalidStream = 0x8004100b,
91     wbemErrNotSupported = 0x8004100c,
92     wbemErrInvalidSuperclass = 0x8004100d,
93     wbemErrInvalidNamespace = 0x8004100e,
94     wbemErrInvalidObject = 0x8004100f,
95     wbemErrInvalidClass = 0x80041010,
96     wbemErrProviderNotFound = 0x80041011,
97     wbemErrInvalidProviderRegistration = 0x80041012,
98     wbemErrProviderLoadFailure = 0x80041013,
99     wbemErrInitializationFailure = 0x80041014,
100     wbemErrTransportFailure = 0x80041015,
101     wbemErrInvalidOperation = 0x80041016,
102     wbemErrInvalidQuery = 0x80041017,
103     wbemErrInvalidQueryType = 0x80041018,
104     wbemErrAlreadyExists = 0x80041019,
105     wbemErrOverrideNotAllowed = 0x8004101a,
106     wbemErrPropagatedQualifier = 0x8004101b,
107     wbemErrPropagatedProperty = 0x8004101c,
108     wbemErrUnexpected = 0x8004101d,
109     wbemErrIllegalOperation = 0x8004101e,
110     wbemErrCannotBeKey = 0x8004101f,
111     wbemErrIncompleteClass = 0x80041020,
112     wbemErrInvalidSyntax = 0x80041021,
113     wbemErrNondecoratedObject = 0x80041022,
114     wbemErrReadOnly = 0x80041023,
115     wbemErrProviderNotCapable = 0x80041024,
116     wbemErrClassHasChildren = 0x80041025,
117     wbemErrClassHasInstances = 0x80041026,
118     wbemErrQueryNotImplemented = 0x80041027,
119     wbemErrIllegalNull = 0x80041028,
120     wbemErrInvalidQualifierType = 0x80041029,
121     wbemErrInvalidPropertyType = 0x8004102a,
122     wbemErrValueOutOfRange = 0x8004102b,
123     wbemErrCannotBeSingleton = 0x8004102c,
124     wbemErrInvalidCimType = 0x8004102d,
125     wbemErrInvalidMethod = 0x8004102e,
126     wbemErrInvalidMethodParameters = 0x8004102f,
127     wbemErrSystemProperty = 0x80041030,
128     wbemErrInvalidProperty = 0x80041031,
129     wbemErrCallCancelled = 0x80041032,
130     wbemErrShuttingDown = 0x80041033,
131     wbemErrPropagatedMethod = 0x80041034,
132     wbemErrUnsupportedParameter = 0x80041035,
133     wbemErrMissingParameter = 0x80041036,
134     wbemErrInvalidParameterId = 0x80041037,
135     wbemErrNonConsecutiveParameterIds = 0x80041038,
136     wbemErrParameterIdOnRetval = 0x80041039,
137     wbemErrInvalidObjectPath = 0x8004103a,
138     wbemErrOutOfDiskSpace = 0x8004103b,
139     wbemErrBufferTooSmall = 0x8004103c,
140     wbemErrUnsupportedPutExtension = 0x8004103d,
141     wbemErrUnknownObjectType = 0x8004103e,
142     wbemErrUnknownPacketType = 0x8004103f,
143     wbemErrMarshalVersionMismatch = 0x80041040,
144     wbemErrMarshalInvalidSignature = 0x80041041,
145     wbemErrInvalidQualifier = 0x80041042,
146     wbemErrInvalidDuplicateParameter = 0x80041043,
147     wbemErrTooMuchData = 0x80041044,
148     wbemErrServerTooBusy = 0x80041045,
149     wbemErrInvalidFlavor = 0x80041046,
150     wbemErrCircularReference = 0x80041047,
151     wbemErrUnsupportedClassUpdate = 0x80041048,
152     wbemErrCannotChangeKeyInheritance = 0x80041049,
153     wbemErrCannotChangeIndexInheritance = 0x80041050,
154     wbemErrTooManyProperties = 0x80041051,
155     wbemErrUpdateTypeMismatch = 0x80041052,
156     wbemErrUpdateOverrideNotAllowed = 0x80041053,
157     wbemErrUpdatePropagatedMethod = 0x80041054,
158     wbemErrMethodNotImplemented = 0x80041055,
159     wbemErrMethodDisabled = 0x80041056,
160     wbemErrRefresherBusy = 0x80041057,
161     wbemErrUnparsableQuery = 0x80041058,
162     wbemErrNotEventClass = 0x80041059,
163     wbemErrMissingGroupWithin = 0x8004105a,
164     wbemErrMissingAggregationList = 0x8004105b,
165     wbemErrPropertyNotAnObject = 0x8004105c,
166     wbemErrAggregatingByObject = 0x8004105d,
167     wbemErrUninterpretableProviderQuery = 0x8004105f,
168     wbemErrBackupRestoreWinmgmtRunning = 0x80041060,
169     wbemErrQueueOverflow = 0x80041061,
170     wbemErrPrivilegeNotHeld = 0x80041062,
171     wbemErrInvalidOperator = 0x80041063,
172     wbemErrLocalCredentials = 0x80041064,
173     wbemErrCannotBeAbstract = 0x80041065,
174     wbemErrAmendedObject = 0x80041066,
175     wbemErrClientTooSlow = 0x80041067,
176     wbemErrNullSecurityDescriptor = 0x80041068,
177     wbemErrTimeout = 0x80041069,
178     wbemErrInvalidAssociation = 0x8004106a,
179     wbemErrAmbiguousOperation = 0x8004106b,
180     wbemErrQuotaViolation = 0x8004106c,
181     wbemErrTransactionConflict = 0x8004106d,
182     wbemErrForcedRollback = 0x8004106e,
183     wbemErrUnsupportedLocale = 0x8004106f,
184     wbemErrHandleOutOfDate = 0x80041070,
185     wbemErrConnectionFailed = 0x80041071,
186     wbemErrInvalidHandleRequest = 0x80041072,
187     wbemErrPropertyNameTooWide = 0x80041073,
188     wbemErrClassNameTooWide = 0x80041074,
189     wbemErrMethodNameTooWide = 0x80041075,
190     wbemErrQualifierNameTooWide = 0x80041076,
191     wbemErrRerunCommand = 0x80041077,
192     wbemErrDatabaseVerMismatch = 0x80041078,
193     wbemErrVetoPut = 0x80041079,
194     wbemErrVetoDelete = 0x8004107a,
195     wbemErrInvalidLocale = 0x80041080,
196     wbemErrProviderSuspended = 0x80041081,
197     wbemErrSynchronizationRequired = 0x80041082,
198     wbemErrNoSchema = 0x80041083,
199     wbemErrProviderAlreadyRegistered = 0x80041084,
200     wbemErrProviderNotRegistered = 0x80041085,
201     wbemErrFatalTransportError = 0x80041086,
202     wbemErrEncryptedConnectionRequired = 0x80041087,
203     wbemErrRegistrationTooBroad = 0x80042001,
204     wbemErrRegistrationTooPrecise = 0x80042002,
205     wbemErrTimedout = 0x80043001,
206     wbemErrResetToDefault = 0x80043002,
207 }}
208 ENUM!{enum WbemAuthenticationLevelEnum {
209     wbemAuthenticationLevelDefault = 0,
210     wbemAuthenticationLevelNone = 1,
211     wbemAuthenticationLevelConnect = 2,
212     wbemAuthenticationLevelCall = 3,
213     wbemAuthenticationLevelPkt = 4,
214     wbemAuthenticationLevelPktIntegrity = 5,
215     wbemAuthenticationLevelPktPrivacy = 6,
216 }}
217 ENUM!{enum WbemImpersonationLevelEnum {
218     wbemImpersonationLevelAnonymous = 1,
219     wbemImpersonationLevelIdentify = 2,
220     wbemImpersonationLevelImpersonate = 3,
221     wbemImpersonationLevelDelegate = 4,
222 }}
223 ENUM!{enum WbemPrivilegeEnum {
224     wbemPrivilegeCreateToken = 1,
225     wbemPrivilegePrimaryToken = 2,
226     wbemPrivilegeLockMemory = 3,
227     wbemPrivilegeIncreaseQuota = 4,
228     wbemPrivilegeMachineAccount = 5,
229     wbemPrivilegeTcb = 6,
230     wbemPrivilegeSecurity = 7,
231     wbemPrivilegeTakeOwnership = 8,
232     wbemPrivilegeLoadDriver = 9,
233     wbemPrivilegeSystemProfile = 10,
234     wbemPrivilegeSystemtime = 11,
235     wbemPrivilegeProfileSingleProcess = 12,
236     wbemPrivilegeIncreaseBasePriority = 13,
237     wbemPrivilegeCreatePagefile = 14,
238     wbemPrivilegeCreatePermanent = 15,
239     wbemPrivilegeBackup = 16,
240     wbemPrivilegeRestore = 17,
241     wbemPrivilegeShutdown = 18,
242     wbemPrivilegeDebug = 19,
243     wbemPrivilegeAudit = 20,
244     wbemPrivilegeSystemEnvironment = 21,
245     wbemPrivilegeChangeNotify = 22,
246     wbemPrivilegeRemoteShutdown = 23,
247     wbemPrivilegeUndock = 24,
248     wbemPrivilegeSyncAgent = 25,
249     wbemPrivilegeEnableDelegation = 26,
250     wbemPrivilegeManageVolume = 27,
251 }}
252 ENUM!{enum WbemObjectTextFormatEnum {
253     wbemObjectTextFormatCIMDTD20 = 1,
254     wbemObjectTextFormatWMIDTD20 = 2,
255 }}
256 ENUM!{enum WbemConnectOptionsEnum {
257     wbemConnectFlagUseMaxWait = 0x80,
258 }}
259 // EXTERN_C const IID LIBID_WbemScripting;
260 // EXTERN_C const IID IID_ISWbemServices;
261 DEFINE_GUID!{IID_ISWbemServices,
262     0x76a6415c, 0xcb41, 0x11d1, 0x8b, 0x02, 0x00, 0x60, 0x08, 0x06, 0xd9, 0xb6}
263 RIDL!{#[uuid(0x76a6415c, 0xcb41, 0x11d1, 0x8b, 0x02, 0x00, 0x60, 0x08, 0x06, 0xd9, 0xb6)]
264 interface ISWbemServices(ISWbemServicesVtbl): IDispatch(IDispatchVtbl) {
265     fn Get(
266         strObjectPath: BSTR,
267         iFlags: c_long,
268         objWbemNamedValueSet: *mut IDispatch,
269         objWbemObject: *mut *mut ISWbemObject,
270     ) -> HRESULT,
271     fn GetAsync(
272         objWbemSink: *mut IDispatch,
273         strObjectPath: BSTR,
274         iFlags: c_long,
275         objWbemNamedValueSet: *mut IDispatch,
276         objWbemAsyncContext: *mut IDispatch,
277     ) -> HRESULT,
278     fn Delete(
279         strObjectPath: BSTR,
280         iFlags: c_long,
281         objWbemNamedValueSet: *mut IDispatch,
282     ) -> HRESULT,
283     fn DeleteAsync(
284         objWbemSink: *mut IDispatch,
285         strObjectPath: BSTR,
286         iFlags: c_long,
287         objWbemNamedValueSet: *mut IDispatch,
288         objWbemAsyncContext: *mut IDispatch,
289     ) -> HRESULT,
290     fn InstancesOf(
291         strClass: BSTR,
292         iFlags: c_long,
293         objWbemNamedValueSet: *mut IDispatch,
294         objWbemObjectSet: *mut *mut ISWbemObjectSet,
295     ) -> HRESULT,
296     fn InstancesOfAsync(
297         objWbemSink: *mut IDispatch,
298         strClass: BSTR,
299         iFlags: c_long,
300         objWbemNamedValueSet: *mut IDispatch,
301         objWbemAsyncContext: *mut IDispatch,
302     ) -> HRESULT,
303     fn SubclassesOf(
304         strSuperclass: BSTR,
305         iFlags: c_long,
306         objWbemNamedValueSet: *mut IDispatch,
307         objWbemObjectSet: *mut *mut ISWbemObjectSet,
308     ) -> HRESULT,
309     fn SubclassesOfAsync(
310         objWbemSink: *mut IDispatch,
311         strSuperclass: BSTR,
312         iFlags: c_long,
313         objWbemNamedValueSet: *mut IDispatch,
314         objWbemAsyncContext: *mut IDispatch,
315     ) -> HRESULT,
316     fn ExecQuery(
317         strQuery: BSTR,
318         strQueryLanguage: BSTR,
319         iFlags: c_long,
320         objWbemNamedValueSet: *mut IDispatch,
321         objWbemObjectSet: *mut *mut ISWbemObjectSet,
322     ) -> HRESULT,
323     fn ExecQueryAsync(
324         objWbemSink: *mut IDispatch,
325         strQuery: BSTR,
326         strQueryLanguage: BSTR,
327         lFlags: c_long,
328         objWbemNamedValueSet: *mut IDispatch,
329         objWbemAsyncContext: *mut IDispatch,
330     ) -> HRESULT,
331     fn AssociatorsOf(
332         strObjectPath: BSTR,
333         strAssocClass: BSTR,
334         strResultClass: BSTR,
335         strResultRole: BSTR,
336         strRole: BSTR,
337         bClassesOnly: VARIANT_BOOL,
338         bSchemaOnly: VARIANT_BOOL,
339         strRequiredAssocQualifier: BSTR,
340         strRequiredQualifier: BSTR,
341         iFlags: c_long,
342         objWbemNamedValueSet: *mut IDispatch,
343         objWbemObjectSet: *mut *mut ISWbemObjectSet,
344     ) -> HRESULT,
345     fn AssociatorsOfAsync(
346         objWbemSink: *mut IDispatch,
347         strObjectPath: BSTR,
348         strAssocClass: BSTR,
349         strResultClass: BSTR,
350         strResultRole: BSTR,
351         strRole: BSTR,
352         bClassesOnly: VARIANT_BOOL,
353         bSchemaOnly: VARIANT_BOOL,
354         strRequiredAssocQualifier: BSTR,
355         strRequiredQualifier: BSTR,
356         iFlags: c_long,
357         objWbemNamedValueSet: *mut IDispatch,
358         objWbemAsyncContext: *mut IDispatch,
359     ) -> HRESULT,
360     fn ReferencesTo(
361         strObjectPath: BSTR,
362         strResultClass: BSTR,
363         strRole: BSTR,
364         bClassesOnly: VARIANT_BOOL,
365         bSchemaOnly: VARIANT_BOOL,
366         strRequiredQualifier: BSTR,
367         iFlags: c_long,
368         objWbemNamedValueSet: *mut IDispatch,
369         objWbemObjectSet: *mut *mut ISWbemObjectSet,
370     ) -> HRESULT,
371     fn ReferencesToAsync(
372         objWbemSink: *mut IDispatch,
373         strObjectPath: BSTR,
374         strResultClass: BSTR,
375         strRole: BSTR,
376         bClassesOnly: VARIANT_BOOL,
377         bSchemaOnly: VARIANT_BOOL,
378         strRequiredQualifier: BSTR,
379         iFlags: c_long,
380         objWbemNamedValueSet: *mut IDispatch,
381         objWbemAsyncContext: *mut IDispatch,
382     ) -> HRESULT,
383     fn ExecNotificationQuery(
384         strQuery: BSTR,
385         strQueryLanguage: BSTR,
386         iFlags: c_long,
387         objWbemNamedValueSet: *mut IDispatch,
388         objWbemEventSource: *mut *mut ISWbemEventSource,
389     ) -> HRESULT,
390     fn ExecNotificationQueryAsync(
391         objWbemSink: *mut IDispatch,
392         strQuery: BSTR,
393         strQueryLanguage: BSTR,
394         iFlags: c_long,
395         objWbemNamedValueSet: *mut IDispatch,
396         objWbemAsyncContext: *mut IDispatch,
397     ) -> HRESULT,
398     fn ExecMethod(
399         strObjectPath: BSTR,
400         strMethodName: BSTR,
401         objWbemInParameters: *mut IDispatch,
402         iFlags: c_long,
403         objWbemNamedValueSet: *mut IDispatch,
404         objWbemOutParameters: *mut *mut ISWbemObject,
405     ) -> HRESULT,
406     fn ExecMethodAsync(
407         objWbemSink: *mut IDispatch,
408         strObjectPath: BSTR,
409         strMethodName: BSTR,
410         objWbemInParameters: *mut IDispatch,
411         iFlags: c_long,
412         objWbemNamedValueSet: *mut IDispatch,
413         objWbemAsyncContext: *mut IDispatch,
414     ) -> HRESULT,
415     fn get_Security_(
416         objWbemSecurity: *mut *mut ISWbemSecurity,
417     ) -> HRESULT,
418 }}
419 // EXTERN_C const IID IID_ISWbemLocator;
420 DEFINE_GUID!{IID_ISWbemLocator,
421     0x76a6415b, 0xcb41, 0x11d1, 0x8b, 0x02, 0x00, 0x60, 0x08, 0x06, 0xd9, 0xb6}
422 RIDL!{#[uuid(0x76a6415b, 0xcb41, 0x11d1, 0x8b, 0x02, 0x00, 0x60, 0x08, 0x06, 0xd9, 0xb6)]
423 interface ISWbemLocator(ISWbemLocatorVtbl): IDispatch(IDispatchVtbl) {
424     fn ConnectServer(
425         strServer: BSTR,
426         strNamespace: BSTR,
427         strUser: BSTR,
428         strPassword: BSTR,
429         strLocale: BSTR,
430         strAuthority: BSTR,
431         iSecurityFlags: c_long,
432         objWbemNamedValueSet: *mut IDispatch,
433         objWbemServices: *mut *mut ISWbemServices,
434     ) -> HRESULT,
435     fn get_Security_(
436         objWbemSecurity: *mut *mut ISWbemSecurity,
437     ) -> HRESULT,
438 }}
439 pub const WBEMS_DISPID_DERIVATION: DISPID = 23;
440 // EXTERN_C const IID IID_ISWbemObject;
441 DEFINE_GUID!{IID_ISWbemObject,
442     0x76a6415a, 0xcb41, 0x11d1, 0x8b, 0x02, 0x00, 0x60, 0x08, 0x06, 0xd9, 0xb6}
443 RIDL!{#[uuid(0x76a6415a, 0xcb41, 0x11d1, 0x8b, 0x02, 0x00, 0x60, 0x08, 0x06, 0xd9, 0xb6)]
444 interface ISWbemObject(ISWbemObjectVtbl): IDispatch(IDispatchVtbl) {
445     fn Put_(
446         iFlags: c_long,
447         objWbemNamedValueSet: *mut IDispatch,
448         objWbemObjectPath: *mut *mut ISWbemObjectPath,
449     ) -> HRESULT,
450     fn PutAsync_(
451         objWbemSink: *mut IDispatch,
452         iFlags: c_long,
453         objWbemNamedValueSet: *mut IDispatch,
454         objWbemAsyncContext: *mut IDispatch,
455     ) -> HRESULT,
456     fn Delete_(
457         iFlags: c_long,
458         objWbemNamedValueSet: *mut IDispatch,
459     ) -> HRESULT,
460     fn DeleteAsync_(
461         objWbemSink: *mut IDispatch,
462         iFlags: c_long,
463         objWbemNamedValueSet: *mut IDispatch,
464         objWbemAsyncContext: *mut IDispatch,
465     ) -> HRESULT,
466     fn Instances_(
467         iFlags: c_long,
468         objWbemNamedValueSet: *mut IDispatch,
469         objWbemObjectSet: *mut *mut ISWbemObjectSet,
470     ) -> HRESULT,
471     fn InstancesAsync_(
472         objWbemSink: *mut IDispatch,
473         iFlags: c_long,
474         objWbemNamedValueSet: *mut IDispatch,
475         objWbemAsyncContext: *mut IDispatch,
476     ) -> HRESULT,
477     fn Subclasses_(
478         iFlags: c_long,
479         objWbemNamedValueSet: *mut IDispatch,
480         objWbemObjectSet: *mut *mut ISWbemObjectSet,
481     ) -> HRESULT,
482     fn SubclassesAsync_(
483         objWbemSink: *mut IDispatch,
484         iFlags: c_long,
485         objWbemNamedValueSet: *mut IDispatch,
486         objWbemAsyncContext: *mut IDispatch,
487     ) -> HRESULT,
488     fn Associators_(
489         strAssocClass: BSTR,
490         strResultClass: BSTR,
491         strResultRole: BSTR,
492         strRole: BSTR,
493         bClassesOnly: VARIANT_BOOL,
494         bSchemaOnly: VARIANT_BOOL,
495         strRequiredAssocQualifier: BSTR,
496         strRequiredQualifier: BSTR,
497         iFlags: c_long,
498         objWbemNamedValueSet: *mut IDispatch,
499         objWbemObjectSet: *mut *mut ISWbemObjectSet,
500     ) -> HRESULT,
501     fn AssociatorsAsync_(
502         objWbemSink: *mut IDispatch,
503         strAssocClass: BSTR,
504         strResultClass: BSTR,
505         strResultRole: BSTR,
506         strRole: BSTR,
507         bClassesOnly: VARIANT_BOOL,
508         bSchemaOnly: VARIANT_BOOL,
509         strRequiredAssocQualifier: BSTR,
510         strRequiredQualifier: BSTR,
511         iFlags: c_long,
512         objWbemNamedValueSet: *mut IDispatch,
513         objWbemAsyncContext: *mut IDispatch,
514     ) -> HRESULT,
515     fn References_(
516         strResultClass: BSTR,
517         strRole: BSTR,
518         bClassesOnly: VARIANT_BOOL,
519         bSchemaOnly: VARIANT_BOOL,
520         strRequiredQualifier: BSTR,
521         iFlags: c_long,
522         objWbemNamedValueSet: *mut IDispatch,
523         objWbemObjectSet: *mut *mut ISWbemObjectSet,
524     ) -> HRESULT,
525     fn ReferencesAsync_(
526         objWbemSink: *mut IDispatch,
527         strResultClass: BSTR,
528         strRole: BSTR,
529         bClassesOnly: VARIANT_BOOL,
530         bSchemaOnly: VARIANT_BOOL,
531         strRequiredQualifier: BSTR,
532         iFlags: c_long,
533         objWbemNamedValueSet: *mut IDispatch,
534         objWbemAsyncContext: *mut IDispatch,
535     ) -> HRESULT,
536     fn ExecMethod_(
537         strMethodName: BSTR,
538         objWbemInParameters: *mut IDispatch,
539         iFlags: c_long,
540         objWbemNamedValueSet: *mut IDispatch,
541         objWbemOutParameters: *mut *mut ISWbemObject,
542     ) -> HRESULT,
543     fn ExecMethodAsync_(
544         objWbemSink: *mut IDispatch,
545         strMethodName: BSTR,
546         objWbemInParameters: *mut IDispatch,
547         iFlags: c_long,
548         objWbemNamedValueSet: *mut IDispatch,
549         objWbemAsyncContext: *mut IDispatch,
550     ) -> HRESULT,
551     fn Clone_(
552         objWbemObject: *mut *mut ISWbemObject,
553     ) -> HRESULT,
554     fn GetObjectText_(
555         iFlags: c_long,
556         strObjectText: *mut BSTR,
557     ) -> HRESULT,
558     fn SpawnDerivedClass_(
559         iFlags: c_long,
560         objWbemObject: *mut *mut ISWbemObject,
561     ) -> HRESULT,
562     fn SpawnInstance_(
563         iFlags: c_long,
564         objWbemObject: *mut *mut ISWbemObject,
565     ) -> HRESULT,
566     fn CompareTo_(
567         objWbemObject: *mut IDispatch,
568         iFlags: c_long,
569         bResult: *mut VARIANT_BOOL,
570     ) -> HRESULT,
571     fn get_Qualifiers_(
572         objWbemQualifierSet: *mut *mut ISWbemQualifierSet,
573     ) -> HRESULT,
574     fn get_Properties_(
575         objWbemPropertySet: *mut *mut ISWbemPropertySet,
576     ) -> HRESULT,
577     fn get_Methods_(
578         objWbemMethodSet: *mut *mut ISWbemMethodSet,
579     ) -> HRESULT,
580     fn get_Derivation_(
581         strClassNameArray: *mut VARIANT,
582     ) -> HRESULT,
583     fn get_Path_(
584         objWbemObjectPath: *mut *mut ISWbemObjectPath,
585     ) -> HRESULT,
586     fn get_Security_(
587         objWbemSecurity: *mut *mut ISWbemSecurity,
588     ) -> HRESULT,
589 }}
590 // EXTERN_C const IID IID_ISWbemObjectSet;
591 DEFINE_GUID!{IID_ISWbemObjectSet,
592     0x76a6415f, 0xcb41, 0x11d1, 0x8b, 0x02, 0x00, 0x60, 0x08, 0x06, 0xd9, 0xb6}
593 RIDL!{#[uuid(0x76a6415f, 0xcb41, 0x11d1, 0x8b, 0x02, 0x00, 0x60, 0x08, 0x06, 0xd9, 0xb6)]
594 interface ISWbemObjectSet(ISWbemObjectSetVtbl): IDispatch(IDispatchVtbl) {
595     fn get__NewEnum(
596         pUnk: *mut *mut IUnknown,
597     ) -> HRESULT,
598     fn Item(
599         strObjectPath: BSTR,
600         iFlags: c_long,
601         objWbemObject: *mut *mut ISWbemObject,
602     ) -> HRESULT,
603     fn get_Count(
604         iCount: *mut c_long,
605     ) -> HRESULT,
606     fn get_Security_(
607         objWbemSecurity: *mut *mut ISWbemSecurity,
608     ) -> HRESULT,
609     fn ItemIndex(
610         lIndex: c_long,
611         objWbemObject: *mut *mut ISWbemObject,
612     ) -> HRESULT,
613 }}
614 // EXTERN_C const IID IID_ISWbemNamedValue;
615 DEFINE_GUID!{IID_ISWbemNamedValue,
616     0x76a64164, 0xcb41, 0x11d1, 0x8b, 0x02, 0x00, 0x60, 0x08, 0x06, 0xd9, 0xb6}
617 RIDL!{#[uuid(0x76a64164, 0xcb41, 0x11d1, 0x8b, 0x02, 0x00, 0x60, 0x08, 0x06, 0xd9, 0xb6)]
618 interface ISWbemNamedValue(ISWbemNamedValueVtbl): IDispatch(IDispatchVtbl) {
619     fn get_Value(
620         varValue: *mut VARIANT,
621     ) -> HRESULT,
622     fn put_Value(
623         varValue: *mut VARIANT,
624     ) -> HRESULT,
625     fn get_Name(
626         strName: *mut BSTR,
627     ) -> HRESULT,
628 }}
629 // EXTERN_C const IID IID_ISWbemNamedValueSet;
630 DEFINE_GUID!{IID_ISWbemNamedValueSet,
631     0xcf2376ea, 0xce8c, 0x11d1, 0x8b, 0x05, 0x00, 0x60, 0x08, 0x06, 0xd9, 0xb6}
632 RIDL!{#[uuid(0xcf2376ea, 0xce8c, 0x11d1, 0x8b, 0x05, 0x00, 0x60, 0x08, 0x06, 0xd9, 0xb6)]
633 interface ISWbemNamedValueSet(ISWbemNamedValueSetVtbl): IDispatch(IDispatchVtbl) {
634     fn get__NewEnum(
635         pUnk: *mut *mut IUnknown,
636     ) -> HRESULT,
637     fn Item(
638         strName: BSTR,
639         iFlags: c_long,
640         objWbemNamedValue: *mut *mut ISWbemNamedValue,
641     ) -> HRESULT,
642     fn get_Count(
643         iCount: *mut c_long,
644     ) -> HRESULT,
645     fn Add(
646         strName: BSTR,
647         varValue: *mut VARIANT,
648         iFlags: c_long,
649         objWbemNamedValue: *mut *mut ISWbemNamedValue,
650     ) -> HRESULT,
651     fn Remove(
652         strName: BSTR,
653         iFlags: c_long,
654     ) -> HRESULT,
655     fn Clone(
656         objWbemNamedValueSet: *mut *mut ISWbemNamedValueSet,
657     ) -> HRESULT,
658     fn DeleteAll() -> HRESULT,
659 }}
660 // EXTERN_C const IID IID_ISWbemQualifier;
661 DEFINE_GUID!{IID_ISWbemQualifier,
662     0x79b05932, 0xd3b7, 0x11d1, 0x8b, 0x06, 0x00, 0x60, 0x08, 0x06, 0xd9, 0xb6}
663 RIDL!{#[uuid(0x79b05932, 0xd3b7, 0x11d1, 0x8b, 0x06, 0x00, 0x60, 0x08, 0x06, 0xd9, 0xb6)]
664 interface ISWbemQualifier(ISWbemQualifierVtbl): IDispatch(IDispatchVtbl) {
665     fn get_Value(
666         varValue: *mut VARIANT,
667     ) -> HRESULT,
668     fn put_Value(
669         varValue: *mut VARIANT,
670     ) -> HRESULT,
671     fn get_Name(
672         strName: *mut BSTR,
673     ) -> HRESULT,
674     fn get_IsLocal(
675         bIsLocal: *mut VARIANT_BOOL,
676     ) -> HRESULT,
677     fn get_PropagatesToSubclass(
678         bPropagatesToSubclass: *mut VARIANT_BOOL,
679     ) -> HRESULT,
680     fn put_PropagatesToSubclass(
681         bPropagatesToSubclass: VARIANT_BOOL,
682     ) -> HRESULT,
683     fn get_PropagatesToInstance(
684         bPropagatesToInstance: *mut VARIANT_BOOL,
685     ) -> HRESULT,
686     fn put_PropagatesToInstance(
687         bPropagatesToInstance: VARIANT_BOOL,
688     ) -> HRESULT,
689     fn get_IsOverridable(
690         bIsOverridable: *mut VARIANT_BOOL,
691     ) -> HRESULT,
692     fn put_IsOverridable(
693         bIsOverridable: VARIANT_BOOL,
694     ) -> HRESULT,
695     fn get_IsAmended(
696         bIsAmended: *mut VARIANT_BOOL,
697     ) -> HRESULT,
698 }}
699 // EXTERN_C const IID IID_ISWbemQualifierSet;
700 DEFINE_GUID!{IID_ISWbemQualifierSet,
701     0x9b16ed16, 0xd3df, 0x11d1, 0x8b, 0x08, 0x00, 0x60, 0x08, 0x06, 0xd9, 0xb6}
702 RIDL!{#[uuid(0x9b16ed16, 0xd3df, 0x11d1, 0x8b, 0x08, 0x00, 0x60, 0x08, 0x06, 0xd9, 0xb6)]
703 interface ISWbemQualifierSet(ISWbemQualifierSetVtbl): IDispatch(IDispatchVtbl) {
704     fn get__NewEnum(
705         pUnk: *mut *mut IUnknown,
706     ) -> HRESULT,
707     fn Item(
708         name: BSTR,
709         iFlags: c_long,
710         objWbemQualifier: *mut *mut ISWbemQualifier,
711     ) -> HRESULT,
712     fn get_Count(
713         iCount: *mut c_long,
714     ) -> HRESULT,
715     fn Add(
716         strName: BSTR,
717         varVal: *mut VARIANT,
718         bPropagatesToSubclass: VARIANT_BOOL,
719         bPropagatesToInstance: VARIANT_BOOL,
720         bIsOverridable: VARIANT_BOOL,
721         iFlags: c_long,
722         objWbemQualifier: *mut *mut ISWbemQualifier,
723     ) -> HRESULT,
724     fn Remove(
725         strName: BSTR,
726         iFlags: c_long,
727     ) -> HRESULT,
728 }}
729 // EXTERN_C const IID IID_ISWbemProperty;
730 DEFINE_GUID!{IID_ISWbemProperty,
731     0x1a388f98, 0xd4ba, 0x11d1, 0x8b, 0x09, 0x00, 0x60, 0x08, 0x06, 0xd9, 0xb6}
732 RIDL!{#[uuid(0x1a388f98, 0xd4ba, 0x11d1, 0x8b, 0x09, 0x00, 0x60, 0x08, 0x06, 0xd9, 0xb6)]
733 interface ISWbemProperty(ISWbemPropertyVtbl): IDispatch(IDispatchVtbl) {
734     fn get_Value(
735         varValue: *mut VARIANT,
736     ) -> HRESULT,
737     fn put_Value(
738         varValue: *mut VARIANT,
739     ) -> HRESULT,
740     fn get_Name(
741         strName: *mut BSTR,
742     ) -> HRESULT,
743     fn get_IsLocal(
744         bIsLocal: *mut VARIANT_BOOL,
745     ) -> HRESULT,
746     fn get_Origin(
747         strOrigin: *mut BSTR,
748     ) -> HRESULT,
749     fn get_CIMType(
750         iCimType: *mut WbemCimtypeEnum,
751     ) -> HRESULT,
752     fn get_Qualifiers_(
753         objWbemQualifierSet: *mut *mut ISWbemQualifierSet,
754     ) -> HRESULT,
755     fn get_IsArray(
756         bIsArray: *mut VARIANT_BOOL,
757     ) -> HRESULT,
758 }}
759 // EXTERN_C const IID IID_ISWbemPropertySet;
760 DEFINE_GUID!{IID_ISWbemPropertySet,
761     0xdea0a7b2, 0xd4ba, 0x11d1, 0x8b, 0x09, 0x00, 0x60, 0x08, 0x06, 0xd9, 0xb6}
762 RIDL!{#[uuid(0xdea0a7b2, 0xd4ba, 0x11d1, 0x8b, 0x09, 0x00, 0x60, 0x08, 0x06, 0xd9, 0xb6)]
763 interface ISWbemPropertySet(ISWbemPropertySetVtbl): IDispatch(IDispatchVtbl) {
764     fn get__NewEnum(
765         pUnk: *mut *mut IUnknown,
766     ) -> HRESULT,
767     fn Item(
768         strName: BSTR,
769         iFlags: c_long,
770         objWbemProperty: *mut *mut ISWbemProperty,
771     ) -> HRESULT,
772     fn get_Count(
773         iCount: *mut c_long,
774     ) -> HRESULT,
775     fn Add(
776         strName: BSTR,
777         iCIMType: WbemCimtypeEnum,
778         bIsArray: VARIANT_BOOL,
779         iFlags: c_long,
780         objWbemProperty: *mut *mut ISWbemProperty,
781     ) -> HRESULT,
782     fn Remove(
783         strName: BSTR,
784         iFlags: c_long,
785     ) -> HRESULT,
786 }}
787 // EXTERN_C const IID IID_ISWbemMethod;
788 DEFINE_GUID!{IID_ISWbemMethod,
789     0x422e8e90, 0xd955, 0x11d1, 0x8b, 0x09, 0x00, 0x60, 0x08, 0x06, 0xd9, 0xb6}
790 RIDL!{#[uuid(0x422e8e90, 0xd955, 0x11d1, 0x8b, 0x09, 0x00, 0x60, 0x08, 0x06, 0xd9, 0xb6)]
791 interface ISWbemMethod(ISWbemMethodVtbl): IDispatch(IDispatchVtbl) {
792     fn get_Name(
793         strName: *mut BSTR,
794     ) -> HRESULT,
795     fn get_Origin(
796         strOrigin: *mut BSTR,
797     ) -> HRESULT,
798     fn get_InParameters(
799         objWbemInParameters: *mut *mut ISWbemObject,
800     ) -> HRESULT,
801     fn get_OutParameters(
802         objWbemOutParameters: *mut *mut ISWbemObject,
803     ) -> HRESULT,
804     fn get_Qualifiers_(
805         objWbemQualifierSet: *mut *mut ISWbemQualifierSet,
806     ) -> HRESULT,
807 }}
808 // EXTERN_C const IID IID_ISWbemMethodSet;
809 DEFINE_GUID!{IID_ISWbemMethodSet,
810     0xc93ba292, 0xd955, 0x11d1, 0x8b, 0x09, 0x00, 0x60, 0x08, 0x06, 0xd9, 0xb6}
811 RIDL!{#[uuid(0xc93ba292, 0xd955, 0x11d1, 0x8b, 0x09, 0x00, 0x60, 0x08, 0x06, 0xd9, 0xb6)]
812 interface ISWbemMethodSet(ISWbemMethodSetVtbl): IDispatch(IDispatchVtbl) {
813     fn get__NewEnum(
814         pUnk: *mut *mut IUnknown,
815     ) -> HRESULT,
816     fn Item(
817         strName: BSTR,
818         iFlags: c_long,
819         objWbemMethod: *mut *mut ISWbemMethod,
820     ) -> HRESULT,
821     fn get_Count(
822         iCount: *mut c_long,
823     ) -> HRESULT,
824 }}
825 // EXTERN_C const IID IID_ISWbemEventSource;
826 DEFINE_GUID!{IID_ISWbemEventSource,
827     0x27d54d92, 0x0ebe, 0x11d2, 0x8b, 0x22, 0x00, 0x60, 0x08, 0x06, 0xd9, 0xb6}
828 RIDL!{#[uuid(0x27d54d92, 0x0ebe, 0x11d2, 0x8b, 0x22, 0x00, 0x60, 0x08, 0x06, 0xd9, 0xb6)]
829 interface ISWbemEventSource(ISWbemEventSourceVtbl): IDispatch(IDispatchVtbl) {
830     fn NextEvent(
831         iTimeoutMs: c_long,
832         objWbemObject: *mut *mut ISWbemObject,
833     ) -> HRESULT,
834     fn get_Security_(
835         objWbemSecurity: *mut *mut ISWbemSecurity,
836     ) -> HRESULT,
837 }}
838 // EXTERN_C const IID IID_ISWbemObjectPath;
839 DEFINE_GUID!{IID_ISWbemObjectPath,
840     0x5791bc27, 0xce9c, 0x11d1, 0x97, 0xbf, 0x00, 0x00, 0xf8, 0x1e, 0x84, 0x9c}
841 RIDL!{#[uuid(0x5791bc27, 0xce9c, 0x11d1, 0x97, 0xbf, 0x00, 0x00, 0xf8, 0x1e, 0x84, 0x9c)]
842 interface ISWbemObjectPath(ISWbemObjectPathVtbl): IDispatch(IDispatchVtbl) {
843     fn get_Path(
844         strPath: *mut BSTR,
845     ) -> HRESULT,
846     fn put_Path(
847         strPath: BSTR,
848     ) -> HRESULT,
849     fn get_RelPath(
850         strRelPath: *mut BSTR,
851     ) -> HRESULT,
852     fn put_RelPath(
853         strRelPath: BSTR,
854     ) -> HRESULT,
855     fn get_Server(
856         strServer: *mut BSTR,
857     ) -> HRESULT,
858     fn put_Server(
859         strServer: BSTR,
860     ) -> HRESULT,
861     fn get_Namespace(
862         strNamespace: *mut BSTR,
863     ) -> HRESULT,
864     fn put_Namespace(
865         strNamespace: BSTR,
866     ) -> HRESULT,
867     fn get_ParentNamespace(
868         strParentNamespace: *mut BSTR,
869     ) -> HRESULT,
870     fn get_DisplayName(
871         strDisplayName: *mut BSTR,
872     ) -> HRESULT,
873     fn put_DisplayName(
874         strDisplayName: BSTR,
875     ) -> HRESULT,
876     fn get_Class(
877         strClass: *mut BSTR,
878     ) -> HRESULT,
879     fn put_Class(
880         strClass: BSTR,
881     ) -> HRESULT,
882     fn get_IsClass(
883         bIsClass: *mut VARIANT_BOOL,
884     ) -> HRESULT,
885     fn SetAsClass() -> HRESULT,
886     fn get_IsSingleton(
887         bIsSingleton: *mut VARIANT_BOOL,
888     ) -> HRESULT,
889     fn SetAsSingleton() -> HRESULT,
890     fn get_Keys(
891         objWbemNamedValueSet: *mut *mut ISWbemNamedValueSet,
892     ) -> HRESULT,
893     fn get_Security_(
894         objWbemSecurity: *mut *mut ISWbemSecurity,
895     ) -> HRESULT,
896     fn get_Locale(
897         strLocale: *mut BSTR,
898     ) -> HRESULT,
899     fn put_Locale(
900         strLocale: BSTR,
901     ) -> HRESULT,
902     fn get_Authority(
903         strAuthority: *mut BSTR,
904     ) -> HRESULT,
905     fn put_Authority(
906         strAuthority: BSTR,
907     ) -> HRESULT,
908 }}
909 // EXTERN_C const IID IID_ISWbemLastError;
910 DEFINE_GUID!{IID_ISWbemLastError,
911     0xd962db84, 0xd4bb, 0x11d1, 0x8b, 0x09, 0x00, 0x60, 0x08, 0x06, 0xd9, 0xb6}
912 RIDL!{#[uuid(0xd962db84, 0xd4bb, 0x11d1, 0x8b, 0x09, 0x00, 0x60, 0x08, 0x06, 0xd9, 0xb6)]
913 interface ISWbemLastError(ISWbemLastErrorVtbl): ISWbemObject(ISWbemObjectVtbl) {}}
914 // EXTERN_C const IID DIID_ISWbemSinkEvents;
915 DEFINE_GUID!{IID_ISWbemSinkEvents,
916     0x75718ca0, 0xf029, 0x11d1, 0xa1, 0xac, 0x00, 0xc0, 0x4f, 0xb6, 0xc2, 0x23}
917 RIDL!{#[uuid(0x75718ca0, 0xf029, 0x11d1, 0xa1, 0xac, 0x00, 0xc0, 0x4f, 0xb6, 0xc2, 0x23)]
918 interface ISWbemSinkEvents(ISWbemSinkEventsVtbl): IDispatch(IDispatchVtbl) {}}
919 // EXTERN_C const IID IID_ISWbemSink;
920 DEFINE_GUID!{IID_ISWbemSink,
921     0x75718c9f, 0xf029, 0x11d1, 0xa1, 0xac, 0x00, 0xc0, 0x4f, 0xb6, 0xc2, 0x23}
922 RIDL!{#[uuid(0x75718c9f, 0xf029, 0x11d1, 0xa1, 0xac, 0x00, 0xc0, 0x4f, 0xb6, 0xc2, 0x23)]
923 interface ISWbemSink(ISWbemSinkVtbl): IDispatch(IDispatchVtbl) {
924     fn Cancel() -> HRESULT,
925 }}
926 // EXTERN_C const IID IID_ISWbemSecurity;
927 DEFINE_GUID!{IID_ISWbemSecurity,
928     0xb54d66e6, 0x2287, 0x11d2, 0x8b, 0x33, 0x00, 0x60, 0x08, 0x06, 0xd9, 0xb6}
929 RIDL!{#[uuid(0xb54d66e6, 0x2287, 0x11d2, 0x8b, 0x33, 0x00, 0x60, 0x08, 0x06, 0xd9, 0xb6)]
930 interface ISWbemSecurity(ISWbemSecurityVtbl): IDispatch(IDispatchVtbl) {
931     fn get_ImpersonationLevel(
932         iImpersonationLevel: *mut WbemImpersonationLevelEnum,
933     ) -> HRESULT,
934     fn put_ImpersonationLevel(
935         iImpersonationLevel: WbemImpersonationLevelEnum,
936     ) -> HRESULT,
937     fn get_AuthenticationLevel(
938         iAuthenticationLevel: *mut WbemAuthenticationLevelEnum,
939     ) -> HRESULT,
940     fn put_AuthenticationLevel(
941         iAuthenticationLevel: WbemAuthenticationLevelEnum,
942     ) -> HRESULT,
943     fn get_Privileges(
944         objWbemPrivilegeSet: *mut *mut ISWbemPrivilegeSet,
945     ) -> HRESULT,
946 }}
947 // EXTERN_C const IID IID_ISWbemPrivilege;
948 DEFINE_GUID!{IID_ISWbemPrivilege,
949     0x26ee67bd, 0x5804, 0x11d2, 0x8b, 0x4a, 0x00, 0x60, 0x08, 0x06, 0xd9, 0xb6}
950 RIDL!{#[uuid(0x26ee67bd, 0x5804, 0x11d2, 0x8b, 0x4a, 0x00, 0x60, 0x08, 0x06, 0xd9, 0xb6)]
951 interface ISWbemPrivilege(ISWbemPrivilegeVtbl): IDispatch(IDispatchVtbl) {
952     fn get_IsEnabled(
953         bIsEnabled: *mut VARIANT_BOOL,
954     ) -> HRESULT,
955     fn put_IsEnabled(
956         bIsEnabled: VARIANT_BOOL,
957     ) -> HRESULT,
958     fn get_Name(
959         strDisplayName: *mut BSTR,
960     ) -> HRESULT,
961     fn get_DisplayName(
962         strDisplayName: *mut BSTR,
963     ) -> HRESULT,
964     fn get_Identifier(
965         iPrivilege: *mut WbemPrivilegeEnum,
966     ) -> HRESULT,
967 }}
968 // EXTERN_C const IID IID_ISWbemPrivilegeSet;
969 DEFINE_GUID!{IID_ISWbemPrivilegeSet,
970     0x26ee67bf, 0x5804, 0x11d2, 0x8b, 0x4a, 0x00, 0x60, 0x08, 0x06, 0xd9, 0xb6}
971 RIDL!{#[uuid(0x26ee67bf, 0x5804, 0x11d2, 0x8b, 0x4a, 0x00, 0x60, 0x08, 0x06, 0xd9, 0xb6)]
972 interface ISWbemPrivilegeSet(ISWbemPrivilegeSetVtbl): IDispatch(IDispatchVtbl) {
973     fn get__NewEnum(
974         pUnk: *mut *mut IUnknown,
975     ) -> HRESULT,
976     fn Item(
977         iPrivilege: WbemPrivilegeEnum,
978         objWbemPrivilege: *mut *mut ISWbemPrivilege,
979     ) -> HRESULT,
980     fn get_Count(
981         iCount: *mut c_long,
982     ) -> HRESULT,
983     fn Add(
984         iPrivilege: WbemPrivilegeEnum,
985         bIsEnabled: VARIANT_BOOL,
986         objWbemPrivilege: *mut *mut ISWbemPrivilege,
987     ) -> HRESULT,
988     fn Remove(
989         iPrivilege: WbemPrivilegeEnum,
990     ) -> HRESULT,
991     fn DeleteAll() -> HRESULT,
992     fn AddAsString(
993         strPrivilege: BSTR,
994         bIsEnabled: VARIANT_BOOL,
995         objWbemPrivilege: *mut *mut ISWbemPrivilege,
996     ) -> HRESULT,
997 }}
998 // EXTERN_C const IID IID_ISWbemServicesEx;
999 DEFINE_GUID!{IID_ISWbemServicesEx,
1000     0xd2f68443, 0x85dc, 0x427e, 0x91, 0xd8, 0x36, 0x65, 0x54, 0xcc, 0x75, 0x4c}
1001 RIDL!{#[uuid(0xd2f68443, 0x85dc, 0x427e, 0x91, 0xd8, 0x36, 0x65, 0x54, 0xcc, 0x75, 0x4c)]
1002 interface ISWbemServicesEx(ISWbemServicesExVtbl): ISWbemServices(ISWbemServicesVtbl) {
1003     fn Put(
1004         objWbemObject: *mut ISWbemObjectEx,
1005         iFlags: c_long,
1006         objWbemNamedValueSet: *mut IDispatch,
1007         objWbemObjectPath: *mut *mut ISWbemObjectPath,
1008     ) -> HRESULT,
1009     fn PutAsync(
1010         objWbemSink: *mut ISWbemSink,
1011         objWbemObject: *mut ISWbemObjectEx,
1012         iFlags: c_long,
1013         objWbemNamedValueSet: *mut IDispatch,
1014         objWbemAsyncContext: *mut IDispatch,
1015     ) -> HRESULT,
1016 }}
1017 // EXTERN_C const IID IID_ISWbemObjectEx;
1018 DEFINE_GUID!{IID_ISWbemObjectEx,
1019     0x269ad56a, 0x8a67, 0x4129, 0xbc, 0x8c, 0x05, 0x06, 0xdc, 0xfe, 0x98, 0x80}
1020 RIDL!{#[uuid(0x269ad56a, 0x8a67, 0x4129, 0xbc, 0x8c, 0x05, 0x06, 0xdc, 0xfe, 0x98, 0x80)]
1021 interface ISWbemObjectEx(ISWbemObjectExVtbl): ISWbemObject(ISWbemObjectVtbl) {
1022     fn Refresh_(
1023         iFlags: c_long,
1024         objWbemNamedValueSet: *mut IDispatch,
1025     ) -> HRESULT,
1026     fn get_SystemProperties_(
1027         objWbemPropertySet: *mut *mut ISWbemPropertySet,
1028     ) -> HRESULT,
1029     fn GetText_(
1030         iObjectTextFormat: WbemObjectTextFormatEnum,
1031         iFlags: c_long,
1032         objWbemNamedValueSet: *mut IDispatch,
1033         bsText: *mut BSTR,
1034     ) -> HRESULT,
1035     fn SetFromText_(
1036         bsText: BSTR,
1037         iObjectTextFormat: WbemObjectTextFormatEnum,
1038         iFlags: c_long,
1039         objWbemNamedValueSet: *mut IDispatch,
1040     ) -> HRESULT,
1041 }}
1042 // EXTERN_C const IID IID_ISWbemDateTime;
1043 DEFINE_GUID!{IID_ISWbemDateTime,
1044     0x5e97458a, 0xcf77, 0x11d3, 0xb3, 0x8f, 0x00, 0x10, 0x5a, 0x1f, 0x47, 0x3a}
1045 RIDL!{#[uuid(0x5e97458a, 0xcf77, 0x11d3, 0xb3, 0x8f, 0x00, 0x10, 0x5a, 0x1f, 0x47, 0x3a)]
1046 interface ISWbemDateTime(ISWbemDateTimeVtbl): IDispatch(IDispatchVtbl) {
1047     fn get_Value(
1048         strValue: *mut BSTR,
1049     ) -> HRESULT,
1050     fn put_Value(
1051         strValue: BSTR,
1052     ) -> HRESULT,
1053     fn get_Year(
1054         iYear: *mut c_long,
1055     ) -> HRESULT,
1056     fn put_Year(
1057         iYear: c_long,
1058     ) -> HRESULT,
1059     fn get_YearSpecified(
1060         bYearSpecified: *mut VARIANT_BOOL,
1061     ) -> HRESULT,
1062     fn put_YearSpecified(
1063         bYearSpecified: VARIANT_BOOL,
1064     ) -> HRESULT,
1065     fn get_Month(
1066         iMonth: *mut c_long,
1067     ) -> HRESULT,
1068     fn put_Month(
1069         iMonth: c_long,
1070     ) -> HRESULT,
1071     fn get_MonthSpecified(
1072         bMonthSpecified: *mut VARIANT_BOOL,
1073     ) -> HRESULT,
1074     fn put_MonthSpecified(
1075         bMonthSpecified: VARIANT_BOOL,
1076     ) -> HRESULT,
1077     fn get_Day(
1078         iDay: *mut c_long,
1079     ) -> HRESULT,
1080     fn put_Day(
1081         iDay: c_long,
1082     ) -> HRESULT,
1083     fn get_DaySpecified(
1084         bDaySpecified: *mut VARIANT_BOOL,
1085     ) -> HRESULT,
1086     fn put_DaySpecified(
1087         bDaySpecified: VARIANT_BOOL,
1088     ) -> HRESULT,
1089     fn get_Hours(
1090         iHours: *mut c_long,
1091     ) -> HRESULT,
1092     fn put_Hours(
1093         iHours: c_long,
1094     ) -> HRESULT,
1095     fn get_HoursSpecified(
1096         bHoursSpecified: *mut VARIANT_BOOL,
1097     ) -> HRESULT,
1098     fn put_HoursSpecified(
1099         bHoursSpecified: VARIANT_BOOL,
1100     ) -> HRESULT,
1101     fn get_Minutes(
1102         iMinutes: *mut c_long,
1103     ) -> HRESULT,
1104     fn put_Minutes(
1105         iMinutes: c_long,
1106     ) -> HRESULT,
1107     fn get_MinutesSpecified(
1108         bMinutesSpecified: *mut VARIANT_BOOL,
1109     ) -> HRESULT,
1110     fn put_MinutesSpecified(
1111         bMinutesSpecified: VARIANT_BOOL,
1112     ) -> HRESULT,
1113     fn get_Seconds(
1114         iSeconds: *mut c_long,
1115     ) -> HRESULT,
1116     fn put_Seconds(
1117         iSeconds: c_long,
1118     ) -> HRESULT,
1119     fn get_SecondsSpecified(
1120         bSecondsSpecified: *mut VARIANT_BOOL,
1121     ) -> HRESULT,
1122     fn put_SecondsSpecified(
1123         bSecondsSpecified: VARIANT_BOOL,
1124     ) -> HRESULT,
1125     fn get_Microseconds(
1126         iMicroseconds: *mut c_long,
1127     ) -> HRESULT,
1128     fn put_Microseconds(
1129         iMicroseconds: c_long,
1130     ) -> HRESULT,
1131     fn get_MicrosecondsSpecified(
1132         bMicrosecondsSpecified: *mut VARIANT_BOOL,
1133     ) -> HRESULT,
1134     fn put_MicrosecondsSpecified(
1135         bMicrosecondsSpecified: VARIANT_BOOL,
1136     ) -> HRESULT,
1137     fn get_UTC(
1138         iUTC: *mut c_long,
1139     ) -> HRESULT,
1140     fn put_UTC(
1141         iUTC: c_long,
1142     ) -> HRESULT,
1143     fn get_UTCSpecified(
1144         bUTCSpecified: *mut VARIANT_BOOL,
1145     ) -> HRESULT,
1146     fn put_UTCSpecified(
1147         bUTCSpecified: VARIANT_BOOL,
1148     ) -> HRESULT,
1149     fn get_IsInterval(
1150         bIsInterval: *mut VARIANT_BOOL,
1151     ) -> HRESULT,
1152     fn put_IsInterval(
1153         bIsInterval: VARIANT_BOOL,
1154     ) -> HRESULT,
1155     fn GetVarDate(
1156         bIsLocal: VARIANT_BOOL,
1157         dVarDate: *mut DATE,
1158     ) -> HRESULT,
1159     fn SetVarDate(
1160         dVarDate: DATE,
1161         bIsLocal: VARIANT_BOOL,
1162     ) -> HRESULT,
1163     fn GetFileTime(
1164         bIsLocal: VARIANT_BOOL,
1165         strFileTime: *mut BSTR,
1166     ) -> HRESULT,
1167     fn SetFileTime(
1168         strFileTime: BSTR,
1169         bIsLocal: VARIANT_BOOL,
1170     ) -> HRESULT,
1171 }}
1172 // EXTERN_C const IID IID_ISWbemRefresher;
1173 DEFINE_GUID!{IID_ISWbemRefresher,
1174     0x14d8250e, 0xd9c2, 0x11d3, 0xb3, 0x8f, 0x00, 0x10, 0x5a, 0x1f, 0x47, 0x3a}
1175 RIDL!{#[uuid(0x14d8250e, 0xd9c2, 0x11d3, 0xb3, 0x8f, 0x00, 0x10, 0x5a, 0x1f, 0x47, 0x3a)]
1176 interface ISWbemRefresher(ISWbemRefresherVtbl): IDispatch(IDispatchVtbl) {
1177     fn get__NewEnum(
1178         pUnk: *mut *mut IUnknown,
1179     ) -> HRESULT,
1180     fn Item(
1181         iIndex: c_long,
1182         objWbemRefreshableItem: *mut *mut ISWbemRefreshableItem,
1183     ) -> HRESULT,
1184     fn get_Count(
1185         iCount: *mut c_long,
1186     ) -> HRESULT,
1187     fn Add(
1188         objWbemServices: *mut ISWbemServicesEx,
1189         bsInstancePath: BSTR,
1190         iFlags: c_long,
1191         objWbemNamedValueSet: *mut IDispatch,
1192         objWbemRefreshableItem: *mut *mut ISWbemRefreshableItem,
1193     ) -> HRESULT,
1194     fn AddEnum(
1195         objWbemServices: *mut ISWbemServicesEx,
1196         bsClassName: BSTR,
1197         iFlags: c_long,
1198         objWbemNamedValueSet: *mut IDispatch,
1199         objWbemRefreshableItem: *mut *mut ISWbemRefreshableItem,
1200     ) -> HRESULT,
1201     fn Remove(
1202         iIndex: c_long,
1203         iFlags: c_long,
1204     ) -> HRESULT,
1205     fn Refresh(
1206         iFlags: c_long,
1207     ) -> HRESULT,
1208     fn get_AutoReconnect(
1209         bCount: *mut VARIANT_BOOL,
1210     ) -> HRESULT,
1211     fn put_AutoReconnect(
1212         bCount: VARIANT_BOOL,
1213     ) -> HRESULT,
1214     fn DeleteAll() -> HRESULT,
1215 }}
1216 // EXTERN_C const IID IID_ISWbemRefreshableItem;
1217 DEFINE_GUID!{IID_ISWbemRefreshableItem,
1218     0x5ad4bf92, 0xdaab, 0x11d3, 0xb3, 0x8f, 0x00, 0x10, 0x5a, 0x1f, 0x47, 0x3a}
1219 RIDL!{#[uuid(0x5ad4bf92, 0xdaab, 0x11d3, 0xb3, 0x8f, 0x00, 0x10, 0x5a, 0x1f, 0x47, 0x3a)]
1220 interface ISWbemRefreshableItem(ISWbemRefreshableItemVtbl): IDispatch(IDispatchVtbl) {
1221     fn get_Index(
1222         iIndex: *mut c_long,
1223     ) -> HRESULT,
1224     fn get_Refresher(
1225         objWbemRefresher: *mut *mut ISWbemRefresher,
1226     ) -> HRESULT,
1227     fn get_IsSet(
1228         bIsSet: *mut VARIANT_BOOL,
1229     ) -> HRESULT,
1230     fn get_Object(
1231         objWbemObject: *mut *mut ISWbemObjectEx,
1232     ) -> HRESULT,
1233     fn get_ObjectSet(
1234         objWbemObjectSet: *mut *mut ISWbemObjectSet,
1235     ) -> HRESULT,
1236     fn Remove(
1237         iFlags: c_long,
1238     ) -> HRESULT,
1239 }}
1240 DEFINE_GUID!{CLSID_SWbemLocator,
1241     0x76A64158, 0xCB41, 0x11d1, 0x8B, 0x02, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6}
1242 // class DECLSPEC_UUID("76A64158-CB41-11d1-8B02-00600806D9B6")
1243 // SWbemLocator;
1244 DEFINE_GUID!{CLSID_SWbemNamedValueSet,
1245     0x9AED384E, 0xCE8B, 0x11d1, 0x8B, 0x05, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6}
1246 // class DECLSPEC_UUID("9AED384E-CE8B-11d1-8B05-00600806D9B6")
1247 // SWbemNamedValueSet;
1248 DEFINE_GUID!{CLSID_SWbemObjectPath,
1249     0x5791BC26, 0xCE9C, 0x11d1, 0x97, 0xBF, 0x00, 0x00, 0xF8, 0x1E, 0x84, 0x9C}
1250 // class DECLSPEC_UUID("5791BC26-CE9C-11d1-97BF-0000F81E849C")
1251 // SWbemObjectPath;
1252 DEFINE_GUID!{CLSID_SWbemLastError,
1253     0xC2FEEEAC, 0xCFCD, 0x11d1, 0x8B, 0x05, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6}
1254 // class DECLSPEC_UUID("C2FEEEAC-CFCD-11d1-8B05-00600806D9B6")
1255 // SWbemLastError;
1256 DEFINE_GUID!{CLSID_SWbemSink,
1257     0x75718C9A, 0xF029, 0x11d1, 0xA1, 0xAC, 0x00, 0xC0, 0x4F, 0xB6, 0xC2, 0x23}
1258 // class DECLSPEC_UUID("75718C9A-F029-11d1-A1AC-00C04FB6C223")
1259 // SWbemSink;
1260 DEFINE_GUID!{CLSID_SWbemDateTime,
1261     0x47DFBE54, 0xCF76, 0x11d3, 0xB3, 0x8F, 0x00, 0x10, 0x5A, 0x1F, 0x47, 0x3A}
1262 // class DECLSPEC_UUID("47DFBE54-CF76-11d3-B38F-00105A1F473A")
1263 // SWbemDateTime;
1264 DEFINE_GUID!{CLSID_SWbemRefresher,
1265     0xD269BF5C, 0xD9C1, 0x11d3, 0xB3, 0x8F, 0x00, 0x10, 0x5A, 0x1F, 0x47, 0x3A}
1266 // class DECLSPEC_UUID("D269BF5C-D9C1-11d3-B38F-00105A1F473A")
1267 // SWbemRefresher;
1268 DEFINE_GUID!{CLSID_SWbemServices,
1269     0x04B83D63, 0x21AE, 0x11d2, 0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6}
1270 // class DECLSPEC_UUID("04B83D63-21AE-11d2-8B33-00600806D9B6")
1271 // SWbemServices;
1272 DEFINE_GUID!{CLSID_SWbemServicesEx,
1273     0x62E522DC, 0x8CF3, 0x40a8, 0x8B, 0x2E, 0x37, 0xD5, 0x95, 0x65, 0x1E, 0x40}
1274 // class DECLSPEC_UUID("62E522DC-8CF3-40a8-8B2E-37D595651E40")
1275 // SWbemServicesEx;
1276 DEFINE_GUID!{CLSID_SWbemObject,
1277     0x04B83D62, 0x21AE, 0x11d2, 0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6}
1278 // class DECLSPEC_UUID("04B83D62-21AE-11d2-8B33-00600806D9B6")
1279 // SWbemObject;
1280 DEFINE_GUID!{CLSID_SWbemObjectEx,
1281     0xD6BDAFB2, 0x9435, 0x491f, 0xBB, 0x87, 0x6A, 0xA0, 0xF0, 0xBC, 0x31, 0xA2}
1282 // class DECLSPEC_UUID("D6BDAFB2-9435-491f-BB87-6AA0F0BC31A2")
1283 // SWbemObjectEx;
1284 DEFINE_GUID!{CLSID_SWbemObjectSet,
1285     0x04B83D61, 0x21AE, 0x11d2, 0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6}
1286 // class DECLSPEC_UUID("04B83D61-21AE-11d2-8B33-00600806D9B6")
1287 // SWbemObjectSet;
1288 DEFINE_GUID!{CLSID_SWbemNamedValue,
1289     0x04B83D60, 0x21AE, 0x11d2, 0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6}
1290 // class DECLSPEC_UUID("04B83D60-21AE-11d2-8B33-00600806D9B6")
1291 // SWbemNamedValue;
1292 DEFINE_GUID!{CLSID_SWbemQualifier,
1293     0x04B83D5F, 0x21AE, 0x11d2, 0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6}
1294 // class DECLSPEC_UUID("04B83D5F-21AE-11d2-8B33-00600806D9B6")
1295 // SWbemQualifier;
1296 DEFINE_GUID!{CLSID_SWbemQualifierSet,
1297     0x04B83D5E, 0x21AE, 0x11d2, 0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6}
1298 // class DECLSPEC_UUID("04B83D5E-21AE-11d2-8B33-00600806D9B6")
1299 // SWbemQualifierSet;
1300 DEFINE_GUID!{CLSID_SWbemProperty,
1301     0x04B83D5D, 0x21AE, 0x11d2, 0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6}
1302 // class DECLSPEC_UUID("04B83D5D-21AE-11d2-8B33-00600806D9B6")
1303 // SWbemProperty;
1304 DEFINE_GUID!{CLSID_SWbemPropertySet,
1305     0x04B83D5C, 0x21AE, 0x11d2, 0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6}
1306 // class DECLSPEC_UUID("04B83D5C-21AE-11d2-8B33-00600806D9B6")
1307 // SWbemPropertySet;
1308 DEFINE_GUID!{CLSID_SWbemMethod,
1309     0x04B83D5B, 0x21AE, 0x11d2, 0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6}
1310 // class DECLSPEC_UUID("04B83D5B-21AE-11d2-8B33-00600806D9B6")
1311 // SWbemMethod;
1312 DEFINE_GUID!{CLSID_SWbemMethodSet,
1313     0x04B83D5A, 0x21AE, 0x11d2, 0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6}
1314 // class DECLSPEC_UUID("04B83D5A-21AE-11d2-8B33-00600806D9B6")
1315 // SWbemMethodSet;
1316 DEFINE_GUID!{CLSID_SWbemEventSource,
1317     0x04B83D58, 0x21AE, 0x11d2, 0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6}
1318 // class DECLSPEC_UUID("04B83D58-21AE-11d2-8B33-00600806D9B6")
1319 // SWbemEventSource;
1320 DEFINE_GUID!{CLSID_SWbemSecurity,
1321     0xB54D66E9, 0x2287, 0x11d2, 0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6}
1322 // class DECLSPEC_UUID("B54D66E9-2287-11d2-8B33-00600806D9B6")
1323 // SWbemSecurity;
1324 DEFINE_GUID!{CLSID_SWbemPrivilege,
1325     0x26EE67BC, 0x5804, 0x11d2, 0x8B, 0x4A, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6}
1326 // class DECLSPEC_UUID("26EE67BC-5804-11d2-8B4A-00600806D9B6")
1327 // SWbemPrivilege;
1328 DEFINE_GUID!{CLSID_SWbemPrivilegeSet,
1329     0x26EE67BE, 0x5804, 0x11d2, 0x8B, 0x4A, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6}
1330 // class DECLSPEC_UUID("26EE67BE-5804-11d2-8B4A-00600806D9B6")
1331 // SWbemPrivilegeSet;
1332 DEFINE_GUID!{CLSID_SWbemRefreshableItem,
1333     0x8C6854BC, 0xDE4B, 0x11d3, 0xB3, 0x90, 0x00, 0x10, 0x5A, 0x1F, 0x47, 0x3A}
1334 // class DECLSPEC_UUID("8C6854BC-DE4B-11d3-B390-00105A1F473A")
1335 // SWbemRefreshableItem;
1336 pub const WBEMS_DISPID_OBJECT_READY: DISPID = 1;
1337 pub const WBEMS_DISPID_COMPLETED: DISPID = 2;
1338 pub const WBEMS_DISPID_PROGRESS: DISPID = 3;
1339 pub const WBEMS_DISPID_OBJECT_PUT: DISPID = 4;
1340 pub const WBEMS_DISPID_CONNECTION_READY: DISPID = 5;
1341 // extern RPC_IF_HANDLE __MIDL_itf_wbemdisp_0000_0018_v0_0_c_ifspec;
1342 // extern RPC_IF_HANDLE __MIDL_itf_wbemdisp_0000_0018_v0_0_s_ifspec;
1343 // extern RPC_IF_HANDLE __MIDL_itf_wbemdisp_0000_0026_v0_0_c_ifspec;
1344 // extern RPC_IF_HANDLE __MIDL_itf_wbemdisp_0000_0026_v0_0_s_ifspec;
1345