ReactOS 0.4.15-dev-8102-g108db8f
locator.c
Go to the documentation of this file.
1/*
2 * Copyright 2013 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#define COBJMACROS
20
21#include <stdarg.h>
22
23#include "windef.h"
24#include "winbase.h"
25#include "initguid.h"
26#include "objbase.h"
27#include "wmiutils.h"
28#include "wbemcli.h"
29#include "wbemdisp.h"
30
31#include "wine/debug.h"
32#include "wine/heap.h"
33#include "wbemdisp_private.h"
34#include "wbemdisp_classes.h"
35
37
39static HRESULT ISWbemSecurity_create( ISWbemSecurity ** );
40
42{
51};
52
55
57{
58 &IID_ISWbemLocator,
59 &IID_ISWbemObject,
60 &IID_ISWbemObjectSet,
61 &IID_ISWbemProperty,
62 &IID_ISWbemPropertySet,
63 &IID_ISWbemServices,
64 &IID_ISWbemSecurity
65};
66
68{
69 HRESULT hr;
70
72 {
74
75 hr = LoadRegTypeLib( &LIBID_WbemScripting, 1, 2, LOCALE_SYSTEM_DEFAULT, &typelib );
76 if (FAILED( hr ))
77 {
78 ERR( "LoadRegTypeLib failed: %08x\n", hr );
79 return hr;
80 }
82 ITypeLib_Release( typelib );
83 }
85 {
87
88 hr = ITypeLib_GetTypeInfoOfGuid( wbemdisp_typelib, wbemdisp_tid_id[tid], &typeinfo );
89 if (FAILED( hr ))
90 {
91 ERR( "GetTypeInfoOfGuid(%s) failed: %08x\n", debugstr_guid(wbemdisp_tid_id[tid]), hr );
92 return hr;
93 }
95 ITypeInfo_Release( typeinfo );
96 }
98 ITypeInfo_AddRef( *ret );
99 return S_OK;
100}
101
103{
104 ISWbemProperty ISWbemProperty_iface;
108};
109
110static inline struct property *impl_from_ISWbemProperty( ISWbemProperty *iface )
111{
112 return CONTAINING_RECORD( iface, struct property, ISWbemProperty_iface );
113}
114
115static ULONG WINAPI property_AddRef( ISWbemProperty *iface )
116{
117 struct property *property = impl_from_ISWbemProperty( iface );
119}
120
121static ULONG WINAPI property_Release( ISWbemProperty *iface )
122{
123 struct property *property = impl_from_ISWbemProperty( iface );
125 if (!refs)
126 {
127 TRACE( "destroying %p\n", property );
128 IWbemClassObject_Release( property->object );
131 }
132 return refs;
133}
134
135static HRESULT WINAPI property_QueryInterface( ISWbemProperty *iface, REFIID riid, void **obj )
136{
137 struct property *property = impl_from_ISWbemProperty( iface );
138
139 TRACE( "%p %s %p\n", property, debugstr_guid(riid), obj );
140
141 if (IsEqualGUID( riid, &IID_ISWbemProperty ) ||
144 {
145 *obj = iface;
146 }
147 else
148 {
149 FIXME( "interface %s not implemented\n", debugstr_guid(riid) );
150 return E_NOINTERFACE;
151 }
152 ISWbemProperty_AddRef( iface );
153 return S_OK;
154}
155
156static HRESULT WINAPI property_GetTypeInfoCount( ISWbemProperty *iface, UINT *count )
157{
158 struct property *property = impl_from_ISWbemProperty( iface );
159 TRACE( "%p, %p\n", property, count );
160 *count = 1;
161 return S_OK;
162}
163
164static HRESULT WINAPI property_GetTypeInfo( ISWbemProperty *iface, UINT index,
165 LCID lcid, ITypeInfo **info )
166{
167 struct property *property = impl_from_ISWbemProperty( iface );
168 TRACE( "%p, %u, %u, %p\n", property, index, lcid, info );
169
171}
172
174 UINT count, LCID lcid, DISPID *dispid )
175{
176 struct property *property = impl_from_ISWbemProperty( iface );
178 HRESULT hr;
179
180 TRACE( "%p, %s, %p, %u, %u, %p\n", property, debugstr_guid(riid), names, count, lcid, dispid );
181
182 if (!names || !count || !dispid) return E_INVALIDARG;
183
185 if (SUCCEEDED(hr))
186 {
187 hr = ITypeInfo_GetIDsOfNames( typeinfo, names, count, dispid );
188 ITypeInfo_Release( typeinfo );
189 }
190 return hr;
191}
192
193static HRESULT WINAPI property_Invoke( ISWbemProperty *iface, DISPID member, REFIID riid,
194 LCID lcid, WORD flags, DISPPARAMS *params,
195 VARIANT *result, EXCEPINFO *excep_info, UINT *arg_err )
196{
197 struct property *property = impl_from_ISWbemProperty( iface );
199 HRESULT hr;
200
201 TRACE( "%p, %d, %s, %d, %d, %p, %p, %p, %p\n", property, member, debugstr_guid(riid),
202 lcid, flags, params, result, excep_info, arg_err );
203
205 if (SUCCEEDED(hr))
206 {
207 hr = ITypeInfo_Invoke( typeinfo, &property->ISWbemProperty_iface, member, flags,
208 params, result, excep_info, arg_err );
209 ITypeInfo_Release( typeinfo );
210 }
211 return hr;
212}
213
214static HRESULT WINAPI property_get_Value( ISWbemProperty *iface, VARIANT *value )
215{
216 struct property *property = impl_from_ISWbemProperty( iface );
217
218 TRACE( "%p %p\n", property, value );
219
220 return IWbemClassObject_Get( property->object, property->name, 0, value, NULL, NULL );
221}
222
223static HRESULT WINAPI property_put_Value( ISWbemProperty *iface, VARIANT *varValue )
224{
225 FIXME( "\n" );
226 return E_NOTIMPL;
227}
228
229static HRESULT WINAPI property_get_Name( ISWbemProperty *iface, BSTR *strName )
230{
231 FIXME( "\n" );
232 return E_NOTIMPL;
233}
234
235static HRESULT WINAPI property_get_IsLocal( ISWbemProperty *iface, VARIANT_BOOL *bIsLocal )
236{
237 FIXME( "\n" );
238 return E_NOTIMPL;
239}
240
241static HRESULT WINAPI property_get_Origin( ISWbemProperty *iface, BSTR *strOrigin )
242{
243 FIXME( "\n" );
244 return E_NOTIMPL;
245}
246
247static HRESULT WINAPI property_get_CIMType( ISWbemProperty *iface, WbemCimtypeEnum *iCimType )
248{
249 FIXME( "\n" );
250 return E_NOTIMPL;
251}
252
253static HRESULT WINAPI property_get_Qualifiers_( ISWbemProperty *iface, ISWbemQualifierSet **objWbemQualifierSet )
254{
255 FIXME( "\n" );
256 return E_NOTIMPL;
257}
258
259static HRESULT WINAPI property_get_IsArray( ISWbemProperty *iface, VARIANT_BOOL *bIsArray )
260{
261 FIXME( "\n" );
262 return E_NOTIMPL;
263}
264
265static const ISWbemPropertyVtbl property_vtbl =
266{
282};
283
284static HRESULT SWbemProperty_create( IWbemClassObject *wbem_object, BSTR name, ISWbemProperty **obj )
285{
286 struct property *property;
287
288 TRACE( "%p, %p\n", obj, wbem_object );
289
290 if (!(property = heap_alloc( sizeof(*property) ))) return E_OUTOFMEMORY;
291 property->ISWbemProperty_iface.lpVtbl = &property_vtbl;
292 property->refs = 1;
293 property->object = wbem_object;
294 IWbemClassObject_AddRef( property->object );
295 property->name = SysAllocStringLen( name, SysStringLen( name ) );
296 *obj = &property->ISWbemProperty_iface;
297 TRACE( "returning iface %p\n", *obj );
298 return S_OK;
299}
300
302{
303 ISWbemPropertySet ISWbemPropertySet_iface;
306};
307
309 ISWbemPropertySet *iface )
310{
312}
313
314static ULONG WINAPI propertyset_AddRef( ISWbemPropertySet *iface )
315{
318}
319
320static ULONG WINAPI propertyset_Release( ISWbemPropertySet *iface )
321{
324 if (!refs)
325 {
326 TRACE( "destroying %p\n", propertyset );
327 IWbemClassObject_Release( propertyset->object );
329 }
330 return refs;
331}
332
333static HRESULT WINAPI propertyset_QueryInterface( ISWbemPropertySet *iface,
334 REFIID riid, void **obj )
335{
337
338 TRACE( "%p %s %p\n", propertyset, debugstr_guid(riid), obj );
339
340 if (IsEqualGUID( riid, &IID_ISWbemPropertySet ) ||
343 {
344 *obj = iface;
345 }
346 else
347 {
348 FIXME( "interface %s not implemented\n", debugstr_guid(riid) );
349 return E_NOINTERFACE;
350 }
351 ISWbemPropertySet_AddRef( iface );
352 return S_OK;
353}
354
355static HRESULT WINAPI propertyset_GetTypeInfoCount( ISWbemPropertySet *iface, UINT *count )
356{
358 TRACE( "%p, %p\n", propertyset, count );
359 *count = 1;
360 return S_OK;
361}
362
363static HRESULT WINAPI propertyset_GetTypeInfo( ISWbemPropertySet *iface,
364 UINT index, LCID lcid, ITypeInfo **info )
365{
367 TRACE( "%p, %u, %u, %p\n", propertyset, index, lcid, info );
368
370}
371
373 UINT count, LCID lcid, DISPID *dispid )
374{
377 HRESULT hr;
378
379 TRACE( "%p, %s, %p, %u, %u, %p\n", propertyset, debugstr_guid(riid), names, count, lcid, dispid );
380
381 if (!names || !count || !dispid) return E_INVALIDARG;
382
384 if (SUCCEEDED(hr))
385 {
386 hr = ITypeInfo_GetIDsOfNames( typeinfo, names, count, dispid );
387 ITypeInfo_Release( typeinfo );
388 }
389 return hr;
390}
391
392static HRESULT WINAPI propertyset_Invoke( ISWbemPropertySet *iface, DISPID member, REFIID riid,
393 LCID lcid, WORD flags, DISPPARAMS *params,
394 VARIANT *result, EXCEPINFO *excep_info, UINT *arg_err )
395{
398 HRESULT hr;
399
400 TRACE( "%p, %d, %s, %d, %d, %p, %p, %p, %p\n", propertyset, member, debugstr_guid(riid),
401 lcid, flags, params, result, excep_info, arg_err );
402
404 if (SUCCEEDED(hr))
405 {
407 params, result, excep_info, arg_err );
408 ITypeInfo_Release( typeinfo );
409 }
410 return hr;
411}
412
413static HRESULT WINAPI propertyset_get__NewEnum( ISWbemPropertySet *iface, IUnknown **unk )
414{
415 FIXME( "\n" );
416 return E_NOTIMPL;
417}
418
419static HRESULT WINAPI propertyset_Item( ISWbemPropertySet *iface, BSTR name,
420 LONG flags, ISWbemProperty **prop )
421{
423 HRESULT hr;
424 VARIANT var;
425
426 TRACE( "%p, %s, %08x, %p\n", propertyset, debugstr_w(name), flags, prop );
427
428 hr = IWbemClassObject_Get( propertyset->object, name, 0, &var, NULL, NULL );
429 if (SUCCEEDED(hr))
430 {
432 VariantClear( &var );
433 }
434 return hr;
435}
436
437static HRESULT WINAPI propertyset_get_Count( ISWbemPropertySet *iface, LONG *count )
438{
439 static const WCHAR propcountW[] = {'_','_','P','R','O','P','E','R','T','Y','_','C','O','U','N','T',0};
441 HRESULT hr;
442 VARIANT val;
443
444 TRACE( "%p, %p\n", propertyset, count );
445
446 hr = IWbemClassObject_Get( propertyset->object, propcountW, 0, &val, NULL, NULL );
447 if (SUCCEEDED(hr))
448 {
449 *count = V_I4( &val );
450 }
451 return hr;
452}
453
454static HRESULT WINAPI propertyset_Add( ISWbemPropertySet *iface, BSTR name, WbemCimtypeEnum type,
455 VARIANT_BOOL is_array, LONG flags, ISWbemProperty **prop )
456{
457 FIXME( "\n" );
458 return E_NOTIMPL;
459}
460
461static HRESULT WINAPI propertyset_Remove( ISWbemPropertySet *iface, BSTR name, LONG flags )
462{
463 FIXME( "\n" );
464 return E_NOTIMPL;
465}
466
467static const ISWbemPropertySetVtbl propertyset_vtbl =
468{
481};
482
483static HRESULT SWbemPropertySet_create( IWbemClassObject *wbem_object, ISWbemPropertySet **obj )
484{
485 struct propertyset *propertyset;
486
487 TRACE( "%p, %p\n", obj, wbem_object );
488
489 if (!(propertyset = heap_alloc( sizeof(*propertyset) ))) return E_OUTOFMEMORY;
491 propertyset->refs = 1;
492 propertyset->object = wbem_object;
493 IWbemClassObject_AddRef( propertyset->object );
495
496 TRACE( "returning iface %p\n", *obj );
497 return S_OK;
498}
499
500#define DISPID_BASE 0x1800000
501#define DISPID_BASE_METHOD 0x1000000
502
503struct member
504{
508};
509
510struct object
511{
512 ISWbemObject ISWbemObject_iface;
519};
520
521static inline struct object *impl_from_ISWbemObject(
522 ISWbemObject *iface )
523{
524 return CONTAINING_RECORD( iface, struct object, ISWbemObject_iface );
525}
526
528 ISWbemObject *iface )
529{
530 struct object *object = impl_from_ISWbemObject( iface );
531 return InterlockedIncrement( &object->refs );
532}
533
535 ISWbemObject *iface )
536{
537 struct object *object = impl_from_ISWbemObject( iface );
539 if (!refs)
540 {
541 UINT i;
542
543 TRACE( "destroying %p\n", object );
544 IWbemClassObject_Release( object->object );
545 for (i = 0; i < object->nb_members; i++) SysFreeString( object->members[i].name );
547 heap_free( object );
548 }
549 return refs;
550}
551
553 ISWbemObject *iface,
554 REFIID riid,
555 void **ppvObject )
556{
557 struct object *object = impl_from_ISWbemObject( iface );
558
559 TRACE( "%p %s %p\n", object, debugstr_guid(riid), ppvObject );
560
561 if (IsEqualGUID( riid, &IID_ISWbemObject ) ||
564 {
565 *ppvObject = iface;
566 }
567 else
568 {
569 FIXME( "interface %s not implemented\n", debugstr_guid(riid) );
570 return E_NOINTERFACE;
571 }
572 ISWbemObject_AddRef( iface );
573 return S_OK;
574}
575
577 ISWbemObject *iface,
578 UINT *count )
579{
580 struct object *object = impl_from_ISWbemObject( iface );
581
582 TRACE( "%p, %p\n", object, count );
583 *count = 1;
584 return S_OK;
585}
586
588 ISWbemObject *iface,
589 UINT index,
590 LCID lcid,
591 ITypeInfo **info )
592{
593 struct object *object = impl_from_ISWbemObject( iface );
594 FIXME( "%p, %u, %u, %p\n", object, index, lcid, info );
595 return E_NOTIMPL;
596}
597
598static HRESULT init_members( struct object *object )
599{
600 IWbemClassObject *sig_in, *sig_out;
601 LONG i = 0, count = 0;
602 BSTR name;
603 HRESULT hr;
604
605 if (object->members) return S_OK;
606
607 hr = IWbemClassObject_BeginEnumeration( object->object, 0 );
608 if (SUCCEEDED( hr ))
609 {
610 while (IWbemClassObject_Next( object->object, 0, NULL, NULL, NULL, NULL ) == S_OK) count++;
611 IWbemClassObject_EndEnumeration( object->object );
612 }
613
614 hr = IWbemClassObject_BeginMethodEnumeration( object->object, 0 );
615 if (SUCCEEDED( hr ))
616 {
617 while (IWbemClassObject_NextMethod( object->object, 0, &name, &sig_in, &sig_out ) == S_OK)
618 {
619 count++;
621 if (sig_in) IWbemClassObject_Release( sig_in );
622 if (sig_out) IWbemClassObject_Release( sig_out );
623 }
624 IWbemClassObject_EndMethodEnumeration( object->object );
625 }
626
627 if (!(object->members = heap_alloc( sizeof(struct member) * count ))) return E_OUTOFMEMORY;
628
629 hr = IWbemClassObject_BeginEnumeration( object->object, 0 );
630 if (SUCCEEDED( hr ))
631 {
632 while (IWbemClassObject_Next( object->object, 0, &name, NULL, NULL, NULL ) == S_OK)
633 {
634 object->members[i].name = name;
635 object->members[i].is_method = FALSE;
636 object->members[i].dispid = 0;
637 if (++i > count)
638 {
639 IWbemClassObject_EndEnumeration( object->object );
640 goto error;
641 }
642 TRACE( "added property %s\n", debugstr_w(name) );
643 }
644 IWbemClassObject_EndEnumeration( object->object );
645 }
646
647 hr = IWbemClassObject_BeginMethodEnumeration( object->object, 0 );
648 if (SUCCEEDED( hr ))
649 {
650 while (IWbemClassObject_NextMethod( object->object, 0, &name, &sig_in, &sig_out ) == S_OK)
651 {
652 object->members[i].name = name;
653 object->members[i].is_method = TRUE;
654 object->members[i].dispid = 0;
655 if (++i > count)
656 {
657 IWbemClassObject_EndMethodEnumeration( object->object );
658 goto error;
659 }
660 if (sig_in) IWbemClassObject_Release( sig_in );
661 if (sig_out) IWbemClassObject_Release( sig_out );
662 TRACE( "added method %s\n", debugstr_w(name) );
663 }
664 IWbemClassObject_EndMethodEnumeration( object->object );
665 }
666
667 object->nb_members = count;
668 TRACE( "added %u members\n", object->nb_members );
669 return S_OK;
670
671error:
672 for (--i; i >= 0; i--) SysFreeString( object->members[i].name );
674 object->members = NULL;
675 object->nb_members = 0;
676 return E_FAIL;
677}
678
679static DISPID get_member_dispid( struct object *object, const WCHAR *name )
680{
681 UINT i;
682 for (i = 0; i < object->nb_members; i++)
683 {
684 if (!wcsicmp( object->members[i].name, name ))
685 {
686 if (!object->members[i].dispid)
687 {
688 if (object->members[i].is_method)
689 object->members[i].dispid = ++object->last_dispid_method;
690 else
691 object->members[i].dispid = ++object->last_dispid;
692 }
693 return object->members[i].dispid;
694 }
695 }
696 return DISPID_UNKNOWN;
697}
698
700 ISWbemObject *iface,
701 REFIID riid,
703 UINT count,
704 LCID lcid,
705 DISPID *dispid )
706{
707 struct object *object = impl_from_ISWbemObject( iface );
708 HRESULT hr;
709 UINT i;
711
712 TRACE( "%p, %s, %p, %u, %u, %p\n", object, debugstr_guid(riid), names, count, lcid, dispid );
713
714 if (!names || !count || !dispid) return E_INVALIDARG;
715
716 hr = init_members( object );
717 if (FAILED( hr )) return hr;
718
720 if (SUCCEEDED(hr))
721 {
722 hr = ITypeInfo_GetIDsOfNames( typeinfo, names, count, dispid );
723 ITypeInfo_Release( typeinfo );
724 }
725 if (SUCCEEDED(hr)) return hr;
726
727 for (i = 0; i < count; i++)
728 {
729 if ((dispid[i] = get_member_dispid( object, names[i] )) == DISPID_UNKNOWN) break;
730 }
731 if (i != count) return DISP_E_UNKNOWNNAME;
732 return S_OK;
733}
734
735static BSTR get_member_name( struct object *object, DISPID dispid )
736{
737 UINT i;
738 for (i = 0; i < object->nb_members; i++)
739 {
740 if (object->members[i].dispid == dispid) return object->members[i].name;
741 }
742 return NULL;
743}
744
746 ISWbemObject *iface,
748 REFIID riid,
749 LCID lcid,
750 WORD flags,
751 DISPPARAMS *params,
753 EXCEPINFO *excep_info,
754 UINT *arg_err )
755{
756 struct object *object = impl_from_ISWbemObject( iface );
757 BSTR name;
759 HRESULT hr;
760
761 TRACE( "%p, %x, %s, %u, %x, %p, %p, %p, %p\n", object, member, debugstr_guid(riid),
762 lcid, flags, params, result, excep_info, arg_err );
763
765 {
767 if (SUCCEEDED(hr))
768 {
769 hr = ITypeInfo_Invoke( typeinfo, &object->ISWbemObject_iface, member, flags,
770 params, result, excep_info, arg_err );
771 ITypeInfo_Release( typeinfo );
772 }
773 return hr;
774 }
775
777 {
778 FIXME( "flags %x not supported\n", flags );
779 return E_NOTIMPL;
780 }
781 if (!(name = get_member_name( object, member )))
783
784 memset( params, 0, sizeof(*params) );
785 return IWbemClassObject_Get( object->object, name, 0, result, NULL, NULL );
786}
787
789 ISWbemObject *iface,
790 LONG iFlags,
791 IDispatch *objWbemNamedValueSet,
792 ISWbemObjectPath **objWbemObjectPath )
793{
794 FIXME( "\n" );
795 return E_NOTIMPL;
796}
797
799 ISWbemObject *iface,
800 IDispatch *objWbemSink,
801 LONG iFlags,
802 IDispatch *objWbemNamedValueSet,
803 IDispatch *objWbemAsyncContext )
804{
805 FIXME( "\n" );
806 return E_NOTIMPL;
807}
808
810 ISWbemObject *iface,
811 LONG iFlags,
812 IDispatch *objWbemNamedValueSet )
813{
814 FIXME( "\n" );
815 return E_NOTIMPL;
816}
817
819 ISWbemObject *iface,
820 IDispatch *objWbemSink,
821 LONG iFlags,
822 IDispatch *objWbemNamedValueSet,
823 IDispatch *objWbemAsyncContext )
824{
825 FIXME( "\n" );
826 return E_NOTIMPL;
827}
828
830 ISWbemObject *iface,
831 LONG iFlags,
832 IDispatch *objWbemNamedValueSet,
833 ISWbemObjectSet **objWbemObjectSet )
834{
835 FIXME( "\n" );
836 return E_NOTIMPL;
837}
838
840 ISWbemObject *iface,
841 IDispatch *objWbemSink,
842 LONG iFlags,
843 IDispatch *objWbemNamedValueSet,
844 IDispatch *objWbemAsyncContext )
845{
846 FIXME( "\n" );
847 return E_NOTIMPL;
848}
849
851 ISWbemObject *iface,
852 LONG iFlags,
853 IDispatch *objWbemNamedValueSet,
854 ISWbemObjectSet **objWbemObjectSet )
855{
856 FIXME( "\n" );
857 return E_NOTIMPL;
858}
859
861 ISWbemObject *iface,
862 IDispatch *objWbemSink,
863 LONG iFlags,
864 IDispatch *objWbemNamedValueSet,
865 IDispatch *objWbemAsyncContext )
866{
867 FIXME( "\n" );
868 return E_NOTIMPL;
869}
870
872 ISWbemObject *iface,
873 BSTR strAssocClass,
874 BSTR strResultClass,
875 BSTR strResultRole,
876 BSTR strRole,
877 VARIANT_BOOL bClassesOnly,
878 VARIANT_BOOL bSchemaOnly,
879 BSTR strRequiredAssocQualifier,
880 BSTR strRequiredQualifier,
881 LONG iFlags,
882 IDispatch *objWbemNamedValueSet,
883 ISWbemObjectSet **objWbemObjectSet )
884{
885 FIXME( "\n" );
886 return E_NOTIMPL;
887}
888
890 ISWbemObject *iface,
891 IDispatch *objWbemSink,
892 BSTR strAssocClass,
893 BSTR strResultClass,
894 BSTR strResultRole,
895 BSTR strRole,
896 VARIANT_BOOL bClassesOnly,
897 VARIANT_BOOL bSchemaOnly,
898 BSTR strRequiredAssocQualifier,
899 BSTR strRequiredQualifier,
900 LONG iFlags,
901 IDispatch *objWbemNamedValueSet,
902 IDispatch *objWbemAsyncContext )
903{
904 FIXME( "\n" );
905 return E_NOTIMPL;
906}
907
909 ISWbemObject *iface,
910 BSTR strResultClass,
911 BSTR strRole,
912 VARIANT_BOOL bClassesOnly,
913 VARIANT_BOOL bSchemaOnly,
914 BSTR strRequiredQualifier,
915 LONG iFlags,
916 IDispatch *objWbemNamedValueSet,
917 ISWbemObjectSet **objWbemObjectSet )
918{
919 FIXME( "\n" );
920 return E_NOTIMPL;
921}
922
924 ISWbemObject *iface,
925 IDispatch *objWbemSink,
926 BSTR strResultClass,
927 BSTR strRole,
928 VARIANT_BOOL bClassesOnly,
929 VARIANT_BOOL bSchemaOnly,
930 BSTR strRequiredQualifier,
931 LONG iFlags,
932 IDispatch *objWbemNamedValueSet,
933 IDispatch *objWbemAsyncContext )
934{
935 FIXME( "\n" );
936 return E_NOTIMPL;
937}
938
940 ISWbemObject *iface,
941 BSTR strMethodName,
942 IDispatch *objWbemInParameters,
943 LONG iFlags,
944 IDispatch *objWbemNamedValueSet,
945 ISWbemObject **objWbemOutParameters )
946{
947 FIXME( "\n" );
948 return E_NOTIMPL;
949}
950
952 ISWbemObject *iface,
953 IDispatch *objWbemSink,
954 BSTR strMethodName,
955 IDispatch *objWbemInParameters,
956 LONG iFlags,
957 IDispatch *objWbemNamedValueSet,
958 IDispatch *objWbemAsyncContext )
959{
960 FIXME( "\n" );
961 return E_NOTIMPL;
962}
963
965 ISWbemObject *iface,
966 ISWbemObject **objWbemObject )
967{
968 FIXME( "\n" );
969 return E_NOTIMPL;
970}
971
973 ISWbemObject *iface,
974 LONG iFlags,
975 BSTR *strObjectText )
976{
977 FIXME( "\n" );
978 return E_NOTIMPL;
979}
980
982 ISWbemObject *iface,
983 LONG iFlags,
984 ISWbemObject **objWbemObject )
985{
986 FIXME( "\n" );
987 return E_NOTIMPL;
988}
989
991 ISWbemObject *iface,
992 LONG iFlags,
993 ISWbemObject **objWbemObject )
994{
995 FIXME( "\n" );
996 return E_NOTIMPL;
997}
998
1000 ISWbemObject *iface,
1001 IDispatch *objWbemObject,
1002 LONG iFlags,
1003 VARIANT_BOOL *bResult )
1004{
1005 FIXME( "\n" );
1006 return E_NOTIMPL;
1007}
1008
1010 ISWbemObject *iface,
1011 ISWbemQualifierSet **objWbemQualifierSet )
1012{
1013 FIXME( "\n" );
1014 return E_NOTIMPL;
1015}
1016
1017static HRESULT WINAPI object_get_Properties_( ISWbemObject *iface, ISWbemPropertySet **prop_set )
1018{
1019 struct object *object = impl_from_ISWbemObject( iface );
1020
1021 TRACE( "%p, %p\n", object, prop_set );
1022 return SWbemPropertySet_create( object->object, prop_set );
1023}
1024
1026 ISWbemObject *iface,
1027 ISWbemMethodSet **objWbemMethodSet )
1028{
1029 FIXME( "\n" );
1030 return E_NOTIMPL;
1031}
1032
1034 ISWbemObject *iface,
1035 VARIANT *strClassNameArray )
1036{
1037 FIXME( "\n" );
1038 return E_NOTIMPL;
1039}
1040
1042 ISWbemObject *iface,
1043 ISWbemObjectPath **objWbemObjectPath )
1044{
1045 FIXME( "\n" );
1046 return E_NOTIMPL;
1047}
1048
1050 ISWbemObject *iface,
1051 ISWbemSecurity **objWbemSecurity )
1052{
1053 FIXME( "\n" );
1054 return E_NOTIMPL;
1055}
1056
1057static const ISWbemObjectVtbl object_vtbl =
1058{
1091};
1092
1093static HRESULT SWbemObject_create( IWbemClassObject *wbem_object, ISWbemObject **obj )
1094{
1095 struct object *object;
1096
1097 TRACE( "%p, %p\n", obj, wbem_object );
1098
1099 if (!(object = heap_alloc( sizeof(*object) ))) return E_OUTOFMEMORY;
1100 object->ISWbemObject_iface.lpVtbl = &object_vtbl;
1101 object->refs = 1;
1102 object->object = wbem_object;
1103 IWbemClassObject_AddRef( object->object );
1104 object->members = NULL;
1105 object->nb_members = 0;
1106 object->last_dispid = DISPID_BASE;
1107 object->last_dispid_method = DISPID_BASE_METHOD;
1108
1109 *obj = &object->ISWbemObject_iface;
1110 TRACE( "returning iface %p\n", *obj );
1111 return S_OK;
1112}
1113
1115{
1116 ISWbemObjectSet ISWbemObjectSet_iface;
1120};
1121
1123 ISWbemObjectSet *iface )
1124{
1125 return CONTAINING_RECORD( iface, struct objectset, ISWbemObjectSet_iface );
1126}
1127
1129 ISWbemObjectSet *iface )
1130{
1133}
1134
1136 ISWbemObjectSet *iface )
1137{
1140 if (!refs)
1141 {
1142 TRACE( "destroying %p\n", objectset );
1143 IEnumWbemClassObject_Release( objectset->objectenum );
1145 }
1146 return refs;
1147}
1148
1150 ISWbemObjectSet *iface,
1151 REFIID riid,
1152 void **ppvObject )
1153{
1155
1156 TRACE( "%p %s %p\n", objectset, debugstr_guid(riid), ppvObject );
1157
1158 if (IsEqualGUID( riid, &IID_ISWbemObjectSet ) ||
1161 {
1162 *ppvObject = iface;
1163 }
1164 else
1165 {
1166 FIXME( "interface %s not implemented\n", debugstr_guid(riid) );
1167 return E_NOINTERFACE;
1168 }
1169 ISWbemObjectSet_AddRef( iface );
1170 return S_OK;
1171}
1172
1174 ISWbemObjectSet *iface,
1175 UINT *count )
1176{
1178 TRACE( "%p, %p\n", objectset, count );
1179 *count = 1;
1180 return S_OK;
1181}
1182
1184 ISWbemObjectSet *iface,
1185 UINT index,
1186 LCID lcid,
1187 ITypeInfo **info )
1188{
1190 TRACE( "%p, %u, %u, %p\n", objectset, index, lcid, info );
1191
1193}
1194
1196 ISWbemObjectSet *iface,
1197 REFIID riid,
1198 LPOLESTR *names,
1199 UINT count,
1200 LCID lcid,
1201 DISPID *dispid )
1202{
1205 HRESULT hr;
1206
1207 TRACE( "%p, %s, %p, %u, %u, %p\n", objectset, debugstr_guid(riid), names, count, lcid, dispid );
1208
1209 if (!names || !count || !dispid) return E_INVALIDARG;
1210
1212 if (SUCCEEDED(hr))
1213 {
1214 hr = ITypeInfo_GetIDsOfNames( typeinfo, names, count, dispid );
1215 ITypeInfo_Release( typeinfo );
1216 }
1217 return hr;
1218}
1219
1221 ISWbemObjectSet *iface,
1222 DISPID member,
1223 REFIID riid,
1224 LCID lcid,
1225 WORD flags,
1226 DISPPARAMS *params,
1227 VARIANT *result,
1228 EXCEPINFO *excep_info,
1229 UINT *arg_err )
1230{
1233 HRESULT hr;
1234
1235 TRACE( "%p, %d, %s, %d, %d, %p, %p, %p, %p\n", objectset, member, debugstr_guid(riid),
1236 lcid, flags, params, result, excep_info, arg_err );
1237
1239 if (SUCCEEDED(hr))
1240 {
1241 hr = ITypeInfo_Invoke( typeinfo, &objectset->ISWbemObjectSet_iface, member, flags,
1242 params, result, excep_info, arg_err );
1243 ITypeInfo_Release( typeinfo );
1244 }
1245 return hr;
1246}
1247
1249 ISWbemObjectSet *iface,
1250 IUnknown **pUnk )
1251{
1254 HRESULT hr;
1255
1256 TRACE( "%p, %p\n", objectset, pUnk );
1257
1258 hr = IEnumWbemClassObject_Clone( objectset->objectenum, &objectenum );
1259 if (FAILED( hr )) return hr;
1260
1262 IEnumWbemClassObject_Release( objectenum );
1263 return hr;
1264}
1265
1267 ISWbemObjectSet *iface,
1268 BSTR strObjectPath,
1269 LONG iFlags,
1270 ISWbemObject **objWbemObject )
1271{
1272 FIXME( "\n" );
1273 return E_NOTIMPL;
1274}
1275
1277 ISWbemObjectSet *iface,
1278 LONG *iCount )
1279{
1281
1282 TRACE( "%p, %p\n", objectset, iCount );
1283
1284 *iCount = objectset->count;
1285 return S_OK;
1286}
1287
1289 ISWbemObjectSet *iface,
1290 ISWbemSecurity **objWbemSecurity )
1291{
1292 FIXME( "\n" );
1293 return E_NOTIMPL;
1294}
1295
1297 ISWbemObjectSet *iface,
1298 LONG lIndex,
1299 ISWbemObject **objWbemObject )
1300{
1302 LONG count;
1303 HRESULT hr;
1304 IEnumVARIANT *enum_var;
1305 VARIANT var;
1306
1307 TRACE( "%p, %d, %p\n", objectset, lIndex, objWbemObject );
1308
1309 *objWbemObject = NULL;
1310 hr = ISWbemObjectSet_get_Count( iface, &count );
1311 if (FAILED(hr)) return hr;
1312
1313 if (lIndex >= count) return WBEM_E_NOT_FOUND;
1314
1315 hr = ISWbemObjectSet_get__NewEnum( iface, (IUnknown **)&enum_var );
1316 if (FAILED(hr)) return hr;
1317
1318 IEnumVARIANT_Reset( enum_var );
1319 hr = IEnumVARIANT_Skip( enum_var, lIndex );
1320 if (SUCCEEDED(hr))
1321 hr = IEnumVARIANT_Next( enum_var, 1, &var, NULL );
1322 IEnumVARIANT_Release( enum_var );
1323
1324 if (SUCCEEDED(hr))
1325 {
1326 if (V_VT( &var ) == VT_DISPATCH)
1327 hr = IDispatch_QueryInterface( V_DISPATCH( &var ), &IID_ISWbemObject, (void **)objWbemObject );
1328 else
1330 VariantClear( &var );
1331 }
1332
1333 return hr;
1334}
1335
1336static const ISWbemObjectSetVtbl objectset_vtbl =
1337{
1350};
1351
1353{
1354 LONG count = 0;
1355 while (IEnumWbemClassObject_Skip( iter, WBEM_INFINITE, 1 ) == S_OK) count++;
1356 IEnumWbemClassObject_Reset( iter );
1357 return count;
1358}
1359
1360static HRESULT SWbemObjectSet_create( IEnumWbemClassObject *wbem_objectenum, ISWbemObjectSet **obj )
1361{
1362 struct objectset *objectset;
1363
1364 TRACE( "%p, %p\n", obj, wbem_objectenum );
1365
1366 if (!(objectset = heap_alloc( sizeof(*objectset) ))) return E_OUTOFMEMORY;
1368 objectset->refs = 1;
1369 objectset->objectenum = wbem_objectenum;
1370 IEnumWbemClassObject_AddRef( objectset->objectenum );
1372
1374 TRACE( "returning iface %p\n", *obj );
1375 return S_OK;
1376}
1377
1379{
1383};
1384
1385static inline struct enumvar *impl_from_IEnumVARIANT(
1386 IEnumVARIANT *iface )
1387{
1388 return CONTAINING_RECORD( iface, struct enumvar, IEnumVARIANT_iface );
1389}
1390
1392 IEnumVARIANT *iface )
1393{
1394 struct enumvar *enumvar = impl_from_IEnumVARIANT( iface );
1395 return InterlockedIncrement( &enumvar->refs );
1396}
1397
1399 IEnumVARIANT *iface )
1400{
1401 struct enumvar *enumvar = impl_from_IEnumVARIANT( iface );
1403 if (!refs)
1404 {
1405 TRACE( "destroying %p\n", enumvar );
1406 IEnumWbemClassObject_Release( enumvar->objectenum );
1407 heap_free( enumvar );
1408 }
1409 return refs;
1410}
1411
1413 IEnumVARIANT *iface,
1414 REFIID riid,
1415 void **ppvObject )
1416{
1417 struct enumvar *enumvar = impl_from_IEnumVARIANT( iface );
1418
1419 TRACE( "%p %s %p\n", enumvar, debugstr_guid(riid), ppvObject );
1420
1421 if (IsEqualGUID( riid, &IID_IEnumVARIANT ) ||
1423 {
1424 *ppvObject = iface;
1425 }
1426 else
1427 {
1428 FIXME( "interface %s not implemented\n", debugstr_guid(riid) );
1429 return E_NOINTERFACE;
1430 }
1431 IEnumVARIANT_AddRef( iface );
1432 return S_OK;
1433}
1434
1435static HRESULT WINAPI enumvar_Next( IEnumVARIANT *iface, ULONG celt, VARIANT *var, ULONG *fetched )
1436{
1437 struct enumvar *enumvar = impl_from_IEnumVARIANT( iface );
1439 ULONG count = 0;
1440
1441 TRACE( "%p, %u, %p, %p\n", iface, celt, var, fetched );
1442
1443 if (celt) IEnumWbemClassObject_Next( enumvar->objectenum, WBEM_INFINITE, 1, &obj, &count );
1444 if (count)
1445 {
1446 ISWbemObject *sobj;
1447 HRESULT hr;
1448
1449 hr = SWbemObject_create( obj, &sobj );
1450 IWbemClassObject_Release( obj );
1451 if (FAILED( hr )) return hr;
1452
1453 V_VT( var ) = VT_DISPATCH;
1454 V_DISPATCH( var ) = (IDispatch *)sobj;
1455 }
1456 if (fetched) *fetched = count;
1457 return (count < celt) ? S_FALSE : S_OK;
1458}
1459
1461{
1462 struct enumvar *enumvar = impl_from_IEnumVARIANT( iface );
1463
1464 TRACE( "%p, %u\n", iface, celt );
1465
1466 return IEnumWbemClassObject_Skip( enumvar->objectenum, WBEM_INFINITE, celt );
1467}
1468
1470{
1471 struct enumvar *enumvar = impl_from_IEnumVARIANT( iface );
1472
1473 TRACE( "%p\n", iface );
1474
1475 return IEnumWbemClassObject_Reset( enumvar->objectenum );
1476}
1477
1479{
1480 FIXME( "%p, %p\n", iface, penum );
1481 return E_NOTIMPL;
1482}
1483
1484static const struct IEnumVARIANTVtbl enumvar_vtbl =
1485{
1493};
1494
1496{
1497 struct enumvar *enumvar;
1498
1499 if (!(enumvar = heap_alloc( sizeof(*enumvar) ))) return E_OUTOFMEMORY;
1501 enumvar->refs = 1;
1503 IEnumWbemClassObject_AddRef( enumvar->objectenum );
1504
1506 TRACE( "returning iface %p\n", *obj );
1507 return S_OK;
1508}
1509
1511{
1512 ISWbemServices ISWbemServices_iface;
1515};
1516
1518 ISWbemServices *iface )
1519{
1520 return CONTAINING_RECORD( iface, struct services, ISWbemServices_iface );
1521}
1522
1524 ISWbemServices *iface )
1525{
1526 struct services *services = impl_from_ISWbemServices( iface );
1528}
1529
1531 ISWbemServices *iface )
1532{
1533 struct services *services = impl_from_ISWbemServices( iface );
1535 if (!refs)
1536 {
1537 TRACE( "destroying %p\n", services );
1538 IWbemServices_Release( services->services );
1540 }
1541 return refs;
1542}
1543
1545 ISWbemServices *iface,
1546 REFIID riid,
1547 void **ppvObject )
1548{
1549 struct services *services = impl_from_ISWbemServices( iface );
1550
1551 TRACE( "%p %s %p\n", services, debugstr_guid(riid), ppvObject );
1552
1553 if (IsEqualGUID( riid, &IID_ISWbemServices ) ||
1556 {
1557 *ppvObject = iface;
1558 }
1559 else
1560 {
1561 FIXME( "interface %s not implemented\n", debugstr_guid(riid) );
1562 return E_NOINTERFACE;
1563 }
1564 ISWbemServices_AddRef( iface );
1565 return S_OK;
1566}
1567
1569 ISWbemServices *iface,
1570 UINT *count )
1571{
1572 struct services *services = impl_from_ISWbemServices( iface );
1573 TRACE( "%p, %p\n", services, count );
1574
1575 *count = 1;
1576 return S_OK;
1577}
1578
1580 ISWbemServices *iface,
1581 UINT index,
1582 LCID lcid,
1583 ITypeInfo **info )
1584{
1585 struct services *services = impl_from_ISWbemServices( iface );
1586 TRACE( "%p, %u, %u, %p\n", services, index, lcid, info );
1587
1589}
1590
1592 ISWbemServices *iface,
1593 REFIID riid,
1594 LPOLESTR *names,
1595 UINT count,
1596 LCID lcid,
1597 DISPID *dispid )
1598{
1599 struct services *services = impl_from_ISWbemServices( iface );
1601 HRESULT hr;
1602
1603 TRACE( "%p, %s, %p, %u, %u, %p\n", services, debugstr_guid(riid), names, count, lcid, dispid );
1604
1605 if (!names || !count || !dispid) return E_INVALIDARG;
1606
1608 if (SUCCEEDED(hr))
1609 {
1610 hr = ITypeInfo_GetIDsOfNames( typeinfo, names, count, dispid );
1611 ITypeInfo_Release( typeinfo );
1612 }
1613 return hr;
1614}
1615
1617 ISWbemServices *iface,
1618 DISPID member,
1619 REFIID riid,
1620 LCID lcid,
1621 WORD flags,
1622 DISPPARAMS *params,
1623 VARIANT *result,
1624 EXCEPINFO *excep_info,
1625 UINT *arg_err )
1626{
1627 struct services *services = impl_from_ISWbemServices( iface );
1629 HRESULT hr;
1630
1631 TRACE( "%p, %d, %s, %d, %d, %p, %p, %p, %p\n", services, member, debugstr_guid(riid),
1632 lcid, flags, params, result, excep_info, arg_err );
1633
1635 if (SUCCEEDED(hr))
1636 {
1637 hr = ITypeInfo_Invoke( typeinfo, &services->ISWbemServices_iface, member, flags,
1638 params, result, excep_info, arg_err );
1639 ITypeInfo_Release( typeinfo );
1640 }
1641 return hr;
1642}
1643
1645 ISWbemServices *iface,
1646 BSTR strObjectPath,
1647 LONG iFlags,
1648 IDispatch *objWbemNamedValueSet,
1649 ISWbemObject **objWbemObject )
1650{
1651 struct services *services = impl_from_ISWbemServices( iface );
1653 HRESULT hr;
1654
1655 TRACE( "%p, %s, %d, %p, %p\n", iface, debugstr_w(strObjectPath), iFlags, objWbemNamedValueSet,
1656 objWbemObject );
1657
1658 if (objWbemNamedValueSet) FIXME( "ignoring context\n" );
1659
1660 hr = IWbemServices_GetObject( services->services, strObjectPath, iFlags, NULL, &obj, NULL );
1661 if (hr != S_OK) return hr;
1662
1663 hr = SWbemObject_create( obj, objWbemObject );
1664 IWbemClassObject_Release( obj );
1665 return hr;
1666}
1667
1669 ISWbemServices *iface,
1670 IDispatch *objWbemSink,
1671 BSTR strObjectPath,
1672 LONG iFlags,
1673 IDispatch *objWbemNamedValueSet,
1674 IDispatch *objWbemAsyncContext )
1675{
1676 FIXME( "\n" );
1677 return E_NOTIMPL;
1678}
1679
1681 ISWbemServices *iface,
1682 BSTR strObjectPath,
1683 LONG iFlags,
1684 IDispatch *objWbemNamedValueSet )
1685{
1686 FIXME( "\n" );
1687 return E_NOTIMPL;
1688}
1689
1691 ISWbemServices* This,
1692 IDispatch *objWbemSink,
1693 BSTR strObjectPath,
1694 LONG iFlags,
1695 IDispatch *objWbemNamedValueSet,
1696 IDispatch *objWbemAsyncContext )
1697{
1698 FIXME( "\n" );
1699 return E_NOTIMPL;
1700}
1701
1702static BSTR build_query_string( const WCHAR *class )
1703{
1704 static const WCHAR selectW[] = {'S','E','L','E','C','T',' ','*',' ','F','R','O','M',' ',0};
1705 UINT len = lstrlenW(class) + ARRAY_SIZE(selectW);
1706 BSTR ret;
1707
1708 if (!(ret = SysAllocStringLen( NULL, len ))) return NULL;
1709 lstrcpyW( ret, selectW );
1710 lstrcatW( ret, class );
1711 return ret;
1712}
1713
1715 ISWbemServices *iface,
1716 BSTR strClass,
1717 LONG iFlags,
1718 IDispatch *objWbemNamedValueSet,
1719 ISWbemObjectSet **objWbemObjectSet )
1720{
1721 static const WCHAR wqlW[] = {'W','Q','L',0};
1722 BSTR query, wql = SysAllocString( wqlW );
1723 HRESULT hr;
1724
1725 TRACE( "%p, %s, %x, %p, %p\n", iface, debugstr_w(strClass), iFlags, objWbemNamedValueSet,
1726 objWbemObjectSet );
1727
1728 if (!(query = build_query_string( strClass )))
1729 {
1730 SysFreeString( wql );
1731 return E_OUTOFMEMORY;
1732 }
1733 hr = ISWbemServices_ExecQuery( iface, query, wql, iFlags, objWbemNamedValueSet, objWbemObjectSet );
1734 SysFreeString( wql );
1736 return hr;
1737}
1738
1740 ISWbemServices *iface,
1741 IDispatch *objWbemSink,
1742 BSTR strClass,
1743 LONG iFlags,
1744 IDispatch *objWbemNamedValueSet,
1745 IDispatch *objWbemAsyncContext )
1746{
1747 FIXME( "\n" );
1748 return E_NOTIMPL;
1749}
1750
1752 ISWbemServices *iface,
1753 BSTR strSuperclass,
1754 LONG iFlags,
1755 IDispatch *objWbemNamedValueSet,
1756 ISWbemObjectSet **objWbemObjectSet )
1757{
1758 FIXME( "\n" );
1759 return E_NOTIMPL;
1760}
1761
1763 ISWbemServices *iface,
1764 IDispatch *objWbemSink,
1765 BSTR strSuperclass,
1766 LONG iFlags,
1767 IDispatch *objWbemNamedValueSet,
1768 IDispatch *objWbemAsyncContext )
1769{
1770 FIXME( "\n" );
1771 return E_NOTIMPL;
1772}
1773
1775 ISWbemServices *iface,
1776 BSTR strQuery,
1777 BSTR strQueryLanguage,
1778 LONG iFlags,
1779 IDispatch *objWbemNamedValueSet,
1780 ISWbemObjectSet **objWbemObjectSet )
1781{
1782 struct services *services = impl_from_ISWbemServices( iface );
1784 HRESULT hr;
1785
1786 TRACE( "%p, %s, %s, %x, %p, %p\n", iface, debugstr_w(strQuery), debugstr_w(strQueryLanguage),
1787 iFlags, objWbemNamedValueSet, objWbemObjectSet );
1788
1789 if (objWbemNamedValueSet) FIXME( "ignoring context\n" );
1790
1791 hr = IWbemServices_ExecQuery( services->services, strQueryLanguage, strQuery, iFlags, NULL, &iter );
1792 if (hr != S_OK) return hr;
1793
1794 hr = SWbemObjectSet_create( iter, objWbemObjectSet );
1795 IEnumWbemClassObject_Release( iter );
1796 return hr;
1797}
1798
1800 ISWbemServices *iface,
1801 IDispatch *objWbemSink,
1802 BSTR strQuery,
1803 BSTR strQueryLanguage,
1804 LONG lFlags,
1805 IDispatch *objWbemNamedValueSet,
1806 IDispatch *objWbemAsyncContext )
1807{
1808 FIXME( "\n" );
1809 return E_NOTIMPL;
1810}
1811
1813 ISWbemServices *iface,
1814 BSTR strObjectPath,
1815 BSTR strAssocClass,
1816 BSTR strResultClass,
1817 BSTR strResultRole,
1818 BSTR strRole,
1819 VARIANT_BOOL bClassesOnly,
1820 VARIANT_BOOL bSchemaOnly,
1821 BSTR strRequiredAssocQualifier,
1822 BSTR strRequiredQualifier,
1823 LONG iFlags,
1824 IDispatch *objWbemNamedValueSet,
1825 ISWbemObjectSet **objWbemObjectSet )
1826{
1827 FIXME( "\n" );
1828 return E_NOTIMPL;
1829}
1830
1832 ISWbemServices *iface,
1833 IDispatch *objWbemSink,
1834 BSTR strObjectPath,
1835 BSTR strAssocClass,
1836 BSTR strResultClass,
1837 BSTR strResultRole,
1838 BSTR strRole,
1839 VARIANT_BOOL bClassesOnly,
1840 VARIANT_BOOL bSchemaOnly,
1841 BSTR strRequiredAssocQualifier,
1842 BSTR strRequiredQualifier,
1843 LONG iFlags,
1844 IDispatch *objWbemNamedValueSet,
1845 IDispatch *objWbemAsyncContext )
1846{
1847 FIXME( "\n" );
1848 return E_NOTIMPL;
1849}
1850
1852 ISWbemServices *iface,
1853 BSTR strObjectPath,
1854 BSTR strResultClass,
1855 BSTR strRole,
1856 VARIANT_BOOL bClassesOnly,
1857 VARIANT_BOOL bSchemaOnly,
1858 BSTR strRequiredQualifier,
1859 LONG iFlags,
1860 IDispatch *objWbemNamedValueSet,
1861 ISWbemObjectSet **objWbemObjectSet )
1862{
1863 FIXME( "\n" );
1864 return E_NOTIMPL;
1865}
1866
1868 ISWbemServices *iface,
1869 IDispatch *objWbemSink,
1870 BSTR strObjectPath,
1871 BSTR strResultClass,
1872 BSTR strRole,
1873 VARIANT_BOOL bClassesOnly,
1874 VARIANT_BOOL bSchemaOnly,
1875 BSTR strRequiredQualifier,
1876 LONG iFlags,
1877 IDispatch *objWbemNamedValueSet,
1878 IDispatch *objWbemAsyncContext )
1879{
1880 FIXME( "\n" );
1881 return E_NOTIMPL;
1882}
1883
1885 ISWbemServices *iface,
1886 BSTR strQuery,
1887 BSTR strQueryLanguage,
1888 LONG iFlags,
1889 IDispatch *objWbemNamedValueSet,
1890 ISWbemEventSource **objWbemEventSource )
1891{
1892 FIXME( "\n" );
1893 return E_NOTIMPL;
1894}
1895
1897 ISWbemServices *iface,
1898 IDispatch *objWbemSink,
1899 BSTR strQuery,
1900 BSTR strQueryLanguage,
1901 LONG iFlags,
1902 IDispatch *objWbemNamedValueSet,
1903 IDispatch *objWbemAsyncContext )
1904{
1905 FIXME( "\n" );
1906 return E_NOTIMPL;
1907}
1908
1910 ISWbemServices *iface,
1911 BSTR strObjectPath,
1912 BSTR strMethodName,
1913 IDispatch *objWbemInParameters,
1914 LONG iFlags,
1915 IDispatch *objWbemNamedValueSet,
1916 ISWbemObject **objWbemOutParameters )
1917{
1918 FIXME( "\n" );
1919 return E_NOTIMPL;
1920}
1921
1923 ISWbemServices *iface,
1924 IDispatch *objWbemSink,
1925 BSTR strObjectPath,
1926 BSTR strMethodName,
1927 IDispatch *objWbemInParameters,
1928 LONG iFlags,
1929 IDispatch *objWbemNamedValueSet,
1930 IDispatch *objWbemAsyncContext )
1931{
1932 FIXME( "\n" );
1933 return E_NOTIMPL;
1934}
1935
1937 ISWbemServices *iface,
1938 ISWbemSecurity **objWbemSecurity )
1939{
1940 TRACE( "%p, %p\n", iface, objWbemSecurity );
1941
1942 if (!objWbemSecurity)
1943 return E_INVALIDARG;
1944
1945 return ISWbemSecurity_create( objWbemSecurity );
1946}
1947
1948static const ISWbemServicesVtbl services_vtbl =
1949{
1976};
1977
1979{
1980 struct services *services;
1981
1982 TRACE( "%p, %p\n", obj, wbem_services );
1983
1984 if (!(services = heap_alloc( sizeof(*services) ))) return E_OUTOFMEMORY;
1986 services->refs = 1;
1988 IWbemServices_AddRef( services->services );
1989
1991 TRACE( "returning iface %p\n", *obj );
1992 return S_OK;
1993}
1994
1996{
1997 ISWbemLocator ISWbemLocator_iface;
2000};
2001
2002static inline struct locator *impl_from_ISWbemLocator( ISWbemLocator *iface )
2003{
2004 return CONTAINING_RECORD( iface, struct locator, ISWbemLocator_iface );
2005}
2006
2008 ISWbemLocator *iface )
2009{
2010 struct locator *locator = impl_from_ISWbemLocator( iface );
2011 return InterlockedIncrement( &locator->refs );
2012}
2013
2015 ISWbemLocator *iface )
2016{
2017 struct locator *locator = impl_from_ISWbemLocator( iface );
2019 if (!refs)
2020 {
2021 TRACE( "destroying %p\n", locator );
2022 if (locator->locator)
2023 IWbemLocator_Release( locator->locator );
2024 heap_free( locator );
2025 }
2026 return refs;
2027}
2028
2030 ISWbemLocator *iface,
2031 REFIID riid,
2032 void **ppvObject )
2033{
2034 struct locator *locator = impl_from_ISWbemLocator( iface );
2035
2036 TRACE( "%p, %s, %p\n", locator, debugstr_guid( riid ), ppvObject );
2037
2038 if (IsEqualGUID( riid, &IID_ISWbemLocator ) ||
2041 {
2042 *ppvObject = iface;
2043 }
2044 else
2045 {
2046 FIXME( "interface %s not implemented\n", debugstr_guid(riid) );
2047 return E_NOINTERFACE;
2048 }
2049 ISWbemLocator_AddRef( iface );
2050 return S_OK;
2051}
2052
2054 ISWbemLocator *iface,
2055 UINT *count )
2056{
2057 struct locator *locator = impl_from_ISWbemLocator( iface );
2058
2059 TRACE( "%p, %p\n", locator, count );
2060 *count = 1;
2061 return S_OK;
2062}
2063
2065 ISWbemLocator *iface,
2066 UINT index,
2067 LCID lcid,
2068 ITypeInfo **info )
2069{
2070 struct locator *locator = impl_from_ISWbemLocator( iface );
2071 TRACE( "%p, %u, %u, %p\n", locator, index, lcid, info );
2072
2074}
2075
2077 ISWbemLocator *iface,
2078 REFIID riid,
2079 LPOLESTR *names,
2080 UINT count,
2081 LCID lcid,
2082 DISPID *dispid )
2083{
2084 struct locator *locator = impl_from_ISWbemLocator( iface );
2086 HRESULT hr;
2087
2088 TRACE( "%p, %s, %p, %u, %u, %p\n", locator, debugstr_guid(riid), names, count, lcid, dispid );
2089
2090 if (!names || !count || !dispid) return E_INVALIDARG;
2091
2093 if (SUCCEEDED(hr))
2094 {
2095 hr = ITypeInfo_GetIDsOfNames( typeinfo, names, count, dispid );
2096 ITypeInfo_Release( typeinfo );
2097 }
2098 return hr;
2099}
2100
2102 ISWbemLocator *iface,
2103 DISPID member,
2104 REFIID riid,
2105 LCID lcid,
2106 WORD flags,
2107 DISPPARAMS *params,
2108 VARIANT *result,
2109 EXCEPINFO *excep_info,
2110 UINT *arg_err )
2111{
2112 struct locator *locator = impl_from_ISWbemLocator( iface );
2114 HRESULT hr;
2115
2116 TRACE( "%p, %d, %s, %d, %d, %p, %p, %p, %p\n", locator, member, debugstr_guid(riid),
2117 lcid, flags, params, result, excep_info, arg_err );
2118
2120 if (SUCCEEDED(hr))
2121 {
2122 hr = ITypeInfo_Invoke( typeinfo, &locator->ISWbemLocator_iface, member, flags,
2123 params, result, excep_info, arg_err );
2124 ITypeInfo_Release( typeinfo );
2125 }
2126 return hr;
2127}
2128
2130{
2131 static const WCHAR defaultW[] = {'r','o','o','t','\\','d','e','f','a','u','l','t',0};
2132 ULONG len, len_server = 0, len_namespace = 0;
2133 BSTR ret;
2134
2135 if (server && *server) len_server = lstrlenW( server );
2136 else len_server = 1;
2137 if (namespace && *namespace) len_namespace = lstrlenW( namespace );
2138 else len_namespace = ARRAY_SIZE(defaultW) - 1;
2139
2140 if (!(ret = SysAllocStringLen( NULL, 2 + len_server + 1 + len_namespace ))) return NULL;
2141
2142 ret[0] = ret[1] = '\\';
2143 if (server && *server) lstrcpyW( ret + 2, server );
2144 else ret[2] = '.';
2145
2146 len = len_server + 2;
2147 ret[len++] = '\\';
2148
2149 if (namespace && *namespace) lstrcpyW( ret + len, namespace );
2150 else lstrcpyW( ret + len, defaultW );
2151 return ret;
2152}
2153
2155 ISWbemLocator *iface,
2156 BSTR strServer,
2157 BSTR strNamespace,
2158 BSTR strUser,
2159 BSTR strPassword,
2160 BSTR strLocale,
2161 BSTR strAuthority,
2162 LONG iSecurityFlags,
2163 IDispatch *objWbemNamedValueSet,
2164 ISWbemServices **objWbemServices )
2165{
2166 struct locator *locator = impl_from_ISWbemLocator( iface );
2168 BSTR resource;
2169 HRESULT hr;
2170
2171 TRACE( "%p, %s, %s, %s, %p, %s, %s, 0x%08x, %p, %p\n", iface, debugstr_w(strServer),
2172 debugstr_w(strNamespace), debugstr_w(strUser), strPassword, debugstr_w(strLocale),
2173 debugstr_w(strAuthority), iSecurityFlags, objWbemNamedValueSet, objWbemServices );
2174
2175 if (objWbemNamedValueSet) FIXME( "context not supported\n" );
2176
2177 if (!locator->locator)
2178 {
2179 hr = CoCreateInstance( &CLSID_WbemLocator, NULL, CLSCTX_INPROC_SERVER, &IID_IWbemLocator,
2180 (void **)&locator->locator );
2181 if (hr != S_OK) return hr;
2182 }
2183
2184 if (!(resource = build_resource_string( strServer, strNamespace ))) return E_OUTOFMEMORY;
2185 hr = IWbemLocator_ConnectServer( locator->locator, resource, strUser, strPassword, strLocale,
2186 iSecurityFlags, strAuthority, NULL, &services );
2188 if (hr != S_OK) return hr;
2189
2190 hr = SWbemServices_create( services, objWbemServices );
2191 IWbemServices_Release( services );
2192 return hr;
2193}
2194
2196 ISWbemLocator *iface,
2197 ISWbemSecurity **objWbemSecurity )
2198{
2199 TRACE( "%p, %p\n", iface, objWbemSecurity );
2200
2201 if (!objWbemSecurity)
2202 return E_INVALIDARG;
2203
2204 return ISWbemSecurity_create( objWbemSecurity );
2205}
2206
2207static const ISWbemLocatorVtbl locator_vtbl =
2208{
2218};
2219
2221{
2222 struct locator *locator;
2223
2224 TRACE( "%p\n", obj );
2225
2226 if (!(locator = heap_alloc( sizeof(*locator) ))) return E_OUTOFMEMORY;
2228 locator->refs = 1;
2229 locator->locator = NULL;
2230
2232 TRACE( "returning iface %p\n", *obj );
2233 return S_OK;
2234}
2235
2237{
2238 ISWbemSecurity ISWbemSecurity_iface;
2240 WbemImpersonationLevelEnum implevel;
2241 WbemAuthenticationLevelEnum authlevel;
2242};
2243
2244static inline struct security *impl_from_ISWbemSecurity( ISWbemSecurity *iface )
2245{
2246 return CONTAINING_RECORD( iface, struct security, ISWbemSecurity_iface );
2247}
2248
2250 ISWbemSecurity *iface )
2251{
2252 struct security *security = impl_from_ISWbemSecurity( iface );
2254}
2255
2257 ISWbemSecurity *iface )
2258{
2259 struct security *security = impl_from_ISWbemSecurity( iface );
2261 if (!refs)
2262 {
2263 TRACE( "destroying %p\n", security );
2265 }
2266 return refs;
2267}
2268
2270 ISWbemSecurity *iface,
2271 REFIID riid,
2272 void **ppvObject )
2273{
2274 struct security *security = impl_from_ISWbemSecurity( iface );
2275 TRACE( "%p, %s, %p\n", security, debugstr_guid( riid ), ppvObject );
2276
2277 if (IsEqualGUID( riid, &IID_ISWbemSecurity ) ||
2280 {
2281 *ppvObject = iface;
2282 }
2283 else
2284 {
2285 FIXME( "interface %s not implemented\n", debugstr_guid(riid) );
2286 return E_NOINTERFACE;
2287 }
2288 ISWbemSecurity_AddRef( iface );
2289 return S_OK;
2290}
2291
2293 ISWbemSecurity *iface,
2294 UINT *count )
2295{
2296 struct security *security = impl_from_ISWbemSecurity( iface );
2297 TRACE( "%p, %p\n", security, count );
2298
2299 *count = 1;
2300 return S_OK;
2301}
2302
2304 ISWbemSecurity *iface,
2305 UINT index,
2306 LCID lcid,
2307 ITypeInfo **info )
2308{
2309 struct security *security = impl_from_ISWbemSecurity( iface );
2310 TRACE( "%p, %u, %u, %p\n", security, index, lcid, info );
2311
2313}
2314
2316 ISWbemSecurity *iface,
2317 REFIID riid,
2318 LPOLESTR *names,
2319 UINT count,
2320 LCID lcid,
2321 DISPID *dispid )
2322{
2323 struct security *security = impl_from_ISWbemSecurity( iface );
2325 HRESULT hr;
2326
2327 TRACE( "%p, %s, %p, %u, %u, %p\n", security, debugstr_guid(riid), names, count, lcid, dispid );
2328
2329 if (!names || !count || !dispid) return E_INVALIDARG;
2330
2332 if (SUCCEEDED(hr))
2333 {
2334 hr = ITypeInfo_GetIDsOfNames( typeinfo, names, count, dispid );
2335 ITypeInfo_Release( typeinfo );
2336 }
2337 return hr;
2338}
2339
2341 ISWbemSecurity *iface,
2342 DISPID member,
2343 REFIID riid,
2344 LCID lcid,
2345 WORD flags,
2346 DISPPARAMS *params,
2347 VARIANT *result,
2348 EXCEPINFO *excep_info,
2349 UINT *arg_err )
2350{
2351 struct security *security = impl_from_ISWbemSecurity( iface );
2353 HRESULT hr;
2354
2355 TRACE( "%p, %d, %s, %d, %d, %p, %p, %p, %p\n", security, member, debugstr_guid(riid),
2356 lcid, flags, params, result, excep_info, arg_err );
2357
2359 if (SUCCEEDED(hr))
2360 {
2361 hr = ITypeInfo_Invoke( typeinfo, &security->ISWbemSecurity_iface, member, flags,
2362 params, result, excep_info, arg_err );
2363 ITypeInfo_Release( typeinfo );
2364 }
2365 return hr;
2366}
2367
2369 ISWbemSecurity *iface,
2370 WbemImpersonationLevelEnum *impersonation_level )
2371{
2372 struct security *security = impl_from_ISWbemSecurity( iface );
2373 FIXME( "%p, %p: stub\n", security, impersonation_level );
2374
2375 if (!impersonation_level)
2376 return E_INVALIDARG;
2377
2378 *impersonation_level = security->implevel;
2379 return S_OK;
2380}
2381
2383 ISWbemSecurity *iface,
2384 WbemImpersonationLevelEnum impersonation_level )
2385{
2386 struct security *security = impl_from_ISWbemSecurity( iface );
2387 FIXME( "%p, %d: stub\n", security, impersonation_level );
2388
2389 security->implevel = impersonation_level;
2390 return S_OK;
2391}
2392
2394 ISWbemSecurity *iface,
2395 WbemAuthenticationLevelEnum *authentication_level )
2396{
2397 struct security *security = impl_from_ISWbemSecurity( iface );
2398 FIXME( "%p, %p: stub\n", security, authentication_level );
2399
2400 if (!authentication_level)
2401 return E_INVALIDARG;
2402
2403 *authentication_level = security->authlevel;
2404 return S_OK;
2405}
2406
2408 ISWbemSecurity *iface,
2409 WbemAuthenticationLevelEnum authentication_level )
2410{
2411 struct security *security = impl_from_ISWbemSecurity( iface );
2412 FIXME( "%p, %d: stub\n", security, authentication_level );
2413
2414 security->authlevel = authentication_level;
2415 return S_OK;
2416}
2417
2419 ISWbemSecurity *iface,
2420 ISWbemPrivilegeSet **privilege_set )
2421{
2422 struct security *security = impl_from_ISWbemSecurity( iface );
2423 FIXME( "%p, %p: stub\n", security, privilege_set );
2424
2425 if (!privilege_set)
2426 return E_INVALIDARG;
2427
2428 return E_NOTIMPL;
2429}
2430
2431static const ISWbemSecurityVtbl security_vtbl =
2432{
2445};
2446
2447static HRESULT ISWbemSecurity_create( ISWbemSecurity **obj )
2448{
2449 struct security *security;
2450
2451 TRACE( "%p\n", obj );
2452
2453 if (!(security = heap_alloc( sizeof(*security) ))) return E_OUTOFMEMORY;
2455 security->refs = 1;
2456 security->implevel = wbemImpersonationLevelImpersonate;
2457 security->authlevel = wbemAuthenticationLevelPktPrivacy;
2458
2460 TRACE( "returning iface %p\n", *obj );
2461 return S_OK;
2462}
static ITypeLib * typelib
Definition: apps.c:108
static void * heap_alloc(size_t len)
Definition: appwiz.h:66
static BOOL heap_free(void *mem)
Definition: appwiz.h:76
#define InterlockedIncrement
Definition: armddk.h:53
#define InterlockedDecrement
Definition: armddk.h:52
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
Definition: precomp.h:23
#define ARRAY_SIZE(A)
Definition: main.h:33
const GUID IID_IUnknown
#define FIXME(fmt,...)
Definition: debug.h:114
#define ERR(fmt,...)
Definition: debug.h:113
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_INVALIDARG
Definition: ddrawi.h:101
#define E_NOTIMPL
Definition: ddrawi.h:99
#define E_FAIL
Definition: ddrawi.h:102
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
OLECHAR * BSTR
Definition: compat.h:2293
#define lstrcpyW
Definition: compat.h:749
short VARIANT_BOOL
Definition: compat.h:2290
@ VT_DISPATCH
Definition: compat.h:2304
#define wcsicmp
Definition: compat.h:15
#define lstrlenW
Definition: compat.h:750
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
Definition: compobj.c:3325
HRESULT WINAPI LoadRegTypeLib(REFGUID rguid, WORD wVerMajor, WORD wVerMinor, LCID lcid, ITypeLib **ppTLib)
Definition: typelib.c:531
static void *static void *static LPDIRECTPLAY IUnknown * pUnk
Definition: dplayx.c:30
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned short WORD
Definition: ntddk_ex.h:93
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLuint GLuint * names
Definition: glext.h:11545
GLuint index
Definition: glext.h:6031
GLenum const GLfloat * params
Definition: glext.h:5645
GLbitfield flags
Definition: glext.h:7161
GLuint GLfloat * val
Definition: glext.h:7180
GLenum GLsizei len
Definition: glext.h:6722
GLuint64EXT * result
Definition: glext.h:11304
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
static int is_array(const type_t *t)
Definition: header.h:64
type_id
static const WCHAR selectW[]
Definition: htmlelem.c:38
REFIID riid
Definition: atlbase.h:39
#define InterlockedCompareExchangePointer
Definition: interlocked.h:129
#define S_OK
Definition: intsafe.h:52
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define FAILED(hr)
Definition: intsafe.h:51
#define resource
Definition: kernel32.h:9
#define debugstr_guid
Definition: kernel32.h:35
#define debugstr_w
Definition: kernel32.h:32
static HRESULT WINAPI property_Invoke(ISWbemProperty *iface, DISPID member, REFIID riid, LCID lcid, WORD flags, DISPPARAMS *params, VARIANT *result, EXCEPINFO *excep_info, UINT *arg_err)
Definition: locator.c:193
static ULONG WINAPI security_AddRef(ISWbemSecurity *iface)
Definition: locator.c:2249
static HRESULT SWbemProperty_create(IWbemClassObject *wbem_object, BSTR name, ISWbemProperty **obj)
Definition: locator.c:284
static HRESULT WINAPI object_ExecMethodAsync_(ISWbemObject *iface, IDispatch *objWbemSink, BSTR strMethodName, IDispatch *objWbemInParameters, LONG iFlags, IDispatch *objWbemNamedValueSet, IDispatch *objWbemAsyncContext)
Definition: locator.c:951
static HRESULT WINAPI enumvar_Clone(IEnumVARIANT *iface, IEnumVARIANT **penum)
Definition: locator.c:1478
static HRESULT WINAPI propertyset_GetIDsOfNames(ISWbemPropertySet *iface, REFIID riid, LPOLESTR *names, UINT count, LCID lcid, DISPID *dispid)
Definition: locator.c:372
static HRESULT WINAPI services_ExecMethodAsync(ISWbemServices *iface, IDispatch *objWbemSink, BSTR strObjectPath, BSTR strMethodName, IDispatch *objWbemInParameters, LONG iFlags, IDispatch *objWbemNamedValueSet, IDispatch *objWbemAsyncContext)
Definition: locator.c:1922
static HRESULT WINAPI enumvar_Reset(IEnumVARIANT *iface)
Definition: locator.c:1469
static const ISWbemServicesVtbl services_vtbl
Definition: locator.c:1948
static HRESULT WINAPI object_PutAsync_(ISWbemObject *iface, IDispatch *objWbemSink, LONG iFlags, IDispatch *objWbemNamedValueSet, IDispatch *objWbemAsyncContext)
Definition: locator.c:798
static HRESULT WINAPI object_Associators_(ISWbemObject *iface, BSTR strAssocClass, BSTR strResultClass, BSTR strResultRole, BSTR strRole, VARIANT_BOOL bClassesOnly, VARIANT_BOOL bSchemaOnly, BSTR strRequiredAssocQualifier, BSTR strRequiredQualifier, LONG iFlags, IDispatch *objWbemNamedValueSet, ISWbemObjectSet **objWbemObjectSet)
Definition: locator.c:871
static HRESULT WINAPI objectset_ItemIndex(ISWbemObjectSet *iface, LONG lIndex, ISWbemObject **objWbemObject)
Definition: locator.c:1296
static REFIID wbemdisp_tid_id[]
Definition: locator.c:56
static BSTR build_query_string(const WCHAR *class)
Definition: locator.c:1702
static ULONG WINAPI object_Release(ISWbemObject *iface)
Definition: locator.c:534
static HRESULT WINAPI object_AssociatorsAsync_(ISWbemObject *iface, IDispatch *objWbemSink, BSTR strAssocClass, BSTR strResultClass, BSTR strResultRole, BSTR strRole, VARIANT_BOOL bClassesOnly, VARIANT_BOOL bSchemaOnly, BSTR strRequiredAssocQualifier, BSTR strRequiredQualifier, LONG iFlags, IDispatch *objWbemNamedValueSet, IDispatch *objWbemAsyncContext)
Definition: locator.c:889
static HRESULT WINAPI locator_QueryInterface(ISWbemLocator *iface, REFIID riid, void **ppvObject)
Definition: locator.c:2029
static HRESULT WINAPI security_GetTypeInfoCount(ISWbemSecurity *iface, UINT *count)
Definition: locator.c:2292
static HRESULT WINAPI object_GetTypeInfo(ISWbemObject *iface, UINT index, LCID lcid, ITypeInfo **info)
Definition: locator.c:587
static HRESULT WINAPI property_get_Qualifiers_(ISWbemProperty *iface, ISWbemQualifierSet **objWbemQualifierSet)
Definition: locator.c:253
static ITypeLib * wbemdisp_typelib
Definition: locator.c:53
static HRESULT WINAPI object_get_Derivation_(ISWbemObject *iface, VARIANT *strClassNameArray)
Definition: locator.c:1033
static HRESULT WINAPI propertyset_QueryInterface(ISWbemPropertySet *iface, REFIID riid, void **obj)
Definition: locator.c:333
static HRESULT WINAPI property_GetTypeInfoCount(ISWbemProperty *iface, UINT *count)
Definition: locator.c:156
static HRESULT WINAPI property_QueryInterface(ISWbemProperty *iface, REFIID riid, void **obj)
Definition: locator.c:135
static HRESULT WINAPI property_get_Name(ISWbemProperty *iface, BSTR *strName)
Definition: locator.c:229
static HRESULT WINAPI security_put_ImpersonationLevel(ISWbemSecurity *iface, WbemImpersonationLevelEnum impersonation_level)
Definition: locator.c:2382
HRESULT SWbemLocator_create(void **obj)
Definition: locator.c:2220
static DISPID get_member_dispid(struct object *object, const WCHAR *name)
Definition: locator.c:679
static HRESULT WINAPI object_Invoke(ISWbemObject *iface, DISPID member, REFIID riid, LCID lcid, WORD flags, DISPPARAMS *params, VARIANT *result, EXCEPINFO *excep_info, UINT *arg_err)
Definition: locator.c:745
static HRESULT WINAPI services_get_Security_(ISWbemServices *iface, ISWbemSecurity **objWbemSecurity)
Definition: locator.c:1936
static HRESULT WINAPI services_ExecMethod(ISWbemServices *iface, BSTR strObjectPath, BSTR strMethodName, IDispatch *objWbemInParameters, LONG iFlags, IDispatch *objWbemNamedValueSet, ISWbemObject **objWbemOutParameters)
Definition: locator.c:1909
static HRESULT WINAPI services_DeleteAsync(ISWbemServices *This, IDispatch *objWbemSink, BSTR strObjectPath, LONG iFlags, IDispatch *objWbemNamedValueSet, IDispatch *objWbemAsyncContext)
Definition: locator.c:1690
static HRESULT WINAPI objectset_Item(ISWbemObjectSet *iface, BSTR strObjectPath, LONG iFlags, ISWbemObject **objWbemObject)
Definition: locator.c:1266
static HRESULT WINAPI security_Invoke(ISWbemSecurity *iface, DISPID member, REFIID riid, LCID lcid, WORD flags, DISPPARAMS *params, VARIANT *result, EXCEPINFO *excep_info, UINT *arg_err)
Definition: locator.c:2340
static HRESULT WINAPI property_get_IsArray(ISWbemProperty *iface, VARIANT_BOOL *bIsArray)
Definition: locator.c:259
static HRESULT SWbemObject_create(IWbemClassObject *wbem_object, ISWbemObject **obj)
Definition: locator.c:1093
static HRESULT WINAPI services_GetTypeInfoCount(ISWbemServices *iface, UINT *count)
Definition: locator.c:1568
static HRESULT WINAPI services_Delete(ISWbemServices *iface, BSTR strObjectPath, LONG iFlags, IDispatch *objWbemNamedValueSet)
Definition: locator.c:1680
static ULONG WINAPI security_Release(ISWbemSecurity *iface)
Definition: locator.c:2256
static const ISWbemPropertySetVtbl propertyset_vtbl
Definition: locator.c:467
static HRESULT WINAPI services_Get(ISWbemServices *iface, BSTR strObjectPath, LONG iFlags, IDispatch *objWbemNamedValueSet, ISWbemObject **objWbemObject)
Definition: locator.c:1644
static HRESULT SWbemObjectSet_create(IEnumWbemClassObject *wbem_objectenum, ISWbemObjectSet **obj)
Definition: locator.c:1360
static HRESULT WINAPI object_SpawnInstance_(ISWbemObject *iface, LONG iFlags, ISWbemObject **objWbemObject)
Definition: locator.c:990
static HRESULT WINAPI object_get_Qualifiers_(ISWbemObject *iface, ISWbemQualifierSet **objWbemQualifierSet)
Definition: locator.c:1009
static HRESULT ISWbemSecurity_create(ISWbemSecurity **)
Definition: locator.c:2447
static ULONG WINAPI object_AddRef(ISWbemObject *iface)
Definition: locator.c:527
static HRESULT WINAPI locator_get_Security_(ISWbemLocator *iface, ISWbemSecurity **objWbemSecurity)
Definition: locator.c:2195
static HRESULT WINAPI locator_Invoke(ISWbemLocator *iface, DISPID member, REFIID riid, LCID lcid, WORD flags, DISPPARAMS *params, VARIANT *result, EXCEPINFO *excep_info, UINT *arg_err)
Definition: locator.c:2101
static HRESULT WINAPI locator_GetTypeInfoCount(ISWbemLocator *iface, UINT *count)
Definition: locator.c:2053
static HRESULT WINAPI property_get_IsLocal(ISWbemProperty *iface, VARIANT_BOOL *bIsLocal)
Definition: locator.c:235
static HRESULT WINAPI locator_GetTypeInfo(ISWbemLocator *iface, UINT index, LCID lcid, ITypeInfo **info)
Definition: locator.c:2064
static HRESULT WINAPI object_get_Path_(ISWbemObject *iface, ISWbemObjectPath **objWbemObjectPath)
Definition: locator.c:1041
static HRESULT WINAPI object_SubclassesAsync_(ISWbemObject *iface, IDispatch *objWbemSink, LONG iFlags, IDispatch *objWbemNamedValueSet, IDispatch *objWbemAsyncContext)
Definition: locator.c:860
static HRESULT WINAPI propertyset_get__NewEnum(ISWbemPropertySet *iface, IUnknown **unk)
Definition: locator.c:413
static HRESULT WINAPI objectset_GetTypeInfo(ISWbemObjectSet *iface, UINT index, LCID lcid, ITypeInfo **info)
Definition: locator.c:1183
static struct property * impl_from_ISWbemProperty(ISWbemProperty *iface)
Definition: locator.c:110
static HRESULT WINAPI services_ExecQuery(ISWbemServices *iface, BSTR strQuery, BSTR strQueryLanguage, LONG iFlags, IDispatch *objWbemNamedValueSet, ISWbemObjectSet **objWbemObjectSet)
Definition: locator.c:1774
static HRESULT WINAPI objectset_get__NewEnum(ISWbemObjectSet *iface, IUnknown **pUnk)
Definition: locator.c:1248
static HRESULT WINAPI propertyset_Add(ISWbemPropertySet *iface, BSTR name, WbemCimtypeEnum type, VARIANT_BOOL is_array, LONG flags, ISWbemProperty **prop)
Definition: locator.c:454
static HRESULT WINAPI property_GetTypeInfo(ISWbemProperty *iface, UINT index, LCID lcid, ITypeInfo **info)
Definition: locator.c:164
static HRESULT WINAPI object_get_Security_(ISWbemObject *iface, ISWbemSecurity **objWbemSecurity)
Definition: locator.c:1049
static HRESULT WINAPI object_GetTypeInfoCount(ISWbemObject *iface, UINT *count)
Definition: locator.c:576
static HRESULT WINAPI objectset_Invoke(ISWbemObjectSet *iface, DISPID member, REFIID riid, LCID lcid, WORD flags, DISPPARAMS *params, VARIANT *result, EXCEPINFO *excep_info, UINT *arg_err)
Definition: locator.c:1220
static HRESULT WINAPI propertyset_get_Count(ISWbemPropertySet *iface, LONG *count)
Definition: locator.c:437
static HRESULT WINAPI object_InstancesAsync_(ISWbemObject *iface, IDispatch *objWbemSink, LONG iFlags, IDispatch *objWbemNamedValueSet, IDispatch *objWbemAsyncContext)
Definition: locator.c:839
static HRESULT WINAPI services_ExecNotificationQuery(ISWbemServices *iface, BSTR strQuery, BSTR strQueryLanguage, LONG iFlags, IDispatch *objWbemNamedValueSet, ISWbemEventSource **objWbemEventSource)
Definition: locator.c:1884
static HRESULT SWbemPropertySet_create(IWbemClassObject *wbem_object, ISWbemPropertySet **obj)
Definition: locator.c:483
static HRESULT WINAPI services_AssociatorsOfAsync(ISWbemServices *iface, IDispatch *objWbemSink, BSTR strObjectPath, BSTR strAssocClass, BSTR strResultClass, BSTR strResultRole, BSTR strRole, VARIANT_BOOL bClassesOnly, VARIANT_BOOL bSchemaOnly, BSTR strRequiredAssocQualifier, BSTR strRequiredQualifier, LONG iFlags, IDispatch *objWbemNamedValueSet, IDispatch *objWbemAsyncContext)
Definition: locator.c:1831
static const ISWbemSecurityVtbl security_vtbl
Definition: locator.c:2431
static HRESULT WINAPI security_get_AuthenticationLevel(ISWbemSecurity *iface, WbemAuthenticationLevelEnum *authentication_level)
Definition: locator.c:2393
static BSTR get_member_name(struct object *object, DISPID dispid)
Definition: locator.c:735
static HRESULT WINAPI property_get_Value(ISWbemProperty *iface, VARIANT *value)
Definition: locator.c:214
static ULONG WINAPI services_Release(ISWbemServices *iface)
Definition: locator.c:1530
static HRESULT WINAPI object_References_(ISWbemObject *iface, BSTR strResultClass, BSTR strRole, VARIANT_BOOL bClassesOnly, VARIANT_BOOL bSchemaOnly, BSTR strRequiredQualifier, LONG iFlags, IDispatch *objWbemNamedValueSet, ISWbemObjectSet **objWbemObjectSet)
Definition: locator.c:908
static HRESULT WINAPI services_SubclassesOf(ISWbemServices *iface, BSTR strSuperclass, LONG iFlags, IDispatch *objWbemNamedValueSet, ISWbemObjectSet **objWbemObjectSet)
Definition: locator.c:1751
static HRESULT WINAPI services_InstancesOf(ISWbemServices *iface, BSTR strClass, LONG iFlags, IDispatch *objWbemNamedValueSet, ISWbemObjectSet **objWbemObjectSet)
Definition: locator.c:1714
static const ISWbemLocatorVtbl locator_vtbl
Definition: locator.c:2207
static ULONG WINAPI objectset_Release(ISWbemObjectSet *iface)
Definition: locator.c:1135
static struct locator * impl_from_ISWbemLocator(ISWbemLocator *iface)
Definition: locator.c:2002
static HRESULT get_typeinfo(enum type_id tid, ITypeInfo **ret)
Definition: locator.c:67
static HRESULT WINAPI security_get_ImpersonationLevel(ISWbemSecurity *iface, WbemImpersonationLevelEnum *impersonation_level)
Definition: locator.c:2368
static HRESULT WINAPI enumvar_Next(IEnumVARIANT *iface, ULONG celt, VARIANT *var, ULONG *fetched)
Definition: locator.c:1435
static HRESULT WINAPI services_ExecNotificationQueryAsync(ISWbemServices *iface, IDispatch *objWbemSink, BSTR strQuery, BSTR strQueryLanguage, LONG iFlags, IDispatch *objWbemNamedValueSet, IDispatch *objWbemAsyncContext)
Definition: locator.c:1896
static HRESULT WINAPI services_InstancesOfAsync(ISWbemServices *iface, IDispatch *objWbemSink, BSTR strClass, LONG iFlags, IDispatch *objWbemNamedValueSet, IDispatch *objWbemAsyncContext)
Definition: locator.c:1739
static HRESULT WINAPI property_GetIDsOfNames(ISWbemProperty *iface, REFIID riid, LPOLESTR *names, UINT count, LCID lcid, DISPID *dispid)
Definition: locator.c:173
static HRESULT WINAPI security_put_AuthenticationLevel(ISWbemSecurity *iface, WbemAuthenticationLevelEnum authentication_level)
Definition: locator.c:2407
static struct services * impl_from_ISWbemServices(ISWbemServices *iface)
Definition: locator.c:1517
static HRESULT WINAPI object_Subclasses_(ISWbemObject *iface, LONG iFlags, IDispatch *objWbemNamedValueSet, ISWbemObjectSet **objWbemObjectSet)
Definition: locator.c:850
@ ISWbemObject_tid
Definition: locator.c:44
@ ISWbemObjectSet_tid
Definition: locator.c:45
@ ISWbemSecurity_tid
Definition: locator.c:49
@ last_tid
Definition: locator.c:50
@ ISWbemLocator_tid
Definition: locator.c:43
@ ISWbemPropertySet_tid
Definition: locator.c:47
@ ISWbemProperty_tid
Definition: locator.c:46
@ ISWbemServices_tid
Definition: locator.c:48
static const struct IEnumVARIANTVtbl enumvar_vtbl
Definition: locator.c:1484
static HRESULT WINAPI propertyset_GetTypeInfo(ISWbemPropertySet *iface, UINT index, LCID lcid, ITypeInfo **info)
Definition: locator.c:363
static ULONG WINAPI property_Release(ISWbemProperty *iface)
Definition: locator.c:121
static ULONG WINAPI propertyset_AddRef(ISWbemPropertySet *iface)
Definition: locator.c:314
static struct objectset * impl_from_ISWbemObjectSet(ISWbemObjectSet *iface)
Definition: locator.c:1122
static HRESULT WINAPI object_get_Methods_(ISWbemObject *iface, ISWbemMethodSet **objWbemMethodSet)
Definition: locator.c:1025
static HRESULT WINAPI services_ReferencesToAsync(ISWbemServices *iface, IDispatch *objWbemSink, BSTR strObjectPath, BSTR strResultClass, BSTR strRole, VARIANT_BOOL bClassesOnly, VARIANT_BOOL bSchemaOnly, BSTR strRequiredQualifier, LONG iFlags, IDispatch *objWbemNamedValueSet, IDispatch *objWbemAsyncContext)
Definition: locator.c:1867
static const ISWbemPropertyVtbl property_vtbl
Definition: locator.c:265
static HRESULT WINAPI security_GetIDsOfNames(ISWbemSecurity *iface, REFIID riid, LPOLESTR *names, UINT count, LCID lcid, DISPID *dispid)
Definition: locator.c:2315
static HRESULT WINAPI propertyset_Invoke(ISWbemPropertySet *iface, DISPID member, REFIID riid, LCID lcid, WORD flags, DISPPARAMS *params, VARIANT *result, EXCEPINFO *excep_info, UINT *arg_err)
Definition: locator.c:392
static HRESULT WINAPI object_Put_(ISWbemObject *iface, LONG iFlags, IDispatch *objWbemNamedValueSet, ISWbemObjectPath **objWbemObjectPath)
Definition: locator.c:788
static HRESULT WINAPI services_AssociatorsOf(ISWbemServices *iface, BSTR strObjectPath, BSTR strAssocClass, BSTR strResultClass, BSTR strResultRole, BSTR strRole, VARIANT_BOOL bClassesOnly, VARIANT_BOOL bSchemaOnly, BSTR strRequiredAssocQualifier, BSTR strRequiredQualifier, LONG iFlags, IDispatch *objWbemNamedValueSet, ISWbemObjectSet **objWbemObjectSet)
Definition: locator.c:1812
static HRESULT WINAPI object_Clone_(ISWbemObject *iface, ISWbemObject **objWbemObject)
Definition: locator.c:964
static HRESULT WINAPI propertyset_Item(ISWbemPropertySet *iface, BSTR name, LONG flags, ISWbemProperty **prop)
Definition: locator.c:419
static HRESULT WINAPI objectset_GetTypeInfoCount(ISWbemObjectSet *iface, UINT *count)
Definition: locator.c:1173
static HRESULT WINAPI services_ExecQueryAsync(ISWbemServices *iface, IDispatch *objWbemSink, BSTR strQuery, BSTR strQueryLanguage, LONG lFlags, IDispatch *objWbemNamedValueSet, IDispatch *objWbemAsyncContext)
Definition: locator.c:1799
static const ISWbemObjectSetVtbl objectset_vtbl
Definition: locator.c:1336
static HRESULT WINAPI object_GetIDsOfNames(ISWbemObject *iface, REFIID riid, LPOLESTR *names, UINT count, LCID lcid, DISPID *dispid)
Definition: locator.c:699
static HRESULT WINAPI services_ReferencesTo(ISWbemServices *iface, BSTR strObjectPath, BSTR strResultClass, BSTR strRole, VARIANT_BOOL bClassesOnly, VARIANT_BOOL bSchemaOnly, BSTR strRequiredQualifier, LONG iFlags, IDispatch *objWbemNamedValueSet, ISWbemObjectSet **objWbemObjectSet)
Definition: locator.c:1851
static ULONG WINAPI locator_Release(ISWbemLocator *iface)
Definition: locator.c:2014
static HRESULT WINAPI objectset_QueryInterface(ISWbemObjectSet *iface, REFIID riid, void **ppvObject)
Definition: locator.c:1149
static ULONG WINAPI propertyset_Release(ISWbemPropertySet *iface)
Definition: locator.c:320
static ITypeInfo * wbemdisp_typeinfo[last_tid]
Definition: locator.c:54
static LONG get_object_count(IEnumWbemClassObject *iter)
Definition: locator.c:1352
static struct propertyset * impl_from_ISWbemPropertySet(ISWbemPropertySet *iface)
Definition: locator.c:308
static HRESULT WINAPI security_get_Privileges(ISWbemSecurity *iface, ISWbemPrivilegeSet **privilege_set)
Definition: locator.c:2418
static HRESULT WINAPI object_CompareTo_(ISWbemObject *iface, IDispatch *objWbemObject, LONG iFlags, VARIANT_BOOL *bResult)
Definition: locator.c:999
static HRESULT EnumVARIANT_create(IEnumWbemClassObject *, IEnumVARIANT **)
Definition: locator.c:1495
static HRESULT WINAPI services_SubclassesOfAsync(ISWbemServices *iface, IDispatch *objWbemSink, BSTR strSuperclass, LONG iFlags, IDispatch *objWbemNamedValueSet, IDispatch *objWbemAsyncContext)
Definition: locator.c:1762
#define DISPID_BASE_METHOD
Definition: locator.c:501
static HRESULT init_members(struct object *object)
Definition: locator.c:598
static ULONG WINAPI enumvar_AddRef(IEnumVARIANT *iface)
Definition: locator.c:1391
static HRESULT WINAPI object_ExecMethod_(ISWbemObject *iface, BSTR strMethodName, IDispatch *objWbemInParameters, LONG iFlags, IDispatch *objWbemNamedValueSet, ISWbemObject **objWbemOutParameters)
Definition: locator.c:939
static ULONG WINAPI objectset_AddRef(ISWbemObjectSet *iface)
Definition: locator.c:1128
static HRESULT WINAPI objectset_GetIDsOfNames(ISWbemObjectSet *iface, REFIID riid, LPOLESTR *names, UINT count, LCID lcid, DISPID *dispid)
Definition: locator.c:1195
static ULONG WINAPI locator_AddRef(ISWbemLocator *iface)
Definition: locator.c:2007
static HRESULT WINAPI security_GetTypeInfo(ISWbemSecurity *iface, UINT index, LCID lcid, ITypeInfo **info)
Definition: locator.c:2303
static HRESULT WINAPI services_GetIDsOfNames(ISWbemServices *iface, REFIID riid, LPOLESTR *names, UINT count, LCID lcid, DISPID *dispid)
Definition: locator.c:1591
static HRESULT WINAPI object_get_Properties_(ISWbemObject *iface, ISWbemPropertySet **prop_set)
Definition: locator.c:1017
static HRESULT WINAPI object_Delete_(ISWbemObject *iface, LONG iFlags, IDispatch *objWbemNamedValueSet)
Definition: locator.c:809
static HRESULT WINAPI locator_ConnectServer(ISWbemLocator *iface, BSTR strServer, BSTR strNamespace, BSTR strUser, BSTR strPassword, BSTR strLocale, BSTR strAuthority, LONG iSecurityFlags, IDispatch *objWbemNamedValueSet, ISWbemServices **objWbemServices)
Definition: locator.c:2154
static HRESULT WINAPI object_Instances_(ISWbemObject *iface, LONG iFlags, IDispatch *objWbemNamedValueSet, ISWbemObjectSet **objWbemObjectSet)
Definition: locator.c:829
static HRESULT WINAPI propertyset_GetTypeInfoCount(ISWbemPropertySet *iface, UINT *count)
Definition: locator.c:355
static HRESULT WINAPI objectset_get_Security_(ISWbemObjectSet *iface, ISWbemSecurity **objWbemSecurity)
Definition: locator.c:1288
static HRESULT WINAPI enumvar_Skip(IEnumVARIANT *iface, ULONG celt)
Definition: locator.c:1460
static HRESULT WINAPI services_GetAsync(ISWbemServices *iface, IDispatch *objWbemSink, BSTR strObjectPath, LONG iFlags, IDispatch *objWbemNamedValueSet, IDispatch *objWbemAsyncContext)
Definition: locator.c:1668
static HRESULT WINAPI object_ReferencesAsync_(ISWbemObject *iface, IDispatch *objWbemSink, BSTR strResultClass, BSTR strRole, VARIANT_BOOL bClassesOnly, VARIANT_BOOL bSchemaOnly, BSTR strRequiredQualifier, LONG iFlags, IDispatch *objWbemNamedValueSet, IDispatch *objWbemAsyncContext)
Definition: locator.c:923
#define DISPID_BASE
Definition: locator.c:500
static HRESULT WINAPI property_get_Origin(ISWbemProperty *iface, BSTR *strOrigin)
Definition: locator.c:241
static HRESULT WINAPI locator_GetIDsOfNames(ISWbemLocator *iface, REFIID riid, LPOLESTR *names, UINT count, LCID lcid, DISPID *dispid)
Definition: locator.c:2076
static HRESULT WINAPI services_QueryInterface(ISWbemServices *iface, REFIID riid, void **ppvObject)
Definition: locator.c:1544
static HRESULT WINAPI property_put_Value(ISWbemProperty *iface, VARIANT *varValue)
Definition: locator.c:223
static struct security * impl_from_ISWbemSecurity(ISWbemSecurity *iface)
Definition: locator.c:2244
static HRESULT WINAPI objectset_get_Count(ISWbemObjectSet *iface, LONG *iCount)
Definition: locator.c:1276
static HRESULT WINAPI propertyset_Remove(ISWbemPropertySet *iface, BSTR name, LONG flags)
Definition: locator.c:461
static BSTR build_resource_string(BSTR server, BSTR namespace)
Definition: locator.c:2129
static HRESULT WINAPI object_GetObjectText_(ISWbemObject *iface, LONG iFlags, BSTR *strObjectText)
Definition: locator.c:972
static HRESULT WINAPI services_Invoke(ISWbemServices *iface, DISPID member, REFIID riid, LCID lcid, WORD flags, DISPPARAMS *params, VARIANT *result, EXCEPINFO *excep_info, UINT *arg_err)
Definition: locator.c:1616
static struct object * impl_from_ISWbemObject(ISWbemObject *iface)
Definition: locator.c:521
static struct enumvar * impl_from_IEnumVARIANT(IEnumVARIANT *iface)
Definition: locator.c:1385
static const ISWbemObjectVtbl object_vtbl
Definition: locator.c:1057
static HRESULT WINAPI services_GetTypeInfo(ISWbemServices *iface, UINT index, LCID lcid, ITypeInfo **info)
Definition: locator.c:1579
static HRESULT WINAPI object_DeleteAsync_(ISWbemObject *iface, IDispatch *objWbemSink, LONG iFlags, IDispatch *objWbemNamedValueSet, IDispatch *objWbemAsyncContext)
Definition: locator.c:818
static ULONG WINAPI enumvar_Release(IEnumVARIANT *iface)
Definition: locator.c:1398
static HRESULT WINAPI object_QueryInterface(ISWbemObject *iface, REFIID riid, void **ppvObject)
Definition: locator.c:552
static HRESULT WINAPI property_get_CIMType(ISWbemProperty *iface, WbemCimtypeEnum *iCimType)
Definition: locator.c:247
static HRESULT WINAPI object_SpawnDerivedClass_(ISWbemObject *iface, LONG iFlags, ISWbemObject **objWbemObject)
Definition: locator.c:981
static ULONG WINAPI services_AddRef(ISWbemServices *iface)
Definition: locator.c:1523
static ULONG WINAPI property_AddRef(ISWbemProperty *iface)
Definition: locator.c:115
static HRESULT WINAPI security_QueryInterface(ISWbemSecurity *iface, REFIID riid, void **ppvObject)
Definition: locator.c:2269
static HRESULT SWbemServices_create(IWbemServices *wbem_services, ISWbemServices **obj)
Definition: locator.c:1978
static HRESULT WINAPI enumvar_QueryInterface(IEnumVARIANT *iface, REFIID riid, void **ppvObject)
Definition: locator.c:1412
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
Definition: lstring.c:274
#define error(str)
Definition: mkdosfs.c:1605
const char * var
Definition: shader.c:5666
static TfClientId tid
static LPOLESTR
Definition: stg_prop.c:27
static VARIANTARG static DISPID
Definition: ordinal.c:52
static const WCHAR wqlW[]
Definition: query.c:30
unsigned int UINT
Definition: ndis.h:50
#define LOCALE_SYSTEM_DEFAULT
BSTR WINAPI SysAllocString(LPCOLESTR str)
Definition: oleaut.c:238
UINT WINAPI SysStringLen(BSTR str)
Definition: oleaut.c:196
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
Definition: oleaut.c:271
BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len)
Definition: oleaut.c:339
#define DISPATCH_METHOD
Definition: oleauto.h:1006
#define V_VT(A)
Definition: oleauto.h:211
#define V_I4(A)
Definition: oleauto.h:247
#define V_DISPATCH(A)
Definition: oleauto.h:239
#define DISPATCH_PROPERTYGET
Definition: oleauto.h:1007
const GUID IID_IDispatch
long LONG
Definition: pedump.c:60
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define REFIID
Definition: guiddef.h:118
DWORD LCID
Definition: nls.h:13
#define memset(x, y, z)
Definition: compat.h:39
HRESULT hr
Definition: shlfolder.c:183
#define TRACE(s)
Definition: solgame.cpp:4
LONG refs
Definition: locator.c:1381
IEnumVARIANT IEnumVARIANT_iface
Definition: locator.c:1380
IEnumWbemClassObject * objectenum
Definition: locator.c:1382
LONG refs
Definition: locator.c:1998
ISWbemLocator ISWbemLocator_iface
Definition: locator.c:1997
IWbemLocator * locator
Definition: locator.c:1999
BOOL is_method
Definition: locator.c:506
DISPID dispid
Definition: locator.c:507
BSTR name
Definition: locator.c:505
Definition: name.c:39
DISPID last_dispid_method
Definition: locator.c:518
struct member * members
Definition: locator.c:515
DISPID last_dispid
Definition: locator.c:517
UINT nb_members
Definition: locator.c:516
IWbemClassObject * object
Definition: locator.c:514
ISWbemObject ISWbemObject_iface
Definition: locator.c:512
LONG refs
Definition: locator.c:513
ISWbemObjectSet ISWbemObjectSet_iface
Definition: locator.c:1116
LONG refs
Definition: locator.c:1117
IEnumWbemClassObject * objectenum
Definition: locator.c:1118
LONG count
Definition: locator.c:1119
LONG refs
Definition: locator.c:105
ISWbemProperty ISWbemProperty_iface
Definition: locator.c:104
BSTR name
Definition: locator.c:107
IWbemClassObject * object
Definition: locator.c:106
LONG refs
Definition: locator.c:304
IWbemClassObject * object
Definition: locator.c:305
ISWbemPropertySet ISWbemPropertySet_iface
Definition: locator.c:303
WbemAuthenticationLevelEnum authlevel
Definition: locator.c:2241
LONG refs
Definition: locator.c:2239
ISWbemSecurity ISWbemSecurity_iface
Definition: locator.c:2238
WbemImpersonationLevelEnum implevel
Definition: locator.c:2240
LONG refs
Definition: locator.c:1513
ISWbemServices ISWbemServices_iface
Definition: locator.c:1512
IWbemServices * services
Definition: locator.c:1514
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260
uint32_t ULONG
Definition: typedefs.h:59
Definition: pdh_main.c:94
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
Definition: variant.c:648
static const WCHAR defaultW[]
Definition: lex.c:42
static rfbScreenInfoPtr server
Definition: vnc.c:74
@ WBEM_INFINITE
Definition: wbemcli.idl:189
@ WBEM_E_NOT_FOUND
Definition: wbemcli.idl:52
int ret
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD _Outptr_opt_ void ** ppvObject
Definition: wincrypt.h:6082
#define WINAPI
Definition: msvc.h:6
#define S_FALSE
Definition: winerror.h:2357
#define E_NOINTERFACE
Definition: winerror.h:2364
#define DISP_E_MEMBERNOTFOUND
Definition: winerror.h:2512
#define DISP_E_UNKNOWNNAME
Definition: winerror.h:2515
__wchar_t WCHAR
Definition: xmlstorage.h:180