ddraw: Avoid LPDDSURFACEDESC2.
[wine] / include / wbemcli.idl
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
19 cpp_quote("DEFINE_GUID(CLSID_WbemLocator, 0x4590f811,0x1d3A,0x11d0,0x89,0x1f,0x00,0xaa,0x00,0x4b,0x2e,0x24);")
20 cpp_quote("DEFINE_GUID(CLSID_WbemStatusCode, 0xeb87e1bd,0x3233,0x11d2,0xae,0xc9,0x00,0xc0,0x4f,0xb6,0x88,0x20);")
21
22 import "oaidl.idl";
23 import "objidl.idl";
24
25 interface IWbemContext;
26 interface IWbemServices;
27 interface IWbemStatusCodeText;
28 interface IWbemCallResult;
29 interface IWbemObjectSink;
30 interface IWbemClassObject;
31 interface IEnumWbemClassObject;
32 interface IWbemQualifierSet;
33
34 typedef [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
179 typedef [v1_enum] enum tag_WBEM_TIMEOUT_TYPE
180 {
181     WBEM_NO_WAIT  = 0,
182     WBEM_INFINITE = 0xffffffff
183 } WBEM_TIMEOUT_TYPE;
184
185 typedef [v1_enum] enum tag_WBEM_CONDITION_FLAG_TYPE
186 {
187     WBEM_FLAG_ALWAYS                    = 0,
188     WBEM_FLAG_ONLY_IF_TRUE              = 0x1,
189     WBEM_FLAG_ONLY_IF_FALSE             = 0x2,
190     WBEM_FLAG_ONLY_IF_IDENTICAL         = 0x3,
191     WBEM_MASK_PRIMARY_CONDITION         = 0x3,
192     WBEM_FLAG_KEYS_ONLY                 = 0x4,
193     WBEM_FLAG_REFS_ONLY                 = 0x8,
194     WBEM_FLAG_LOCAL_ONLY                = 0x10,
195     WBEM_FLAG_PROPAGATED_ONLY           = 0x20,
196     WBEM_FLAG_SYSTEM_ONLY               = 0x30,
197     WBEM_FLAG_NONSYSTEM_ONLY            = 0x40,
198     WBEM_MASK_CONDITION_ORIGIN          = 0x70,
199     WBEM_FLAG_CLASS_OVERRIDES_ONLY      = 0x100,
200     WBEM_FLAG_CLASS_LOCAL_AND_OVERRIDES = 0x200,
201     WBEM_MASK_CLASS_CONDITION           = 0x300
202 } WBEM_CONDITION_FLAG_TYPE;
203
204 typedef [v1_enum] enum tag_WBEM_FLAVOR_TYPE
205 {
206     WBEM_FLAVOR_DONT_PROPAGATE                  = 0,
207     WBEM_FLAVOR_FLAG_PROPAGATE_TO_INSTANCE      = 0x1,
208     WBEM_FLAVOR_FLAG_PROPAGATE_TO_DERIVED_CLASS = 0x2,
209     WBEM_FLAVOR_MASK_PROPAGATION                = 0xf,
210     WBEM_FLAVOR_OVERRIDABLE                     = 0,
211     WBEM_FLAVOR_NOT_OVERRIDABLE                 = 0x10,
212     WBEM_FLAVOR_MASK_PERMISSIONS                = 0x10,
213     WBEM_FLAVOR_ORIGIN_LOCAL                    = 0,
214     WBEM_FLAVOR_ORIGIN_PROPAGATED               = 0x20,
215     WBEM_FLAVOR_ORIGIN_SYSTEM                   = 0x40,
216     WBEM_FLAVOR_MASK_ORIGIN                     = 0x60,
217     WBEM_FLAVOR_NOT_AMENDED                     = 0,
218     WBEM_FLAVOR_AMENDED                         = 0x80,
219     WBEM_FLAVOR_MASK_AMENDED                    = 0x80
220 } WBEM_FLAVOR_TYPE;
221
222 typedef [v1_enum] enum tag_WBEM_GENUS_TYPE
223 {
224     WBEM_GENUS_CLASS = 1,
225     WBEM_GENUS_INSTANCE = 2
226 } WBEM_GENUS_TYPE;
227
228 typedef [v1_enum] enum tag_CIMTYPE_ENUMERATION
229 {
230     CIM_ILLEGAL = 0xfff,
231     CIM_EMPTY   = 0,
232     CIM_SINT16  = 2,
233     CIM_SINT32  = 3,
234     CIM_REAL32  = 4,
235     CIM_REAL64  = 5,
236     CIM_STRING  = 8,
237     CIM_BOOLEAN = 11,
238     CIM_OBJECT  = 13,
239     CIM_SINT8   = 16,
240     CIM_UINT8   = 17,
241     CIM_UINT16  = 18,
242     CIM_UINT32  = 19,
243     CIM_SINT64  = 20,
244     CIM_UINT64  = 21,
245     CIM_DATETIME   = 101,
246     CIM_REFERENCE  = 102,
247     CIM_CHAR16     = 103,
248     CIM_FLAG_ARRAY = 0x2000
249 } CIMTYPE_ENUMERATION;
250
251 typedef long CIMTYPE;
252
253 [
254     object,
255     restricted,
256     local,
257     uuid(dc12a687-737f-11cf-884d-00aa004b2e24),
258     pointer_default(unique)
259 ]
260 interface IWbemLocator : IUnknown
261 {
262     HRESULT ConnectServer(
263         [in] const BSTR strNetworkResource,
264         [in] const BSTR strUser,
265         [in] const BSTR strPassword,
266         [in] const BSTR strLocale,
267         [in] LONG lSecurityFlags,
268         [in] const BSTR strAuthority,
269         [in] IWbemContext *pCtx,
270         [out] IWbemServices **ppNamespace);
271 };
272
273 [
274     object,
275     local,
276     uuid(eb87e1bc-3233-11d2-aec9-00c04fb68820)
277 ]
278 interface IWbemStatusCodeText : IUnknown
279 {
280     HRESULT GetErrorCodeText(
281         [in] HRESULT hRes,
282         [in] LCID LocaleId,
283         [in] LONG lFlags,
284         [out] BSTR *MessageText);
285
286     HRESULT GetFacilityCodeText(
287         [in] HRESULT hRes,
288         [in] LCID LocaleId,
289         [in] LONG lFlags,
290         [out] BSTR *MessageText);
291 };
292
293 typedef [v1_enum] enum tag_WBEM_GENERIC_FLAG_TYPE
294 {
295     WBEM_FLAG_RETURN_WBEM_COMPLETE      = 0,
296     WBEM_FLAG_BIDIRECTIONAL             = 0,
297     WBEM_FLAG_RETURN_ERROR_OBJECT       = 0,
298     WBEM_FLAG_DONT_SEND_STATUS          = 0,
299     WBEM_FLAG_SEND_ONLY_SELECTED        = 0,
300     WBEM_FLAG_RETURN_IMMEDIATELY        = 0x10,
301     WBEM_FLAG_FORWARD_ONLY              = 0x20,
302     WBEM_FLAG_NO_ERROR_OBJECT           = 0x40,
303     WBEM_FLAG_SEND_STATUS               = 0x80,
304     WBEM_FLAG_ENSURE_LOCATABLE          = 0x100,
305     WBEM_FLAG_DIRECT_READ               = 0x200,
306     WBEM_MASK_RESERVED_FLAGS            = 0x1f000,
307     WBEM_FLAG_USE_AMENDED_QUALIFIERS    = 0x20000,
308     WBEM_FLAG_STRONG_VALIDATION         = 0x100000
309 } WBEM_GENERIC_FLAG_TYPE;
310
311 [
312     object,
313     restricted,
314     uuid(9556dc99-828c-11cf-a37e-00aa003240c7),
315     pointer_default(unique)
316 ]
317 interface IWbemServices : IUnknown
318 {
319     HRESULT OpenNamespace(
320         [in] const BSTR strNamespace,
321         [in] long lFlags,
322         [in] IWbemContext *pCtx,
323         [out] IWbemServices **ppWorkingNamespace,
324         [out] IWbemCallResult **ppResult);
325
326     HRESULT CancelAsyncCall(
327         [in] IWbemObjectSink *pSink);
328
329     HRESULT QueryObjectSink(
330         [in] long lFlags,
331         [out] IWbemObjectSink **ppResponseHandler);
332
333     HRESULT GetObject(
334         [in] const BSTR strObjectPath,
335         [in] long lFlags,
336         [in] IWbemContext *pCtx,
337         [out] IWbemClassObject **ppObject,
338         [out] IWbemCallResult **ppCallResult);
339
340     HRESULT GetObjectAsync(
341         [in] const BSTR strObjectPath,
342         [in] long lFlags,
343         [in] IWbemContext *pCtx,
344         [in] IWbemObjectSink *pResponseHandler);
345
346     HRESULT PutClass(
347         [in] IWbemClassObject *pObject,
348         [in] long lFlags,
349         [in] IWbemContext *pCtx,
350         [out] IWbemCallResult **ppCallResult);
351
352     HRESULT PutClassAsync(
353         [in] IWbemClassObject *pObject,
354         [in] long lFlags,
355         [in] IWbemContext *pCtx,
356         [in] IWbemObjectSink *pResponseHandler);
357
358     HRESULT DeleteClass(
359         [in] const BSTR strClass,
360         [in] long lFlags,
361         [in] IWbemContext *pCtx,
362         [out] IWbemCallResult **ppCallResult);
363
364     HRESULT DeleteClassAsync(
365         [in] const BSTR strClass,
366         [in] long lFlags,
367         [in] IWbemContext *pCtx,
368         [in] IWbemObjectSink *pResponseHandler);
369
370     HRESULT CreateClassEnum(
371         [in] const BSTR strSuperclass,
372         [in] long lFlags,
373         [in] IWbemContext *pCtx,
374         [out] IEnumWbemClassObject **ppEnum);
375
376     HRESULT CreateClassEnumAsync(
377         [in] const BSTR strSuperclass,
378         [in] long lFlags,
379         [in] IWbemContext *pCtx,
380         [in] IWbemObjectSink *pResponseHandler);
381
382     HRESULT PutInstance(
383         [in] IWbemClassObject *pInst,
384         [in] long lFlags,
385         [in] IWbemContext *pCtx,
386         [out] IWbemCallResult **ppCallResult);
387
388     HRESULT PutInstanceAsync(
389         [in] IWbemClassObject *pInst,
390         [in] long lFlags,
391         [in] IWbemContext *pCtx,
392         [in] IWbemObjectSink *pResponseHandler);
393
394     HRESULT DeleteInstance(
395         [in] const BSTR strObjectPath,
396         [in] long lFlags,
397         [in] IWbemContext *pCtx,
398         [out] IWbemCallResult **ppCallResult);
399
400     HRESULT DeleteInstanceAsync(
401         [in] const BSTR strObjectPath,
402         [in] long lFlags,
403         [in] IWbemContext *pCtx,
404         [in] IWbemObjectSink *pResponseHandler);
405
406     HRESULT CreateInstanceEnum(
407         [in] const BSTR strFilter,
408         [in] long lFlags,
409         [in] IWbemContext *pCtx,
410         [out] IEnumWbemClassObject **ppEnum);
411
412     HRESULT CreateInstanceEnumAsync(
413         [in] const BSTR strFilter,
414         [in] long lFlags,
415         [in] IWbemContext *pCtx,
416         [in] IWbemObjectSink *pResponseHandler);
417
418     HRESULT ExecQuery(
419         [in] const BSTR strQueryLanguage,
420         [in] const BSTR strQuery,
421         [in] long lFlags,
422         [in] IWbemContext *pCtx,
423         [out] IEnumWbemClassObject **ppEnum);
424
425     HRESULT ExecQueryAsync(
426         [in] const BSTR strQueryLanguage,
427         [in] const BSTR strQuery,
428         [in] long lFlags,
429         [in] IWbemContext *pCtx,
430         [in] IWbemObjectSink *pResponseHandler);
431
432     HRESULT ExecNotificationQuery(
433         [in] const BSTR strQueryLanguage,
434         [in] const BSTR strQuery,
435         [in] long lFlags,
436         [in] IWbemContext *pCtx,
437         [out] IEnumWbemClassObject **ppEnum);
438
439     HRESULT ExecNotificationQueryAsync(
440         [in] const BSTR strQueryLanguage,
441         [in] const BSTR strQuery,
442         [in] long lFlags,
443         [in] IWbemContext *pCtx,
444         [in] IWbemObjectSink *pResponseHandler);
445
446     HRESULT ExecMethod(
447         [in] const BSTR strObjectPath,
448         [in] const BSTR strMethodName,
449         [in] long lFlags,
450         [in] IWbemContext *pCtx,
451         [in] IWbemClassObject *pInParams,
452         [out] IWbemClassObject **ppOutParams,
453         [out] IWbemCallResult **ppCallResult);
454
455     HRESULT ExecMethodAsync(
456         [in] const BSTR strObjectPath,
457         [in] const BSTR strMethodName,
458         [in] long lFlags,
459         [in] IWbemContext *pCtx,
460         [in] IWbemClassObject *pInParams,
461         [in] IWbemObjectSink *pResponseHandler);
462 };
463
464 [
465     object,
466     restricted,
467     uuid(027947e1-d731-11ce-a357-000000000001)
468 ]
469 interface IEnumWbemClassObject : IUnknown
470 {
471     HRESULT Reset();
472
473     HRESULT Next(
474         [in] long lTimeout,
475         [in] ULONG uCount,
476         [out, size_is(uCount), length_is(*puReturned)] IWbemClassObject **apObjects,
477         [out] ULONG *puReturned);
478
479     HRESULT NextAsync(
480         [in] ULONG uCount,
481         [in] IWbemObjectSink *pSink);
482
483     HRESULT Clone(
484         [out] IEnumWbemClassObject **ppEnum);
485
486     HRESULT Skip(
487         [in] long lTimeout,
488         [in] ULONG nCount);
489 };
490
491 [
492     object,
493     restricted,
494     local,
495     uuid(dc12a681-737f-11cf-884d-00aa004b2e24)
496 ]
497 interface IWbemClassObject : IUnknown
498 {
499     HRESULT GetQualifierSet(
500         [out] IWbemQualifierSet **ppQualSet);
501
502     HRESULT Get(
503         [in,string] LPCWSTR wszName,
504         [in] long lFlags,
505         [out] VARIANT *pVal,
506         [out] CIMTYPE *pType,
507         [out] long *plFlavor);
508
509     HRESULT Put(
510         [in,string] LPCWSTR wszName,
511         [in] long lFlags,
512         [in] VARIANT *pVal,
513         [in] CIMTYPE Type);
514
515     HRESULT Delete(
516         [in,string] LPCWSTR wszName);
517
518     HRESULT GetNames(
519         [in,string] LPCWSTR wszQualifierName,
520         [in] long lFlags,
521         [in] VARIANT *pQualifierVal,
522         [out] SAFEARRAY **pNames);
523
524     HRESULT BeginEnumeration(
525         [in] long lEnumFlags);
526
527     HRESULT Next(
528         [in] long lFlags,
529         [out] BSTR *strName,
530         [out] VARIANT *pVal,
531         [out] CIMTYPE *pType,
532         [out] long *plFlavor);
533
534     HRESULT EndEnumeration();
535
536     HRESULT GetPropertyQualifierSet(
537         [in,string] LPCWSTR wszProperty,
538         [out] IWbemQualifierSet **ppQualSet);
539
540     HRESULT Clone(
541         [out] IWbemClassObject **ppCopy);
542
543     HRESULT GetObjectText(
544         [in] long lFlags,
545         [out] BSTR *pstrObjectText);
546
547     HRESULT SpawnDerivedClass(
548         [in] long lFlags,
549         [out] IWbemClassObject **ppNewClass);
550
551     HRESULT SpawnInstance(
552         [in] long lFlags,
553         [out] IWbemClassObject **ppNewInstance);
554
555     HRESULT CompareTo(
556         [in] long lFlags,
557         [in] IWbemClassObject *pCompareTo);
558
559     HRESULT GetPropertyOrigin(
560         [in,string] LPCWSTR wszName,
561         [out] BSTR *pstrClassName);
562
563     HRESULT InheritsFrom(
564         [in] LPCWSTR strAncestor);
565
566     HRESULT GetMethod(
567         [in,string] LPCWSTR wszName,
568         [in] long lFlags,
569         [out] IWbemClassObject **ppInSignature,
570         [out] IWbemClassObject **ppOutSignature);
571
572     HRESULT PutMethod(
573         [in,string] LPCWSTR wszName,
574         [in] long lFlags,
575         [in] IWbemClassObject *pInSignature,
576         [in] IWbemClassObject *pOutSignature);
577
578     HRESULT DeleteMethod(
579         [in,string] LPCWSTR wszName);
580
581     HRESULT BeginMethodEnumeration(
582         [in] long lEnumFlags);
583
584     HRESULT NextMethod(
585         [in] long lFlags,
586         [out] BSTR *pstrName,
587         [out] IWbemClassObject **ppInSignature,
588         [out] IWbemClassObject **ppOutSignature);
589
590     HRESULT EndMethodEnumeration();
591
592     HRESULT GetMethodQualifierSet(
593         [in,string] LPCWSTR wszMethod,
594         [out] IWbemQualifierSet **ppQualSet);
595
596     HRESULT GetMethodOrigin(
597         [in,string] LPCWSTR wszMethodName,
598         [out] BSTR *pstrClassName);
599 }