xref: /reactos/sdk/include/psdk/wbemcli.idl (revision c2c66aff)
1/*
2 * Copyright 2009 Hans Leidekker for CodeWeavers
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17 */
18
19cpp_quote("DEFINE_GUID(CLSID_WbemLocator, 0x4590f811,0x1d3A,0x11d0,0x89,0x1f,0x00,0xaa,0x00,0x4b,0x2e,0x24);")
20cpp_quote("DEFINE_GUID(CLSID_WbemStatusCode, 0xeb87e1bd,0x3233,0x11d2,0xae,0xc9,0x00,0xc0,0x4f,0xb6,0x88,0x20);")
21
22import "oaidl.idl";
23import "objidl.idl";
24
25interface IWbemContext;
26interface IWbemServices;
27interface IWbemStatusCodeText;
28interface IWbemCallResult;
29interface IWbemObjectSink;
30interface IWbemClassObject;
31interface IEnumWbemClassObject;
32interface IWbemQualifierSet;
33
34typedef [v1_enum] enum tag_WBEMSTATUS
35{
36    WBEM_NO_ERROR                           = 0,
37    WBEM_S_NO_ERROR                         = 0,
38    WBEM_S_SAME                             = 0,
39    WBEM_S_FALSE                            = 1,
40    WBEM_S_ALREADY_EXISTS                   = 0x40001,
41    WBEM_S_RESET_TO_DEFAULT                 = 0x40002,
42    WBEM_S_DIFFERENT                        = 0x40003,
43    WBEM_S_TIMEDOUT                         = 0x40004,
44    WBEM_S_NO_MORE_DATA                     = 0x40005,
45    WBEM_S_OPERATION_CANCELLED              = 0x40006,
46    WBEM_S_PENDING                          = 0x40007,
47    WBEM_S_DUPLICATE_OBJECTS                = 0x40008,
48    WBEM_S_ACCESS_DENIED                    = 0x40009,
49    WBEM_S_PARTIAL_RESULTS                  = 0x40010,
50    WBEM_S_SOURCE_NOT_AVAILABLE             = 0x40017,
51    WBEM_E_FAILED                           = 0x80041001,
52    WBEM_E_NOT_FOUND                        = 0x80041002,
53    WBEM_E_ACCESS_DENIED                    = 0x80041003,
54    WBEM_E_PROVIDER_FAILURE                 = 0x80041004,
55    WBEM_E_TYPE_MISMATCH                    = 0x80041005,
56    WBEM_E_OUT_OF_MEMORY                    = 0x80041006,
57    WBEM_E_INVALID_CONTEXT                  = 0x80041007,
58    WBEM_E_INVALID_PARAMETER                = 0x80041008,
59    WBEM_E_NOT_AVAILABLE                    = 0x80041009,
60    WBEM_E_CRITICAL_ERROR                   = 0x8004100a,
61    WBEM_E_INVALID_STREAM                   = 0x8004100b,
62    WBEM_E_NOT_SUPPORTED                    = 0x8004100c,
63    WBEM_E_INVALID_SUPERCLASS               = 0x8004100d,
64    WBEM_E_INVALID_NAMESPACE                = 0x8004100e,
65    WBEM_E_INVALID_OBJECT                   = 0x8004100f,
66    WBEM_E_INVALID_CLASS                    = 0x80041010,
67    WBEM_E_PROVIDER_NOT_FOUND               = 0x80041011,
68    WBEM_E_INVALID_PROVIDER_REGISTRATION    = 0x80041012,
69    WBEM_E_PROVIDER_LOAD_FAILURE            = 0x80041013,
70    WBEM_E_INITIALIZATION_FAILURE           = 0x80041014,
71    WBEM_E_TRANSPORT_FAILURE                = 0x80041015,
72    WBEM_E_INVALID_OPERATION                = 0x80041016,
73    WBEM_E_INVALID_QUERY                    = 0x80041017,
74    WBEM_E_INVALID_QUERY_TYPE               = 0x80041018,
75    WBEM_E_ALREADY_EXISTS                   = 0x80041019,
76    WBEM_E_OVERRIDE_NOT_ALLOWED             = 0x8004101a,
77    WBEM_E_PROPAGATED_QUALIFIER             = 0x8004101b,
78    WBEM_E_PROPAGATED_PROPERTY              = 0x8004101c,
79    WBEM_E_UNEXPECTED                       = 0x8004101d,
80    WBEM_E_ILLEGAL_OPERATION                = 0x8004101e,
81    WBEM_E_CANNOT_BE_KEY                    = 0x8004101f,
82    WBEM_E_INCOMPLETE_CLASS                 = 0x80041020,
83    WBEM_E_INVALID_SYNTAX                   = 0x80041021,
84    WBEM_E_NONDECORATED_OBJECT              = 0x80041022,
85    WBEM_E_READ_ONLY                        = 0x80041023,
86    WBEM_E_PROVIDER_NOT_CAPABLE             = 0x80041024,
87    WBEM_E_CLASS_HAS_CHILDREN               = 0x80041025,
88    WBEM_E_CLASS_HAS_INSTANCES              = 0x80041026,
89    WBEM_E_QUERY_NOT_IMPLEMENTED            = 0x80041027,
90    WBEM_E_ILLEGAL_NULL                     = 0x80041028,
91    WBEM_E_INVALID_QUALIFIER_TYPE           = 0x80041029,
92    WBEM_E_INVALID_PROPERTY_TYPE            = 0x8004102a,
93    WBEM_E_VALUE_OUT_OF_RANGE               = 0x8004102b,
94    WBEM_E_CANNOT_BE_SINGLETON              = 0x8004102c,
95    WBEM_E_INVALID_CIM_TYPE                 = 0x8004102d,
96    WBEM_E_INVALID_METHOD                   = 0x8004102e,
97    WBEM_E_INVALID_METHOD_PARAMETERS        = 0x8004102f,
98    WBEM_E_SYSTEM_PROPERTY                  = 0x80041030,
99    WBEM_E_INVALID_PROPERTY                 = 0x80041031,
100    WBEM_E_CALL_CANCELLED                   = 0x80041032,
101    WBEM_E_SHUTTING_DOWN                    = 0x80041033,
102    WBEM_E_PROPAGATED_METHOD                = 0x80041034,
103    WBEM_E_UNSUPPORTED_PARAMETER            = 0x80041035,
104    WBEM_E_MISSING_PARAMETER_ID             = 0x80041036,
105    WBEM_E_INVALID_PARAMETER_ID             = 0x80041037,
106    WBEM_E_NONCONSECUTIVE_PARAMETER_IDS     = 0x80041038,
107    WBEM_E_PARAMETER_ID_ON_RETVAL           = 0x80041039,
108    WBEM_E_INVALID_OBJECT_PATH              = 0x8004103a,
109    WBEM_E_OUT_OF_DISK_SPACE                = 0x8004103b,
110    WBEM_E_BUFFER_TOO_SMALL                 = 0x8004103c,
111    WBEM_E_UNSUPPORTED_PUT_EXTENSION        = 0x8004103d,
112    WBEM_E_UNKNOWN_OBJECT_TYPE              = 0x8004103e,
113    WBEM_E_UNKNOWN_PACKET_TYPE              = 0x8004103f,
114    WBEM_E_MARSHAL_VERSION_MISMATCH         = 0x80041040,
115    WBEM_E_MARSHAL_INVALID_SIGNATURE        = 0x80041041,
116    WBEM_E_INVALID_QUALIFIER                = 0x80041042,
117    WBEM_E_INVALID_DUPLICATE_PARAMETER      = 0x80041043,
118    WBEM_E_TOO_MUCH_DATA                    = 0x80041044,
119    WBEM_E_SERVER_TOO_BUSY                  = 0x80041045,
120    WBEM_E_INVALID_FLAVOR                   = 0x80041046,
121    WBEM_E_CIRCULAR_REFERENCE               = 0x80041047,
122    WBEM_E_UNSUPPORTED_CLASS_UPDATE         = 0x80041048,
123    WBEM_E_CANNOT_CHANGE_KEY_INHERITANCE    = 0x80041049,
124    WBEM_E_CANNOT_CHANGE_INDEX_INHERITANCE  = 0x80041050,
125    WBEM_E_TOO_MANY_PROPERTIES              = 0x80041051,
126    WBEM_E_UPDATE_TYPE_MISMATCH             = 0x80041052,
127    WBEM_E_UPDATE_OVERRIDE_NOT_ALLOWED      = 0x80041053,
128    WBEM_E_UPDATE_PROPAGATED_METHOD         = 0x80041054,
129    WBEM_E_METHOD_NOT_IMPLEMENTED           = 0x80041055,
130    WBEM_E_METHOD_DISABLED                  = 0x80041056,
131    WBEM_E_REFRESHER_BUSY                   = 0x80041057,
132    WBEM_E_UNPARSABLE_QUERY                 = 0x80041058,
133    WBEM_E_NOT_EVENT_CLASS                  = 0x80041059,
134    WBEM_E_MISSING_GROUP_WITHIN             = 0x8004105a,
135    WBEM_E_MISSING_AGGREGATION_LIST         = 0x8004105b,
136    WBEM_E_PROPERTY_NOT_AN_OBJECT           = 0x8004105c,
137    WBEM_E_AGGREGATING_BY_OBJECT            = 0x8004105d,
138    WBEM_E_UNINTERPRETABLE_PROVIDER_QUERY   = 0x8004105f,
139    WBEM_E_BACKUP_RESTORE_WINMGMT_RUNNING   = 0x80041060,
140    WBEM_E_QUEUE_OVERFLOW                   = 0x80041061,
141    WBEM_E_PRIVILEGE_NOT_HELD               = 0x80041062,
142    WBEM_E_INVALID_OPERATOR                 = 0x80041063,
143    WBEM_E_LOCAL_CREDENTIALS                = 0x80041064,
144    WBEM_E_CANNOT_BE_ABSTRACT               = 0x80041065,
145    WBEM_E_AMENDED_OBJECT                   = 0x80041066,
146    WBEM_E_CLIENT_TOO_SLOW                  = 0x80041067,
147    WBEM_E_NULL_SECURITY_DESCRIPTOR         = 0x80041068,
148    WBEM_E_TIMED_OUT                        = 0x80041069,
149    WBEM_E_INVALID_ASSOCIATION              = 0x8004106a,
150    WBEM_E_AMBIGUOUS_OPERATION              = 0x8004106b,
151    WBEM_E_QUOTA_VIOLATION                  = 0x8004106c,
152    WBEM_E_RESERVED_001                     = 0x8004106d,
153    WBEM_E_RESERVED_002                     = 0x8004106e,
154    WBEM_E_UNSUPPORTED_LOCALE               = 0x8004106f,
155    WBEM_E_HANDLE_OUT_OF_DATE               = 0x80041070,
156    WBEM_E_CONNECTION_FAILED                = 0x80041071,
157    WBEM_E_INVALID_HANDLE_REQUEST           = 0x80041072,
158    WBEM_E_PROPERTY_NAME_TOO_WIDE           = 0x80041073,
159    WBEM_E_CLASS_NAME_TOO_WIDE              = 0x80041074,
160    WBEM_E_METHOD_NAME_TOO_WIDE             = 0x80041075,
161    WBEM_E_QUALIFIER_NAME_TOO_WIDE          = 0x80041076,
162    WBEM_E_RERUN_COMMAND                    = 0x80041077,
163    WBEM_E_DATABASE_VER_MISMATCH            = 0x80041078,
164    WBEM_E_VETO_DELETE                      = 0x80041079,
165    WBEM_E_VETO_PUT                         = 0x8004107a,
166    WBEM_E_INVALID_LOCALE                   = 0x80041080,
167    WBEM_E_PROVIDER_SUSPENDED               = 0x80041081,
168    WBEM_E_SYNCHRONIZATION_REQUIRED         = 0x80041082,
169    WBEM_E_NO_SCHEMA                        = 0x80041083,
170    WBEM_E_PROVIDER_ALREADY_REGISTERED      = 0x80041084,
171    WBEM_E_PROVIDER_NOT_REGISTERED          = 0x80041085,
172    WBEM_E_FATAL_TRANSPORT_ERROR            = 0x80041086,
173    WBEM_E_ENCRYPTED_CONNECTION_REQUIRED    = 0x80041087,
174    WBEM_E_PROVIDER_TIMED_OUT               = 0x80041088,
175    WBEM_E_NO_KEY                           = 0x80041089,
176    WBEM_E_PROVIDER_DISABLED                = 0x8004108a
177} WBEMSTATUS;
178
179typedef [v1_enum] enum tag_WBEM_STATUS_TYPE
180{
181    WBEM_STATUS_COMPLETE     = 0,
182    WBEM_STATUS_REQUIREMENTS = 1,
183    WBEM_STATUS_PROGRESS     = 2
184} WBEM_STATUS_TYPE;
185
186typedef [v1_enum] enum tag_WBEM_TIMEOUT_TYPE
187{
188    WBEM_NO_WAIT  = 0,
189    WBEM_INFINITE = 0xffffffff
190} WBEM_TIMEOUT_TYPE;
191
192typedef [v1_enum] enum tag_WBEM_CONDITION_FLAG_TYPE
193{
194    WBEM_FLAG_ALWAYS                    = 0,
195    WBEM_FLAG_ONLY_IF_TRUE              = 0x1,
196    WBEM_FLAG_ONLY_IF_FALSE             = 0x2,
197    WBEM_FLAG_ONLY_IF_IDENTICAL         = 0x3,
198    WBEM_MASK_PRIMARY_CONDITION         = 0x3,
199    WBEM_FLAG_KEYS_ONLY                 = 0x4,
200    WBEM_FLAG_REFS_ONLY                 = 0x8,
201    WBEM_FLAG_LOCAL_ONLY                = 0x10,
202    WBEM_FLAG_PROPAGATED_ONLY           = 0x20,
203    WBEM_FLAG_SYSTEM_ONLY               = 0x30,
204    WBEM_FLAG_NONSYSTEM_ONLY            = 0x40,
205    WBEM_MASK_CONDITION_ORIGIN          = 0x70,
206    WBEM_FLAG_CLASS_OVERRIDES_ONLY      = 0x100,
207    WBEM_FLAG_CLASS_LOCAL_AND_OVERRIDES = 0x200,
208    WBEM_MASK_CLASS_CONDITION           = 0x300
209} WBEM_CONDITION_FLAG_TYPE;
210
211typedef [v1_enum] enum tag_WBEM_FLAVOR_TYPE
212{
213    WBEM_FLAVOR_DONT_PROPAGATE                  = 0,
214    WBEM_FLAVOR_FLAG_PROPAGATE_TO_INSTANCE      = 0x1,
215    WBEM_FLAVOR_FLAG_PROPAGATE_TO_DERIVED_CLASS = 0x2,
216    WBEM_FLAVOR_MASK_PROPAGATION                = 0xf,
217    WBEM_FLAVOR_OVERRIDABLE                     = 0,
218    WBEM_FLAVOR_NOT_OVERRIDABLE                 = 0x10,
219    WBEM_FLAVOR_MASK_PERMISSIONS                = 0x10,
220    WBEM_FLAVOR_ORIGIN_LOCAL                    = 0,
221    WBEM_FLAVOR_ORIGIN_PROPAGATED               = 0x20,
222    WBEM_FLAVOR_ORIGIN_SYSTEM                   = 0x40,
223    WBEM_FLAVOR_MASK_ORIGIN                     = 0x60,
224    WBEM_FLAVOR_NOT_AMENDED                     = 0,
225    WBEM_FLAVOR_AMENDED                         = 0x80,
226    WBEM_FLAVOR_MASK_AMENDED                    = 0x80
227} WBEM_FLAVOR_TYPE;
228
229typedef [v1_enum] enum tag_WBEM_GENUS_TYPE
230{
231    WBEM_GENUS_CLASS = 1,
232    WBEM_GENUS_INSTANCE = 2
233} WBEM_GENUS_TYPE;
234
235typedef [v1_enum] enum tag_CIMTYPE_ENUMERATION
236{
237    CIM_ILLEGAL = 0xfff,
238    CIM_EMPTY   = 0,
239    CIM_SINT16  = 2,
240    CIM_SINT32  = 3,
241    CIM_REAL32  = 4,
242    CIM_REAL64  = 5,
243    CIM_STRING  = 8,
244    CIM_BOOLEAN = 11,
245    CIM_OBJECT  = 13,
246    CIM_SINT8   = 16,
247    CIM_UINT8   = 17,
248    CIM_UINT16  = 18,
249    CIM_UINT32  = 19,
250    CIM_SINT64  = 20,
251    CIM_UINT64  = 21,
252    CIM_DATETIME   = 101,
253    CIM_REFERENCE  = 102,
254    CIM_CHAR16     = 103,
255    CIM_FLAG_ARRAY = 0x2000
256} CIMTYPE_ENUMERATION;
257
258typedef long CIMTYPE;
259
260[
261    object,
262    restricted,
263    local,
264    uuid(dc12a687-737f-11cf-884d-00aa004b2e24),
265    pointer_default(unique)
266]
267interface IWbemLocator : IUnknown
268{
269    HRESULT ConnectServer(
270        [in] const BSTR strNetworkResource,
271        [in] const BSTR strUser,
272        [in] const BSTR strPassword,
273        [in] const BSTR strLocale,
274        [in] LONG lSecurityFlags,
275        [in] const BSTR strAuthority,
276        [in] IWbemContext *pCtx,
277        [out] IWbemServices **ppNamespace);
278};
279
280[
281    object,
282    local,
283    uuid(eb87e1bc-3233-11d2-aec9-00c04fb68820)
284]
285interface IWbemStatusCodeText : IUnknown
286{
287    HRESULT GetErrorCodeText(
288        [in] HRESULT hRes,
289        [in] LCID LocaleId,
290        [in] LONG lFlags,
291        [out] BSTR *MessageText);
292
293    HRESULT GetFacilityCodeText(
294        [in] HRESULT hRes,
295        [in] LCID LocaleId,
296        [in] LONG lFlags,
297        [out] BSTR *MessageText);
298};
299
300[
301    object,
302    restricted,
303    uuid(7c857801-7381-11cf-884d-00aa004b2e24)
304]
305interface IWbemObjectSink : IUnknown
306{
307    HRESULT Indicate(
308        [in] long lObjectCount,
309        [in, size_is(lObjectCount)] IWbemClassObject **apObjArray);
310
311    HRESULT SetStatus(
312        [in] long lFlags,
313        [in] HRESULT hResult,
314        [in] BSTR strParam,
315        [in] IWbemClassObject *pObjParam);
316};
317
318typedef [v1_enum] enum tag_WBEM_GENERIC_FLAG_TYPE
319{
320    WBEM_FLAG_RETURN_WBEM_COMPLETE      = 0,
321    WBEM_FLAG_BIDIRECTIONAL             = 0,
322    WBEM_FLAG_RETURN_ERROR_OBJECT       = 0,
323    WBEM_FLAG_DONT_SEND_STATUS          = 0,
324    WBEM_FLAG_SEND_ONLY_SELECTED        = 0,
325    WBEM_FLAG_RETURN_IMMEDIATELY        = 0x10,
326    WBEM_FLAG_FORWARD_ONLY              = 0x20,
327    WBEM_FLAG_NO_ERROR_OBJECT           = 0x40,
328    WBEM_FLAG_SEND_STATUS               = 0x80,
329    WBEM_FLAG_ENSURE_LOCATABLE          = 0x100,
330    WBEM_FLAG_DIRECT_READ               = 0x200,
331    WBEM_MASK_RESERVED_FLAGS            = 0x1f000,
332    WBEM_FLAG_USE_AMENDED_QUALIFIERS    = 0x20000,
333    WBEM_FLAG_STRONG_VALIDATION         = 0x100000
334} WBEM_GENERIC_FLAG_TYPE;
335
336[
337    object,
338    restricted,
339    uuid(9556dc99-828c-11cf-a37e-00aa003240c7),
340    pointer_default(unique)
341]
342interface IWbemServices : IUnknown
343{
344    HRESULT OpenNamespace(
345        [in] const BSTR strNamespace,
346        [in] long lFlags,
347        [in] IWbemContext *pCtx,
348        [out] IWbemServices **ppWorkingNamespace,
349        [out] IWbemCallResult **ppResult);
350
351    HRESULT CancelAsyncCall(
352        [in] IWbemObjectSink *pSink);
353
354    HRESULT QueryObjectSink(
355        [in] long lFlags,
356        [out] IWbemObjectSink **ppResponseHandler);
357
358    HRESULT GetObject(
359        [in] const BSTR strObjectPath,
360        [in] long lFlags,
361        [in] IWbemContext *pCtx,
362        [out] IWbemClassObject **ppObject,
363        [out] IWbemCallResult **ppCallResult);
364
365    HRESULT GetObjectAsync(
366        [in] const BSTR strObjectPath,
367        [in] long lFlags,
368        [in] IWbemContext *pCtx,
369        [in] IWbemObjectSink *pResponseHandler);
370
371    HRESULT PutClass(
372        [in] IWbemClassObject *pObject,
373        [in] long lFlags,
374        [in] IWbemContext *pCtx,
375        [out] IWbemCallResult **ppCallResult);
376
377    HRESULT PutClassAsync(
378        [in] IWbemClassObject *pObject,
379        [in] long lFlags,
380        [in] IWbemContext *pCtx,
381        [in] IWbemObjectSink *pResponseHandler);
382
383    HRESULT DeleteClass(
384        [in] const BSTR strClass,
385        [in] long lFlags,
386        [in] IWbemContext *pCtx,
387        [out] IWbemCallResult **ppCallResult);
388
389    HRESULT DeleteClassAsync(
390        [in] const BSTR strClass,
391        [in] long lFlags,
392        [in] IWbemContext *pCtx,
393        [in] IWbemObjectSink *pResponseHandler);
394
395    HRESULT CreateClassEnum(
396        [in] const BSTR strSuperclass,
397        [in] long lFlags,
398        [in] IWbemContext *pCtx,
399        [out] IEnumWbemClassObject **ppEnum);
400
401    HRESULT CreateClassEnumAsync(
402        [in] const BSTR strSuperclass,
403        [in] long lFlags,
404        [in] IWbemContext *pCtx,
405        [in] IWbemObjectSink *pResponseHandler);
406
407    HRESULT PutInstance(
408        [in] IWbemClassObject *pInst,
409        [in] long lFlags,
410        [in] IWbemContext *pCtx,
411        [out] IWbemCallResult **ppCallResult);
412
413    HRESULT PutInstanceAsync(
414        [in] IWbemClassObject *pInst,
415        [in] long lFlags,
416        [in] IWbemContext *pCtx,
417        [in] IWbemObjectSink *pResponseHandler);
418
419    HRESULT DeleteInstance(
420        [in] const BSTR strObjectPath,
421        [in] long lFlags,
422        [in] IWbemContext *pCtx,
423        [out] IWbemCallResult **ppCallResult);
424
425    HRESULT DeleteInstanceAsync(
426        [in] const BSTR strObjectPath,
427        [in] long lFlags,
428        [in] IWbemContext *pCtx,
429        [in] IWbemObjectSink *pResponseHandler);
430
431    HRESULT CreateInstanceEnum(
432        [in] const BSTR strFilter,
433        [in] long lFlags,
434        [in] IWbemContext *pCtx,
435        [out] IEnumWbemClassObject **ppEnum);
436
437    HRESULT CreateInstanceEnumAsync(
438        [in] const BSTR strFilter,
439        [in] long lFlags,
440        [in] IWbemContext *pCtx,
441        [in] IWbemObjectSink *pResponseHandler);
442
443    HRESULT ExecQuery(
444        [in] const BSTR strQueryLanguage,
445        [in] const BSTR strQuery,
446        [in] long lFlags,
447        [in] IWbemContext *pCtx,
448        [out] IEnumWbemClassObject **ppEnum);
449
450    HRESULT ExecQueryAsync(
451        [in] const BSTR strQueryLanguage,
452        [in] const BSTR strQuery,
453        [in] long lFlags,
454        [in] IWbemContext *pCtx,
455        [in] IWbemObjectSink *pResponseHandler);
456
457    HRESULT ExecNotificationQuery(
458        [in] const BSTR strQueryLanguage,
459        [in] const BSTR strQuery,
460        [in] long lFlags,
461        [in] IWbemContext *pCtx,
462        [out] IEnumWbemClassObject **ppEnum);
463
464    HRESULT ExecNotificationQueryAsync(
465        [in] const BSTR strQueryLanguage,
466        [in] const BSTR strQuery,
467        [in] long lFlags,
468        [in] IWbemContext *pCtx,
469        [in] IWbemObjectSink *pResponseHandler);
470
471    HRESULT ExecMethod(
472        [in] const BSTR strObjectPath,
473        [in] const BSTR strMethodName,
474        [in] long lFlags,
475        [in] IWbemContext *pCtx,
476        [in] IWbemClassObject *pInParams,
477        [out] IWbemClassObject **ppOutParams,
478        [out] IWbemCallResult **ppCallResult);
479
480    HRESULT ExecMethodAsync(
481        [in] const BSTR strObjectPath,
482        [in] const BSTR strMethodName,
483        [in] long lFlags,
484        [in] IWbemContext *pCtx,
485        [in] IWbemClassObject *pInParams,
486        [in] IWbemObjectSink *pResponseHandler);
487};
488
489[
490    object,
491    restricted,
492    uuid(027947e1-d731-11ce-a357-000000000001)
493]
494interface IEnumWbemClassObject : IUnknown
495{
496    HRESULT Reset();
497
498    HRESULT Next(
499        [in] long lTimeout,
500        [in] ULONG uCount,
501        [out, size_is(uCount), length_is(*puReturned)] IWbemClassObject **apObjects,
502        [out] ULONG *puReturned);
503
504    HRESULT NextAsync(
505        [in] ULONG uCount,
506        [in] IWbemObjectSink *pSink);
507
508    HRESULT Clone(
509        [out] IEnumWbemClassObject **ppEnum);
510
511    HRESULT Skip(
512        [in] long lTimeout,
513        [in] ULONG nCount);
514};
515
516[
517    object,
518    restricted,
519    local,
520    uuid(dc12a681-737f-11cf-884d-00aa004b2e24)
521]
522interface IWbemClassObject : IUnknown
523{
524    HRESULT GetQualifierSet(
525        [out] IWbemQualifierSet **ppQualSet);
526
527    HRESULT Get(
528        [in,string] LPCWSTR wszName,
529        [in] long lFlags,
530        [out] VARIANT *pVal,
531        [out] CIMTYPE *pType,
532        [out] long *plFlavor);
533
534    HRESULT Put(
535        [in,string] LPCWSTR wszName,
536        [in] long lFlags,
537        [in] VARIANT *pVal,
538        [in] CIMTYPE Type);
539
540    HRESULT Delete(
541        [in,string] LPCWSTR wszName);
542
543    HRESULT GetNames(
544        [in,string] LPCWSTR wszQualifierName,
545        [in] long lFlags,
546        [in] VARIANT *pQualifierVal,
547        [out] SAFEARRAY **pNames);
548
549    HRESULT BeginEnumeration(
550        [in] long lEnumFlags);
551
552    HRESULT Next(
553        [in] long lFlags,
554        [out] BSTR *strName,
555        [out] VARIANT *pVal,
556        [out] CIMTYPE *pType,
557        [out] long *plFlavor);
558
559    HRESULT EndEnumeration();
560
561    HRESULT GetPropertyQualifierSet(
562        [in,string] LPCWSTR wszProperty,
563        [out] IWbemQualifierSet **ppQualSet);
564
565    HRESULT Clone(
566        [out] IWbemClassObject **ppCopy);
567
568    HRESULT GetObjectText(
569        [in] long lFlags,
570        [out] BSTR *pstrObjectText);
571
572    HRESULT SpawnDerivedClass(
573        [in] long lFlags,
574        [out] IWbemClassObject **ppNewClass);
575
576    HRESULT SpawnInstance(
577        [in] long lFlags,
578        [out] IWbemClassObject **ppNewInstance);
579
580    HRESULT CompareTo(
581        [in] long lFlags,
582        [in] IWbemClassObject *pCompareTo);
583
584    HRESULT GetPropertyOrigin(
585        [in,string] LPCWSTR wszName,
586        [out] BSTR *pstrClassName);
587
588    HRESULT InheritsFrom(
589        [in] LPCWSTR strAncestor);
590
591    HRESULT GetMethod(
592        [in,string] LPCWSTR wszName,
593        [in] long lFlags,
594        [out] IWbemClassObject **ppInSignature,
595        [out] IWbemClassObject **ppOutSignature);
596
597    HRESULT PutMethod(
598        [in,string] LPCWSTR wszName,
599        [in] long lFlags,
600        [in] IWbemClassObject *pInSignature,
601        [in] IWbemClassObject *pOutSignature);
602
603    HRESULT DeleteMethod(
604        [in,string] LPCWSTR wszName);
605
606    HRESULT BeginMethodEnumeration(
607        [in] long lEnumFlags);
608
609    HRESULT NextMethod(
610        [in] long lFlags,
611        [out] BSTR *pstrName,
612        [out] IWbemClassObject **ppInSignature,
613        [out] IWbemClassObject **ppOutSignature);
614
615    HRESULT EndMethodEnumeration();
616
617    HRESULT GetMethodQualifierSet(
618        [in,string] LPCWSTR wszMethod,
619        [out] IWbemQualifierSet **ppQualSet);
620
621    HRESULT GetMethodOrigin(
622        [in,string] LPCWSTR wszMethodName,
623        [out] BSTR *pstrClassName);
624}
625
626[
627    object,
628    restricted,
629    local,
630    uuid(dc12a680-737f-11cf-884d-00aa004b2e24)
631]
632interface IWbemQualifierSet : IUnknown
633{
634    HRESULT Get(
635        [in,string] LPCWSTR wszName,
636        [in] long lFlags,
637        [out] VARIANT *pVal,
638        [out] long *plFlavor);
639
640    HRESULT Put(
641        [in,string] LPCWSTR wszName,
642        [in] VARIANT *pVal,
643        [in] long lFlavor);
644
645    HRESULT Delete(
646        [in,string] LPCWSTR wszName);
647
648    HRESULT GetNames(
649        [in] long lFlags,
650        [out] SAFEARRAY **pNames);
651
652    HRESULT BeginEnumeration(
653        [in] long lFlags);
654
655    HRESULT Next(
656        [in] long lFlags,
657        [out] BSTR *pstrName,
658        [out] VARIANT *pVal,
659        [out] long *plFlavor);
660
661    HRESULT EndEnumeration();
662};
663