Remove more hand-written marshallers.
[kai/samba-autobuild/.git] / source4 / librpc / idl / wmi.idl
1 /* 
2  * WMI IDL.  
3  * See http://en.wikipedia.org/wiki/Windows_Management_Instrumentation for more information.
4  */
5 #include "idl_types.h"
6
7 import "dcom.idl";
8 import "misc.idl";
9
10 [
11         helper("librpc/ndr/ndr_wmi.h"),
12         uuid("8BC3F05E-D86B-11d0-A075-00C04FB68820")
13 ] coclass WbemLevel1Login
14 {
15     interface IWbemLevel1Login;
16
17 };
18
19 [
20         local, 
21         object, 
22         uuid("dc12a681-737f-11cf-884d-00aa004b2e24")
23 ]
24 interface IWbemClassObject : IUnknown
25 {
26
27         typedef [noprint] struct {
28                 [value(0x72657355)] uint32 flags;
29                 [string, charset(UTF16)] uint16 data[];
30         } BSTR;
31
32     WERROR Delete(
33         [in, string, charset(UTF16)] uint16 *wszName
34         );
35
36 };
37
38 [
39     uuid(9A653086-174F-11d2-B5F9-00104B703EFD)
40 ]
41 coclass WbemClassObject
42 {
43             interface IWbemClassObject;
44 };
45
46
47 [
48         uuid("9556dc99-828c-11cf-a37e-00aa003240c7"),
49         object,
50         pointer_default(unique)
51 ] interface IWbemServices : IUnknown
52 {
53     typedef [v1_enum] enum
54     {
55         RPC_S_CALL_FAILED               = 1726,
56
57         WBEM_NO_ERROR = 0,
58         WBEM_S_NO_ERROR = 0,
59         WBEM_S_SAME = 0,
60         WBEM_S_FALSE = 1,
61         WBEM_S_ALREADY_EXISTS           = 0x40001,
62         WBEM_S_RESET_TO_DEFAULT         = 0x40002,
63         WBEM_S_DIFFERENT                = 0x40003,
64         WBEM_S_TIMEDOUT                 = 0x40004,
65         WBEM_S_NO_MORE_DATA             = 0x40005,
66         WBEM_S_OPERATION_CANCELLED      = 0x40006,
67         WBEM_S_PENDING                  = 0x40007,
68         WBEM_S_DUPLICATE_OBJECTS        = 0x40008,
69         WBEM_S_ACCESS_DENIED            = 0x40009,
70         WBEM_S_PARTIAL_RESULTS          = 0x40010,
71         WBEM_S_NO_POSTHOOK              = 0x40011,
72         WBEM_S_POSTHOOK_WITH_BOTH       = 0x40012,
73         WBEM_S_POSTHOOK_WITH_NEW        = 0x40013,
74         WBEM_S_POSTHOOK_WITH_STATUS     = 0x40014,
75         WBEM_S_POSTHOOK_WITH_OLD        = 0x40015,
76         WBEM_S_REDO_PREHOOK_WITH_ORIGINAL_OBJECT = 0x40016,
77         WBEM_S_SOURCE_NOT_AVAILABLE     = 0x40017,
78         WBEM_E_FAILED                           = 0x80041001,
79         WBEM_E_NOT_FOUND                        = 0x80041002,
80         WBEM_E_ACCESS_DENIED                    = 0x80041003,
81         WBEM_E_PROVIDER_FAILURE                 = 0x80041004,
82         WBEM_E_TYPE_MISMATCH                    = 0x80041005,
83         WBEM_E_OUT_OF_MEMORY                    = 0x80041006,
84         WBEM_E_INVALID_CONTEXT                  = 0x80041007,
85         WBEM_E_INVALID_PARAMETER                = 0x80041008,
86         WBEM_E_NOT_AVAILABLE                    = 0x80041009,
87         WBEM_E_CRITICAL_ERROR                   = 0x8004100A,
88         WBEM_E_INVALID_STREAM                   = 0x8004100B,
89         WBEM_E_NOT_SUPPORTED                    = 0x8004100C,
90         WBEM_E_INVALID_SUPERCLASS               = 0x8004100D,
91         WBEM_E_INVALID_NAMESPACE                = 0x8004100E,
92         WBEM_E_INVALID_OBJECT                   = 0x8004100F,
93         WBEM_E_INVALID_CLASS                    = 0x80041010,
94         WBEM_E_PROVIDER_NOT_FOUND               = 0x80041011,
95         WBEM_E_INVALID_PROVIDER_REGISTRATION    = 0x80041012,
96         WBEM_E_PROVIDER_LOAD_FAILURE            = 0x80041013,
97         WBEM_E_INITIALIZATION_FAILURE           = 0x80041014,
98         WBEM_E_TRANSPORT_FAILURE                = 0x80041015,
99         WBEM_E_INVALID_OPERATION                = 0x80041016,
100         WBEM_E_INVALID_QUERY                    = 0x80041017,
101         WBEM_E_INVALID_QUERY_TYPE               = 0x80041018,
102         WBEM_E_ALREADY_EXISTS                   = 0x80041019,
103         WBEM_E_OVERRIDE_NOT_ALLOWED             = 0x8004101A,
104         WBEM_E_PROPAGATED_QUALIFIER             = 0x8004101B,
105         WBEM_E_PROPAGATED_PROPERTY              = 0x8004101C,
106         WBEM_E_UNEXPECTED                       = 0x8004101D,
107         WBEM_E_ILLEGAL_OPERATION                = 0x8004101E,
108         WBEM_E_CANNOT_BE_KEY                    = 0x8004101F,
109         WBEM_E_INCOMPLETE_CLASS                 = 0x80041020,
110         WBEM_E_INVALID_SYNTAX                   = 0x80041021,
111         WBEM_E_NONDECORATED_OBJECT              = 0x80041022,
112         WBEM_E_READ_ONLY                        = 0x80041023,
113         WBEM_E_PROVIDER_NOT_CAPABLE             = 0x80041024,
114         WBEM_E_CLASS_HAS_CHILDREN               = 0x80041025,
115         WBEM_E_CLASS_HAS_INSTANCES              = 0x80041026,
116         WBEM_E_QUERY_NOT_IMPLEMENTED            = 0x80041027,
117         WBEM_E_ILLEGAL_NULL                     = 0x80041028,
118         WBEM_E_INVALID_QUALIFIER_TYPE           = 0x80041029,
119         WBEM_E_INVALID_PROPERTY_TYPE            = 0x8004102A,
120         WBEM_E_VALUE_OUT_OF_RANGE               = 0x8004102B,
121         WBEM_E_CANNOT_BE_SINGLETON              = 0x8004102C,
122         WBEM_E_INVALID_CIM_TYPE                 = 0x8004102D,
123         WBEM_E_INVALID_METHOD                   = 0x8004102E,
124         WBEM_E_INVALID_METHOD_PARAMETERS        = 0x8004102F,
125         WBEM_E_SYSTEM_PROPERTY                  = 0x80041030,
126         WBEM_E_INVALID_PROPERTY                 = 0x80041031,
127         WBEM_E_CALL_CANCELLED                   = 0x80041032,
128         WBEM_E_SHUTTING_DOWN                    = 0x80041033,
129         WBEM_E_PROPAGATED_METHOD                = 0x80041034,
130         WBEM_E_UNSUPPORTED_PARAMETER            = 0x80041035,
131         WBEM_E_MISSING_PARAMETER_ID             = 0x80041036,
132         WBEM_E_INVALID_PARAMETER_ID             = 0x80041037,
133         WBEM_E_NONCONSECUTIVE_PARAMETER_IDS     = 0x80041038,
134         WBEM_E_PARAMETER_ID_ON_RETVAL           = 0x80041039,
135         WBEM_E_INVALID_OBJECT_PATH              = 0x8004103A,
136         WBEM_E_OUT_OF_DISK_SPACE                = 0x8004103B,
137         WBEM_E_BUFFER_TOO_SMALL                 = 0x8004103C,
138         WBEM_E_UNSUPPORTED_PUT_EXTENSION        = 0x8004103D,
139         WBEM_E_UNKNOWN_OBJECT_TYPE              = 0x8004103E,
140         WBEM_E_UNKNOWN_PACKET_TYPE              = 0x8004103F,
141         WBEM_E_MARSHAL_VERSION_MISMATCH         = 0x80041040,
142         WBEM_E_MARSHAL_INVALID_SIGNATURE        = 0x80041041,
143         WBEM_E_INVALID_QUALIFIER                = 0x80041042,
144         WBEM_E_INVALID_DUPLICATE_PARAMETER      = 0x80041043,
145         WBEM_E_TOO_MUCH_DATA                    = 0x80041044,
146         WBEM_E_SERVER_TOO_BUSY                  = 0x80041045,
147         WBEM_E_INVALID_FLAVOR                   = 0x80041046,
148         WBEM_E_CIRCULAR_REFERENCE               = 0x80041047,
149         WBEM_E_UNSUPPORTED_CLASS_UPDATE         = 0x80041048,
150         WBEM_E_CANNOT_CHANGE_KEY_INHERITANCE    = 0x80041049,
151         WBEM_E_CANNOT_CHANGE_INDEX_INHERITANCE  = 0x80041050,
152         WBEM_E_TOO_MANY_PROPERTIES              = 0x80041051,
153         WBEM_E_UPDATE_TYPE_MISMATCH             = 0x80041052,
154         WBEM_E_UPDATE_OVERRIDE_NOT_ALLOWED      = 0x80041053,
155         WBEM_E_UPDATE_PROPAGATED_METHOD         = 0x80041054,
156         WBEM_E_METHOD_NOT_IMPLEMENTED           = 0x80041055,
157         WBEM_E_METHOD_DISABLED                  = 0x80041056,
158         WBEM_E_REFRESHER_BUSY                   = 0x80041057,
159         WBEM_E_UNPARSABLE_QUERY                 = 0x80041058,
160         WBEM_E_NOT_EVENT_CLASS                  = 0x80041059,
161         WBEM_E_MISSING_GROUP_WITHIN             = 0x8004105A,
162         WBEM_E_MISSING_AGGREGATION_LIST         = 0x8004105B,
163         WBEM_E_PROPERTY_NOT_AN_OBJECT           = 0x8004105C,
164         WBEM_E_AGGREGATING_BY_OBJECT            = 0x8004105D,
165         WBEM_E_UNINTERPRETABLE_PROVIDER_QUERY   = 0x8004105F,
166         WBEM_E_BACKUP_RESTORE_WINMGMT_RUNNING   = 0x80041060,
167         WBEM_E_QUEUE_OVERFLOW                   = 0x80041061,
168         WBEM_E_PRIVILEGE_NOT_HELD               = 0x80041062,
169         WBEM_E_INVALID_OPERATOR                 = 0x80041063,
170         WBEM_E_LOCAL_CREDENTIALS                = 0x80041064,
171         WBEM_E_CANNOT_BE_ABSTRACT               = 0x80041065,
172         WBEM_E_AMENDED_OBJECT                   = 0x80041066,
173         WBEM_E_CLIENT_TOO_SLOW                  = 0x80041067,
174         WBEM_E_NULL_SECURITY_DESCRIPTOR         = 0x80041068,
175         WBEM_E_TIMED_OUT                        = 0x80041069,
176         WBEM_E_INVALID_ASSOCIATION              = 0x8004106A,
177         WBEM_E_AMBIGUOUS_OPERATION              = 0x8004106B,
178         WBEM_E_QUOTA_VIOLATION                  = 0x8004106C,
179         WBEM_E_RESERVED_001                     = 0x8004106D,
180         WBEM_E_RESERVED_002                     = 0x8004106E,
181         WBEM_E_UNSUPPORTED_LOCALE               = 0x8004106F,
182         WBEM_E_HANDLE_OUT_OF_DATE               = 0x80041070,
183         WBEM_E_CONNECTION_FAILED                = 0x80041071,
184         WBEM_E_INVALID_HANDLE_REQUEST           = 0x80041072,
185         WBEM_E_PROPERTY_NAME_TOO_WIDE           = 0x80041073,
186         WBEM_E_CLASS_NAME_TOO_WIDE              = 0x80041074,
187         WBEM_E_METHOD_NAME_TOO_WIDE             = 0x80041075,
188         WBEM_E_QUALIFIER_NAME_TOO_WIDE          = 0x80041076,
189         WBEM_E_RERUN_COMMAND                    = 0x80041077,
190         WBEM_E_DATABASE_VER_MISMATCH            = 0x80041078,
191         WBEM_E_VETO_DELETE                      = 0x80041079,
192         WBEM_E_VETO_PUT                         = 0x8004107A,
193         WBEM_E_INVALID_LOCALE                   = 0x80041080,
194         WBEM_E_PROVIDER_SUSPENDED               = 0x80041081,
195         WBEM_E_SYNCHRONIZATION_REQUIRED         = 0x80041082,
196         WBEM_E_NO_SCHEMA                        = 0x80041083,
197         WBEM_E_PROVIDER_ALREADY_REGISTERED      = 0x80041084,
198         WBEM_E_PROVIDER_NOT_REGISTERED          = 0x80041085,
199         WBEM_E_FATAL_TRANSPORT_ERROR            = 0x80041086,
200         WBEM_E_ENCRYPTED_CONNECTION_REQUIRED    = 0x80041087,
201         WBEM_E_PROVIDER_TIMED_OUT               = 0x80041088,
202         WBEM_E_NO_KEY                           = 0x80041089,
203         WBEM_E_PROVIDER_DISABLED                = 0x8004108a
204     }   WBEMSTATUS;
205
206     typedef [public,noprint] enum
207     {
208         WBEM_FLAG_RETURN_WBEM_COMPLETE          = 0,
209         WBEM_FLAG_BIDIRECTIONAL                         = 0,
210         WBEM_FLAG_RETURN_IMMEDIATELY            = 0x000010,
211         WBEM_FLAG_FORWARD_ONLY                          = 0x000020,
212         WBEM_FLAG_NO_ERROR_OBJECT                       = 0x000040,
213         WBEM_FLAG_SEND_STATUS                           = 0x000080,
214         WBEM_FLAG_ENSURE_LOCATABLE                      = 0x000100,
215         WBEM_FLAG_DIRECT_READ                           = 0x000200,
216         WBEM_FLAG_USE_AMENDED_QUALIFIERS        = 0x020000,
217         WBEM_FLAG_STRONG_VALIDATION             = 0x100000,
218         WBEM_FLAG_RETURN_ERROR_OBJECT           = 0,
219         WBEM_FLAG_DONT_SEND_STATUS                      = 0,
220         WBEM_FLAG_SEND_ONLY_SELECTED            = 0,
221
222         WBEM_RETURN_WHEN_COMPLETE                       = 0,
223         WBEM_RETURN_IMMEDIATELY                         = WBEM_FLAG_RETURN_IMMEDIATELY,
224
225         WBEM_MASK_RESERVED_FLAGS                        = 0x001F000
226     } WBEM_GENERIC_FLAG_TYPE;
227
228     typedef [public,noprint,v1_enum] enum tag_WBEM_TIMEOUT_TYPE
229     {
230         WBEM_NO_WAIT = 0,
231         WBEM_INFINITE = 0xFFFFFFFF
232     } WBEM_TIMEOUT_TYPE;
233
234     typedef [public,v1_enum] enum
235     {
236         CIM_EMPTY               = 0,
237         CIM_SINT16              = 2,
238         CIM_SINT32              = 3,
239         CIM_REAL32              = 4,
240         CIM_REAL64              = 5,
241         CIM_STRING              = 8,
242
243         CIM_BOOLEAN     = 11,
244         CIM_OBJECT      = 13,
245         CIM_SINT8       = 16,
246         CIM_UINT8       = 17,
247         CIM_UINT16      = 18,
248         CIM_UINT32      = 19,
249         CIM_SINT64      = 20,
250         CIM_UINT64      = 21,
251         CIM_DATETIME    = 101,
252         CIM_REFERENCE   = 102,
253         CIM_CHAR16              = 103,
254
255         CIM_FLAG_ARRAY  = 0x2000,
256         CIM_ILLEGAL     = 0x0fff,
257         CIM_TYPEMASK    = 0x2fff,
258
259         CIM_ARR_SINT8 = CIM_FLAG_ARRAY | CIM_SINT8,
260         CIM_ARR_UINT8 = CIM_FLAG_ARRAY | CIM_UINT8,
261         CIM_ARR_SINT16 = CIM_FLAG_ARRAY | CIM_SINT16,
262         CIM_ARR_UINT16 = CIM_FLAG_ARRAY | CIM_UINT16,
263         CIM_ARR_SINT32 = CIM_FLAG_ARRAY | CIM_SINT32,
264         CIM_ARR_UINT32 = CIM_FLAG_ARRAY | CIM_UINT32,
265         CIM_ARR_SINT64 = CIM_FLAG_ARRAY | CIM_SINT64,
266         CIM_ARR_UINT64 = CIM_FLAG_ARRAY | CIM_UINT64,
267         CIM_ARR_REAL32 = CIM_FLAG_ARRAY | CIM_REAL32,
268         CIM_ARR_REAL64 = CIM_FLAG_ARRAY | CIM_REAL64,
269         CIM_ARR_BOOLEAN = CIM_FLAG_ARRAY | CIM_BOOLEAN,
270         CIM_ARR_STRING = CIM_FLAG_ARRAY | CIM_STRING,
271         CIM_ARR_DATETIME = CIM_FLAG_ARRAY | CIM_DATETIME,
272         CIM_ARR_REFERENCE = CIM_FLAG_ARRAY | CIM_REFERENCE,
273         CIM_ARR_CHAR16 = CIM_FLAG_ARRAY | CIM_CHAR16,
274         CIM_ARR_OBJECT = CIM_FLAG_ARRAY | CIM_OBJECT
275
276     } CIMTYPE_ENUMERATION;
277
278     typedef [public,bitmap8bit] bitmap
279     {
280         WBEM_FLAVOR_FLAG_PROPAGATE_TO_INSTANCE = 0x1,
281         WBEM_FLAVOR_FLAG_PROPAGATE_TO_DERIVED_CLASS = 0x2,
282 //        WBEM_FLAVOR_MASK_PROPAGATION = 0x0F,
283
284         WBEM_FLAVOR_NOT_OVERRIDABLE = 0x10,
285 //        WBEM_FLAVOR_MASK_PERMISSIONS = 0x10,
286
287         WBEM_FLAVOR_ORIGIN_PROPAGATED = 0x20,
288         WBEM_FLAVOR_ORIGIN_SYSTEM = 0x40,
289 //        WBEM_FLAVOR_MASK_ORIGIN = 0x60,
290
291         WBEM_FLAVOR_AMENDED = 0x80
292 //        WBEM_FLAVOR_MASK_AMENDED = 0x80
293
294     } WBEM_FLAVOR_TYPE;
295
296     typedef [public,bitmap8bit] bitmap
297     {
298                 WCF_DECORATIONS = 1,
299                 WCF_INSTANCE = 2,
300                 WCF_CLASS = 4,
301                 WCF_CLASS_PART_INTERNAL = 8
302         //      WCF_CLASS_PART_SHARED = 0x104
303     } WCO_FLAGS;
304
305     typedef [public,nopull,nopush] struct
306     {
307                 uint32 count;
308                 [ref,charset(UTF16)] uint16 *item[count];
309     } CIMSTRINGS;
310
311     typedef [public,bitmap8bit] bitmap {
312         DEFAULT_FLAG_EMPTY = 1,
313         DEFAULT_FLAG_INHERITED = 2
314     } DEFAULT_FLAGS;
315
316         WERROR OpenNamespace(
317                 [in] BSTR strNamespace,
318                 [in] long lFlags,
319                 [in] IWbemContext* pCtx,
320                 [out, in, unique] IWbemServices** ppWorkingNamespace,
321                 [out, in, unique] IWbemCallResult** ppResult
322                 );
323
324         WERROR CancelAsyncCall(
325                 [in] IWbemObjectSink* pSink
326                 );
327
328         WERROR QueryObjectSink(
329                 [in] long lFlags,
330                 [out] IWbemObjectSink** ppResponseHandler
331                 );
332
333         WERROR GetObject(
334                 [in] BSTR strObjectPath,
335                 [in] long lFlags,
336                 [in] IWbemContext* pCtx,
337                 [out, in, unique] IWbemClassObject** ppObject,
338                 [out, in, unique] IWbemCallResult** ppCallResult
339                 );
340
341
342         WERROR GetObjectAsync(
343                 [in] BSTR strObjectPath,
344                 [in] long lFlags,
345                 [in] IWbemContext* pCtx,
346                 [in] IWbemObjectSink* pResponseHandler
347                 );
348
349         WERROR PutClass(
350                 [in] IWbemClassObject* pObject,
351                 [in] long lFlags,
352                 [in] IWbemContext* pCtx,
353                 [out, in, unique] IWbemCallResult** ppCallResult
354                 );
355
356         WERROR PutClassAsync(
357                 [in] IWbemClassObject* pObject,
358                 [in] long lFlags,
359                 [in] IWbemContext* pCtx,
360                 [in] IWbemObjectSink* pResponseHandler
361                 );
362
363         WERROR DeleteClass(
364                 [in] BSTR strClass,
365                 [in] long lFlags,
366                 [in] IWbemContext* pCtx,
367                 [out, in, unique] IWbemCallResult** ppCallResult
368                 );
369
370         WERROR DeleteClassAsync(
371                 [in] BSTR strClass,
372                 [in] long lFlags,
373                 [in] IWbemContext* pCtx,
374                 [in] IWbemObjectSink* pResponseHandler
375                 );
376
377         WERROR CreateClassEnum(
378                 [in] BSTR strSuperclass,
379                 [in] long lFlags,
380                 [in] IWbemContext* pCtx,
381                 [out] IEnumWbemClassObject** ppEnum
382                 );
383
384         WERROR CreateClassEnumAsync(
385                 [in] BSTR strSuperclass,
386                 [in] long lFlags,
387                 [in] IWbemContext* pCtx,
388                 [in] IWbemObjectSink* pResponseHandler
389                 );
390
391         WERROR PutInstance(
392                 [in] IWbemClassObject* pInst,
393                 [in] long lFlags,
394                 [in] IWbemContext* pCtx,
395                 [out, in, unique] IWbemCallResult** ppCallResult
396                 );
397
398         WERROR PutInstanceAsync(
399                 [in] IWbemClassObject* pInst,
400                 [in] long lFlags,
401                 [in] IWbemContext* pCtx,
402                 [in] IWbemObjectSink* pResponseHandler
403                 );
404
405
406         WERROR DeleteInstance(
407                 [in] BSTR strObjectPath,
408                 [in] long lFlags,
409                 [in] IWbemContext* pCtx,
410                 [out, in, unique] IWbemCallResult** ppCallResult
411                 );
412
413
414         WERROR DeleteInstanceAsync(
415                 [in] BSTR strObjectPath,
416                 [in] long lFlags,
417                 [in] IWbemContext* pCtx,
418                 [in] IWbemObjectSink* pResponseHandler
419                 );
420
421
422     WERROR CreateInstanceEnum(
423         [in] BSTR strFilter,          // allow more things than a class name
424         [in] long lFlags,
425         [in,unique]  IWbemContext* pCtx,
426         [out] IEnumWbemClassObject** ppEnum
427         );
428
429         WERROR CreateInstanceEnumAsync(
430                 [in] BSTR strSuperClass,
431                 [in] long lFlags,
432                 [in] IWbemContext* pCtx,
433                 [in] IWbemObjectSink* pResponseHandler
434                 );
435
436     WERROR ExecQuery(
437         [in] BSTR strQueryLanguage,
438         [in] BSTR strQuery,
439         [in]  long lFlags,
440         [in,unique]  IWbemContext* pCtx,
441         [out] IEnumWbemClassObject** ppEnum
442         );
443
444         WERROR ExecQueryAsync(
445                 [in] BSTR strQueryLanguage,
446                 [in] BSTR strQuery,
447                 [in] long lFlags,
448                 [in] IWbemContext* pCtx,
449                 [in] IWbemObjectSink* pResponseHandler
450                 );
451
452     WERROR ExecNotificationQuery(
453         [in] BSTR strQueryLanguage,
454         [in] BSTR strQuery,
455         [in] long lFlags,
456         [in,unique]  IWbemContext* pCtx,
457         [out] IEnumWbemClassObject** ppEnum
458         );
459
460         WERROR ExecNotificationQueryAsync(
461                 [in] BSTR strQueryLanguage,
462                 [in] BSTR strQuery,
463                 [in] long lFlags,
464                 [in] IWbemContext* pCtx,
465                 [in] IWbemObjectSink* pResponseHandler
466                 );
467
468     WERROR ExecMethod(
469         [in] BSTR strObjectPath,
470         [in] BSTR strMethodName,
471         [in] long lFlags,
472         [in,unique] IWbemContext* pCtx,
473         [in,unique] IWbemClassObject* pInParams,
474         [in,out,unique] IWbemClassObject** ppOutParams,
475         [in,out,unique] IWbemCallResult** ppCallResult
476         );
477
478         WERROR ExecMethodAsync(
479                 [in] BSTR strObjectPath,
480                 [in] BSTR strMethodName,
481                 [in] uint32 lFlags,
482                 [in] IWbemContext* pCtx,
483                 [in] IWbemClassObject* pInParams,
484                 [in] IWbemObjectSink* pResponseHandler
485                 );
486 }
487
488 [
489         object, 
490         uuid(027947e1-d731-11ce-a357-000000000001),
491         pointer_default(unique)
492 ] interface IEnumWbemClassObject : IUnknown
493 {
494     WERROR Reset();
495
496     [call_as(Next)] WERROR IEnumWbemClassObject_Next(
497         [in]  int32 lTimeout,
498         [in]  uint32 uCount,
499                 [out, size_is(uCount), length_is(*puReturned)] IWbemClassObject** apObjects,
500                 [out] uint32* puReturned
501         );
502
503     WERROR NextAsync(
504         [in]  uint32 uCount,
505         [in]  IWbemObjectSink* pSink
506         );
507
508     WERROR IEnumWbemClassObject_Clone(
509         [out] IEnumWbemClassObject** ppEnum
510         );
511
512     WERROR Skip(
513         [in]  int32 lTimeout,
514         [in] uint32 nCount
515         );
516 };
517
518 [
519         object, 
520         local, 
521         uuid("44aca674-e8fc-11d0-a07c-00c04fb68820"),
522         pointer_default(unique)
523 ] interface IWbemContext : IUnknown
524 {
525     WERROR Clone([out] IWbemContext** ppNewCopy);
526
527     WERROR GetNames(
528 //        [in] long lFlags,
529 //        [out] SAFEARRAY (BSTR)* pNames
530         );
531
532     WERROR BeginEnumeration([in] long lFlags);
533
534     WERROR Next(
535 //        [in]  long lFlags,
536 //        [out] BSTR* pstrName,
537 //        [out] VARIANT* pValue
538         );
539
540     WERROR EndEnumeration();
541
542
543     WERROR SetValue(
544 //        [in, string] LPCWSTR wszName,
545 //        [in] long lFlags
546 //        [in] VARIANT* pValue
547         );
548
549     WERROR GetValue(
550 //        [in, string] LPCWSTR wszName,
551 //        [in] long lFlags,
552 //        [out] VARIANT* pValue
553         );
554
555     WERROR DeleteValue(
556 //        [in, string] LPCWSTR wszName,
557 //        [in] long lFlags
558         );
559
560     WERROR DeleteAll();
561 }
562
563 [
564         object,
565         uuid("F309AD18-D86A-11d0-A075-00C04FB68820"),
566         pointer_default(unique)
567 ] interface IWbemLevel1Login :  IUnknown
568 {
569         WERROR EstablishPosition(
570                 [in, unique, string, charset(UTF16)] uint16* wszLocaleList,
571                 [in] DWORD dwNumLocales,
572                 [out] DWORD* reserved
573                 );
574         WERROR RequestChallenge(
575                 [in, unique, string, charset(UTF16)] uint16* wszNetworkResource,
576                 [in, unique, string, charset(UTF16)] uint16* wszUser,
577                 [out, size_is(16), length_is(16)] uint8 * Nonce
578                 );
579         WERROR WBEMLogin(
580                 [in, unique, string, charset(UTF16)] uint16* wszPreferredLocale,
581                 [in, size_is(16), length_is(16), unique] uint8 * AccessToken,
582                 [in] long lFlags,
583                 [in] IWbemContext* pCtx,
584                 [out] IWbemServices** ppNamespace
585                 );
586
587
588         WERROR NTLMLogin(
589                 [in,unique,string,charset(UTF16)] uint16 *wszNetworkResource,
590                 [in,unique,string,charset(UTF16)] uint16 *wszPreferredLocale,
591                 [in]   long lFlags,
592                 [in,unique]   IWbemContext* pCtx,
593                 [out,ref]  IWbemServices** ppNamespace
594                 );
595
596 }
597
598 [
599         object,
600         uuid("423ec01e-2e35-11d2-b604-00104b703efd"),
601         pointer_default(unique)
602 ] interface IWbemWCOSmartEnum : IUnknown
603 {
604         typedef struct {
605                 uint32 size;
606                 char data[size];
607         } WBEMDATA;
608
609         typedef enum {
610                 WTYPE_SCHEMA = 1,
611                 WTYPE_CLASS = 2,
612                 WTYPE_OBJECT = 3
613         } WTYPES;
614
615         typedef [relative_base] struct {
616                 //      [relative] WBEMDATA4 *data; /* 0x9 */
617                 uint32 data_size;
618                 uint8 wtype;
619         } WBEMDATA4;
620
621         typedef [relative_base] struct {
622                 [relative] WBEMDATA4 *data; /* 0x9 */
623                 uint32 data_size;
624                 uint8 wtype;
625         } WBEMDATA3;
626
627         typedef [relative_base] struct {
628                 [relative,size_is(obj_num)] WBEMDATA3 *data; /* 0x8 */
629                 uint32 data_size;
630                 uint32 obj_num;
631         } WBEMDATA2;
632
633         typedef [relative_base] struct {
634                 [relative] WBEMDATA2 *data; /* 0x8 */
635                 uint32 data_size;
636         } WBEMDATA1;
637
638         typedef [relative_base] struct {
639                 uint32 u1_0; /* 0 */
640                 hyper signature; /* 'WBEMDATA' */
641                 [relative] WBEMDATA1 *data; /* 0x1A */
642                 uint32 data_size;
643                 uint32 u2_0; /* 0 */
644                 uint8 ver_major; /* 1 */
645                 uint8 ver_minor; /* 0 - Win2000, 1 - WinXP/2003 */
646         } WBEMDATA0;
647
648         WERROR IWbemWCOSmartEnum_Next(
649                 [in,ref] GUID *gEWCO,
650                 [in] uint32 lTimeOut,
651                 [in] uint32 uCount,
652                 //        [in] uint32 unknown,
653                 //        [in,ref] GUID *gWCO,
654                 [out,ref] uint32 *puReturned,
655                 [out,ref] uint32 *pSize,
656                 //        [out,ref] WBEMDATA0 **pData
657                 [out,ref,noprint,size_is(,*pSize)] uint8 **pData
658                 );
659 }
660
661 [
662         object,
663         uuid("1c1c45ee-4395-11d2-b60b-00104b703efd"),
664         pointer_default(unique)
665 ] interface IWbemFetchSmartEnum : IUnknown
666 {
667         WERROR Fetch([out]      IWbemWCOSmartEnum** ppEnum);
668         WERROR Test([out]       IWbemClassObject** ppEnum);
669 }
670
671 [
672         object,
673         //      restricted,
674         uuid(44aca675-e8fc-11d0-a07c-00c04fb68820)
675 ] interface IWbemCallResult : IUnknown
676 {
677         WERROR GetResultObject(
678                                                    [in]  long lTimeout,
679                                                    [out] IWbemClassObject** ppResultObject
680                                                   );
681
682         WERROR GetResultString(
683                                                    [in]  long lTimeout,
684                                                    [out] BSTR* pstrResultString
685                                                   );
686
687         WERROR GetResultServices(
688                                                          [in]  long lTimeout,
689                                                          [out] IWbemServices** ppServices
690                                                         );
691
692         WERROR GetCallStatus(
693                                                  [in]  long lTimeout,
694                                                  [out] long* plStatus
695                                                 );
696 }
697
698
699 [
700         object,
701         restricted,
702         uuid(7c857801-7381-11cf-884d-00aa004b2e24)
703 ]
704 interface IWbemObjectSink : IUnknown
705 {
706         WERROR SetStatus(
707                                          [in] long lFlags,
708                                          [in] WERROR hResult,
709                                          [in] BSTR strParam,
710                                          [in] IWbemClassObject* pObjParam
711                                         );
712         WERROR Indicate(
713                                         [in] long lObjectCount,
714                                         [in, size_is(lObjectCount)] IWbemClassObject** apObjArray
715                                    );
716 };
717