ReactOS 0.4.15-dev-7961-gdcf9eb0
main.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#include <stdarg.h>
20
21#define COBJMACROS
22
23#include "windef.h"
24#include "winbase.h"
25#include "objbase.h"
26#include "wmiutils.h"
27#include "wbemdisp.h"
28#include "rpcproxy.h"
29
30#include "wine/debug.h"
31#include "wine/heap.h"
32#include "wbemdisp_private.h"
33#include "wbemdisp_classes.h"
34
36
38
39struct moniker
40{
44};
45
46static inline struct moniker *impl_from_IMoniker(
47 IMoniker *iface )
48{
49 return CONTAINING_RECORD( iface, struct moniker, IMoniker_iface );
50}
51
53 IMoniker *iface )
54{
55 struct moniker *moniker = impl_from_IMoniker( iface );
57}
58
60 IMoniker *iface )
61{
62 struct moniker *moniker = impl_from_IMoniker( iface );
64 if (!refs)
65 {
66 TRACE( "destroying %p\n", moniker );
67 IUnknown_Release( moniker->obj );
69 }
70 return refs;
71}
72
74 IMoniker *iface, REFIID riid, void **ppvObject )
75{
76 struct moniker *moniker = impl_from_IMoniker( iface );
77
78 TRACE( "%p, %s, %p\n", moniker, debugstr_guid( riid ), ppvObject );
79
80 if (IsEqualGUID( riid, &IID_IMoniker ) ||
82 {
83 *ppvObject = iface;
84 }
85 else
86 {
87 FIXME( "interface %s not implemented\n", debugstr_guid(riid) );
88 return E_NOINTERFACE;
89 }
90 IMoniker_AddRef( iface );
91 return S_OK;
92}
93
95 IMoniker *iface, CLSID *pClassID )
96{
97 FIXME( "\n" );
98 return E_NOTIMPL;
99}
100
102 IMoniker *iface )
103{
104 FIXME( "\n" );
105 return E_NOTIMPL;
106}
107
109 IMoniker *iface, IStream *pStm )
110{
111 FIXME( "\n" );
112 return E_NOTIMPL;
113}
114
116 IMoniker *iface, IStream *pStm, BOOL fClearDirty )
117{
118 FIXME( "\n" );
119 return E_NOTIMPL;
120}
121
123 IMoniker *iface, ULARGE_INTEGER *pcbSize )
124{
125 FIXME( "\n" );
126 return E_NOTIMPL;
127}
128
130 IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, REFIID riidResult, void **ppvResult )
131{
132 struct moniker *moniker = impl_from_IMoniker( iface );
133
134 TRACE( "%p, %p, %p, %s, %p\n", iface, pbc, pmkToLeft, debugstr_guid(riidResult), ppvResult );
135 return IUnknown_QueryInterface( moniker->obj, riidResult, ppvResult );
136}
137
139 IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, REFIID riid, void **ppvObj )
140{
141 FIXME( "\n" );
142 return E_NOTIMPL;
143}
144
146 IMoniker *iface, IBindCtx *pbc, DWORD dwReduceHowFar, IMoniker **ppmkToLeft, IMoniker **ppmkReduced )
147{
148 FIXME( "\n" );
149 return E_NOTIMPL;
150}
151
153 IMoniker *iface, IMoniker *pmkRight, BOOL fOnlyIfNotGeneric, IMoniker **ppmkComposite )
154{
155 FIXME( "\n" );
156 return E_NOTIMPL;
157}
158
160 IMoniker *iface, BOOL fForward, IEnumMoniker **ppenumMoniker )
161{
162 FIXME( "\n" );
163 return E_NOTIMPL;
164}
165
167 IMoniker *iface, IMoniker *pmkOtherMoniker )
168{
169 FIXME( "\n" );
170 return E_NOTIMPL;
171}
172
174 IMoniker *iface, DWORD *pdwHash )
175{
176 FIXME( "\n" );
177 return E_NOTIMPL;
178}
179
181 IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, IMoniker *pmkNewlyRunning )
182{
183 FIXME( "\n" );
184 return E_NOTIMPL;
185}
186
188 IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, FILETIME *pFileTime )
189{
190 FIXME( "\n" );
191 return E_NOTIMPL;
192}
193
195 IMoniker *iface, IMoniker **ppmk )
196{
197 FIXME( "\n" );
198 return E_NOTIMPL;
199}
200
202 IMoniker *iface, IMoniker *pmkOther, IMoniker **ppmkPrefix )
203{
204 FIXME( "\n" );
205 return E_NOTIMPL;
206}
207
209 IMoniker *iface, IMoniker *pmkOther, IMoniker **ppmkRelPath )
210{
211 FIXME( "\n" );
212 return E_NOTIMPL;
213}
214
216 IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, LPOLESTR *ppszDisplayName )
217{
218 FIXME( "\n" );
219 return E_NOTIMPL;
220}
221
223 IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, LPOLESTR pszDisplayName, ULONG *pchEaten,
224 IMoniker **ppmkOut )
225{
226 FIXME( "\n" );
227 return E_NOTIMPL;
228}
229
231 IMoniker *iface, DWORD *pdwMksys )
232{
233 FIXME( "\n" );
234 return E_NOTIMPL;
235}
236
237static const IMonikerVtbl moniker_vtbl =
238{
262};
263
265{
266 struct moniker *moniker;
267
268 TRACE( "%p, %p\n", unk, obj );
269
270 if (!(moniker = heap_alloc( sizeof(*moniker) ))) return E_OUTOFMEMORY;
272 moniker->refs = 1;
273 moniker->obj = unk;
274 IUnknown_AddRef( moniker->obj );
275
277 TRACE( "returning iface %p\n", *obj );
278 return S_OK;
279}
280
282{
284 TRACE("(IID_IUnknown %p)\n", ppv);
285 *ppv = iface;
287 TRACE("(IID_IParseDisplayName %p)\n", ppv);
288 *ppv = iface;
289 }else {
290 WARN("Unsupported riid %s\n", debugstr_guid(riid));
291 *ppv = NULL;
292 return E_NOINTERFACE;
293 }
294
295 IUnknown_AddRef((IUnknown*)*ppv);
296 return S_OK;
297}
298
300{
301 return 2;
302}
303
305{
306 return 1;
307}
308
309static HRESULT parse_path( const WCHAR *str, BSTR *server, BSTR *namespace, BSTR *relative )
310{
312 ULONG len;
313 HRESULT hr;
314
315 *server = *namespace = *relative = NULL;
316
317 hr = CoCreateInstance( &CLSID_WbemDefPath, NULL, CLSCTX_INPROC_SERVER, &IID_IWbemPath, (void **)&path );
318 if (hr != S_OK) return hr;
319
320 hr = IWbemPath_SetText( path, WBEMPATH_CREATE_ACCEPT_ALL, str );
321 if (hr != S_OK) goto done;
322
323 len = 0;
324 hr = IWbemPath_GetServer( path, &len, NULL );
325 if (hr == S_OK)
326 {
327 if (!(*server = SysAllocStringLen( NULL, len )))
328 {
330 goto done;
331 }
332 hr = IWbemPath_GetServer( path, &len, *server );
333 if (hr != S_OK) goto done;
334 }
335
336 len = 0;
337 hr = IWbemPath_GetText( path, WBEMPATH_GET_NAMESPACE_ONLY, &len, NULL );
338 if (hr == S_OK)
339 {
340 if (!(*namespace = SysAllocStringLen( NULL, len )))
341 {
343 goto done;
344 }
345 hr = IWbemPath_GetText( path, WBEMPATH_GET_NAMESPACE_ONLY, &len, *namespace );
346 if (hr != S_OK) goto done;
347 }
348 len = 0;
349 hr = IWbemPath_GetText( path, WBEMPATH_GET_RELATIVE_ONLY, &len, NULL );
350 if (hr == S_OK)
351 {
352 if (!(*relative = SysAllocStringLen( NULL, len )))
353 {
355 goto done;
356 }
357 hr = IWbemPath_GetText( path, WBEMPATH_GET_RELATIVE_ONLY, &len, *relative );
358 }
359
360done:
361 IWbemPath_Release( path );
362 if (hr != S_OK)
363 {
365 SysFreeString( *namespace );
366 SysFreeString( *relative );
367 }
368 return hr;
369}
370
372 ULONG *pchEaten, IMoniker **ppmkOut)
373{
374 static const WCHAR prefixW[] = {'w','i','n','m','g','m','t','s',':',0};
375 const DWORD prefix_len = ARRAY_SIZE(prefixW) - 1;
376 ISWbemLocator *locator = NULL;
377 ISWbemServices *services = NULL;
378 ISWbemObject *obj = NULL;
379 BSTR server, namespace, relative;
380 WCHAR *p;
381 HRESULT hr;
382
383 TRACE( "%p, %p, %s, %p, %p\n", iface, pbc, debugstr_w(pszDisplayName), pchEaten, ppmkOut );
384
385 if (_wcsnicmp( pszDisplayName, prefixW, prefix_len )) return MK_E_SYNTAX;
386
387 p = pszDisplayName + prefix_len;
388 if (*p == '{')
389 {
390 FIXME( "ignoring security settings\n" );
391 while (*p && *p != '}') p++;
392 if (*p == '}') p++;
393 if (*p == '!') p++;
394 }
395 hr = parse_path( p, &server, &namespace, &relative );
396 if (hr != S_OK) return hr;
397
398 hr = SWbemLocator_create( (void **)&locator );
399 if (hr != S_OK) goto done;
400
401 hr = ISWbemLocator_ConnectServer( locator, server, namespace, NULL, NULL, NULL, NULL, 0, NULL, &services );
402 if (hr != S_OK) goto done;
403
404 if (!relative || !*relative) Moniker_create( (IUnknown *)services, ppmkOut );
405 else
406 {
407 hr = ISWbemServices_Get( services, relative, 0, NULL, &obj );
408 if (hr != S_OK) goto done;
409 hr = Moniker_create( (IUnknown *)obj, ppmkOut );
410 }
411
412done:
413 if (obj) ISWbemObject_Release( obj );
414 if (services) ISWbemServices_Release( services );
415 if (locator) ISWbemLocator_Release( locator );
417 SysFreeString( namespace );
418 SysFreeString( relative );
419 if (hr == S_OK) *pchEaten = lstrlenW( pszDisplayName );
420 return hr;
421}
422
423static const IParseDisplayNameVtbl WinMGMTSVtbl = {
428};
429
431
433{
434 *ppv = &winmgmts;
435 return S_OK;
436}
437
439{
442};
443
444static inline struct factory *impl_from_IClassFactory( IClassFactory *iface )
445{
446 return CONTAINING_RECORD( iface, struct factory, IClassFactory_iface );
447}
448
450{
452 {
453 IClassFactory_AddRef( iface );
454 *obj = iface;
455 return S_OK;
456 }
457 FIXME( "interface %s not implemented\n", debugstr_guid(riid) );
458 return E_NOINTERFACE;
459}
460
462{
463 return 2;
464}
465
467{
468 return 1;
469}
470
472 LPVOID *obj )
473{
474 struct factory *factory = impl_from_IClassFactory( iface );
475 IUnknown *unk;
476 HRESULT hr;
477
478 TRACE( "%p, %s, %p\n", outer, debugstr_guid(riid), obj );
479
480 *obj = NULL;
481 if (outer) return CLASS_E_NOAGGREGATION;
482
483 hr = factory->fnCreateInstance( (LPVOID *)&unk );
484 if (FAILED( hr ))
485 return hr;
486
487 hr = IUnknown_QueryInterface( unk, riid, obj );
488 IUnknown_Release( unk );
489 return hr;
490}
491
493{
494 FIXME( "%p, %d\n", iface, lock );
495 return S_OK;
496}
497
498static const struct IClassFactoryVtbl factory_vtbl =
499{
505};
506
509
511{
512
513 switch (reason)
514 {
515 case DLL_WINE_PREATTACH:
516 return FALSE; /* prefer native version */
518 instance = hinst;
520 break;
521 }
522 return TRUE;
523}
524
526{
528
529 TRACE( "%s, %s, %p\n", debugstr_guid(rclsid), debugstr_guid(iid), obj );
530
531 if (IsEqualGUID( rclsid, &CLSID_SWbemLocator ))
532 cf = &swbem_locator_cf.IClassFactory_iface;
533 else if (IsEqualGUID( rclsid, &CLSID_WinMGMTS ))
534 cf = &winmgmts_cf.IClassFactory_iface;
535 else
537
538 return IClassFactory_QueryInterface( cf, iid, obj );
539}
540
541/***********************************************************************
542 * DllCanUnloadNow (WBEMDISP.@)
543 */
545{
546 return S_FALSE;
547}
548
549/***********************************************************************
550 * DllRegisterServer (WBEMDISP.@)
551 */
553{
555}
556
557/***********************************************************************
558 * DllUnregisterServer (WBEMDISP.@)
559 */
561{
563}
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
const GUID IID_IClassFactory
#define FIXME(fmt,...)
Definition: debug.h:111
#define WARN(fmt,...)
Definition: debug.h:112
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_NOTIMPL
Definition: ddrawi.h:99
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
Definition: main.c:26
HRESULT WINAPI DllRegisterServer(void)
Definition: main.c:212
static HINSTANCE instance
Definition: main.c:40
HRESULT WINAPI DllUnregisterServer(void)
Definition: main.c:220
HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
Definition: main.c:166
HRESULT WINAPI DllCanUnloadNow(void)
Definition: main.c:204
static IClassFactoryImpl * impl_from_IClassFactory(IClassFactory *iface)
Definition: main.c:63
static WCHAR reason[MAX_STRING_RESOURCE_LEN]
Definition: object.c:1904
#define DLL_PROCESS_ATTACH
Definition: compat.h:131
OLECHAR * BSTR
Definition: compat.h:2293
#define lstrlenW
Definition: compat.h:750
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
Definition: loader.c:85
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
Definition: compobj.c:3325
static HRESULT WINAPI moniker_Hash(IMoniker *iface, DWORD *pdwHash)
Definition: main.c:173
static HRESULT WINAPI WinMGMTS_QueryInterface(IParseDisplayName *iface, REFIID riid, void **ppv)
Definition: main.c:281
static ULONG WINAPI WinMGMTS_Release(IParseDisplayName *iface)
Definition: main.c:304
static HRESULT WINAPI moniker_Enum(IMoniker *iface, BOOL fForward, IEnumMoniker **ppenumMoniker)
Definition: main.c:159
static struct moniker * impl_from_IMoniker(IMoniker *iface)
Definition: main.c:46
static ULONG WINAPI factory_Release(IClassFactory *iface)
Definition: main.c:466
static HRESULT WINAPI moniker_IsRunning(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, IMoniker *pmkNewlyRunning)
Definition: main.c:180
static HRESULT WINAPI moniker_Load(IMoniker *iface, IStream *pStm)
Definition: main.c:108
static HRESULT WINAPI moniker_BindToObject(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, REFIID riidResult, void **ppvResult)
Definition: main.c:129
static HRESULT WinMGMTS_create(void **ppv)
Definition: main.c:432
static HRESULT parse_path(const WCHAR *str, BSTR *server, BSTR *namespace, BSTR *relative)
Definition: main.c:309
static HRESULT WINAPI moniker_ComposeWith(IMoniker *iface, IMoniker *pmkRight, BOOL fOnlyIfNotGeneric, IMoniker **ppmkComposite)
Definition: main.c:152
static IParseDisplayName winmgmts
Definition: main.c:430
static HRESULT WINAPI moniker_GetTimeOfLastChange(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, FILETIME *pFileTime)
Definition: main.c:187
static HRESULT WINAPI moniker_Reduce(IMoniker *iface, IBindCtx *pbc, DWORD dwReduceHowFar, IMoniker **ppmkToLeft, IMoniker **ppmkReduced)
Definition: main.c:145
static ULONG WINAPI moniker_Release(IMoniker *iface)
Definition: main.c:59
static HRESULT WINAPI moniker_RelativePathTo(IMoniker *iface, IMoniker *pmkOther, IMoniker **ppmkRelPath)
Definition: main.c:208
static struct factory winmgmts_cf
Definition: main.c:508
static HRESULT WINAPI moniker_ParseDisplayName(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, LPOLESTR pszDisplayName, ULONG *pchEaten, IMoniker **ppmkOut)
Definition: main.c:222
static HRESULT WINAPI moniker_CommonPrefixWith(IMoniker *iface, IMoniker *pmkOther, IMoniker **ppmkPrefix)
Definition: main.c:201
static ULONG WINAPI factory_AddRef(IClassFactory *iface)
Definition: main.c:461
static const struct IClassFactoryVtbl factory_vtbl
Definition: main.c:498
static HRESULT WINAPI moniker_GetSizeMax(IMoniker *iface, ULARGE_INTEGER *pcbSize)
Definition: main.c:122
static HRESULT WINAPI moniker_BindToStorage(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, REFIID riid, void **ppvObj)
Definition: main.c:138
static HRESULT WINAPI moniker_IsEqual(IMoniker *iface, IMoniker *pmkOtherMoniker)
Definition: main.c:166
static HRESULT WINAPI moniker_IsSystemMoniker(IMoniker *iface, DWORD *pdwMksys)
Definition: main.c:230
static HRESULT WINAPI WinMGMTS_ParseDisplayName(IParseDisplayName *iface, IBindCtx *pbc, LPOLESTR pszDisplayName, ULONG *pchEaten, IMoniker **ppmkOut)
Definition: main.c:371
static HRESULT WINAPI moniker_IsDirty(IMoniker *iface)
Definition: main.c:101
static const IParseDisplayNameVtbl WinMGMTSVtbl
Definition: main.c:423
static ULONG WINAPI moniker_AddRef(IMoniker *iface)
Definition: main.c:52
static HRESULT WINAPI moniker_QueryInterface(IMoniker *iface, REFIID riid, void **ppvObject)
Definition: main.c:73
static HRESULT WINAPI factory_LockServer(IClassFactory *iface, BOOL lock)
Definition: main.c:492
static HRESULT WINAPI moniker_GetClassID(IMoniker *iface, CLSID *pClassID)
Definition: main.c:94
static HRESULT WINAPI factory_CreateInstance(IClassFactory *iface, LPUNKNOWN outer, REFIID riid, LPVOID *obj)
Definition: main.c:471
static HRESULT WINAPI factory_QueryInterface(IClassFactory *iface, REFIID riid, LPVOID *obj)
Definition: main.c:449
static HRESULT Moniker_create(IUnknown *unk, IMoniker **obj)
Definition: main.c:264
static ULONG WINAPI WinMGMTS_AddRef(IParseDisplayName *iface)
Definition: main.c:299
static struct factory swbem_locator_cf
Definition: main.c:507
static HRESULT WINAPI moniker_Inverse(IMoniker *iface, IMoniker **ppmk)
Definition: main.c:194
static HRESULT WINAPI moniker_GetDisplayName(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, LPOLESTR *ppszDisplayName)
Definition: main.c:215
static HRESULT WINAPI moniker_Save(IMoniker *iface, IStream *pStm, BOOL fClearDirty)
Definition: main.c:115
static const IMonikerVtbl moniker_vtbl
Definition: main.c:237
r reserved
Definition: btrfs.c:3006
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
GLfloat GLfloat p
Definition: glext.h:8902
GLenum GLsizei len
Definition: glext.h:6722
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
#define S_OK
Definition: intsafe.h:52
#define FAILED(hr)
Definition: intsafe.h:51
#define debugstr_guid
Definition: kernel32.h:35
#define debugstr_w
Definition: kernel32.h:32
HRESULT SWbemLocator_create(void **obj)
Definition: locator.c:2220
static HINSTANCE hinst
Definition: edit.c:551
static LPOLESTR
Definition: stg_prop.c:27
static LPUNKNOWN
Definition: ndr_ole.c:49
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
Definition: oleaut.c:271
BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len)
Definition: oleaut.c:339
const GUID IID_IParseDisplayName
long LONG
Definition: pedump.c:60
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define REFIID
Definition: guiddef.h:118
#define REFCLSID
Definition: guiddef.h:117
const WCHAR * str
HRESULT __wine_unregister_resources(HMODULE module) DECLSPEC_HIDDEN
Definition: register.c:110
HRESULT __wine_register_resources(HMODULE module) DECLSPEC_HIDDEN
Definition: register.c:98
_Check_return_ _CRTIMP int __cdecl _wcsnicmp(_In_reads_or_z_(_MaxCount) const wchar_t *_Str1, _In_reads_or_z_(_MaxCount) const wchar_t *_Str2, _In_ size_t _MaxCount)
HRESULT hr
Definition: shlfolder.c:183
#define TRACE(s)
Definition: solgame.cpp:4
Definition: main.c:439
IClassFactory IClassFactory_iface
Definition: main.c:440
HRESULT(* fnCreateInstance)(LPVOID *)
Definition: main.c:441
Definition: main.c:40
LONG refs
Definition: main.c:42
IMoniker IMoniker_iface
Definition: main.c:41
IUnknown * obj
Definition: main.c:43
rwlock_t lock
Definition: tcpcore.h:0
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260
uint32_t ULONG
Definition: typedefs.h:59
static rfbScreenInfoPtr server
Definition: vnc.c:74
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD _Outptr_opt_ void ** ppvObject
Definition: wincrypt.h:6082
#define HRESULT
Definition: msvc.h:7
#define WINAPI
Definition: msvc.h:6
#define S_FALSE
Definition: winerror.h:2357
#define E_NOINTERFACE
Definition: winerror.h:2364
#define MK_E_SYNTAX
Definition: winerror.h:2785
#define CLASS_E_NOAGGREGATION
Definition: winerror.h:2662
#define CLASS_E_CLASSNOTAVAILABLE
Definition: winerror.h:2663
@ WBEMPATH_GET_RELATIVE_ONLY
Definition: wmiutils.idl:57
@ WBEMPATH_GET_NAMESPACE_ONLY
Definition: wmiutils.idl:60
@ WBEMPATH_CREATE_ACCEPT_ALL
Definition: wmiutils.idl:50
__wchar_t WCHAR
Definition: xmlstorage.h:180