ReactOS  0.4.12-dev-916-gffc4e30
wbemdisp.c
Go to the documentation of this file.
1 /*
2  * Copyright 2015 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 <stdio.h>
22 #include "windows.h"
23 #include "initguid.h"
24 #include "objidl.h"
25 #include "wbemdisp.h"
26 #include "wbemcli.h"
27 #include "wine/test.h"
28 
29 DEFINE_GUID(CLSID_WINMGMTS,0x172bddf8,0xceea,0x11d1,0x8b,0x05,0x00,0x60,0x08,0x06,0xd9,0xb6);
30 DEFINE_GUID(GUID_NULL,0,0,0,0,0,0,0,0,0,0,0);
31 
33 
34 static void test_ParseDisplayName(void)
35 {
36  static const WCHAR biosW[] = {'W','i','n','3','2','_','B','i','o','s',0};
37  static const WCHAR manufacturerW[] = {'M','a','n','u','f','a','c','t','u','r','e','r',0};
38  static const WCHAR versionW[] = {'v','e','r','s','i','o','n',0};
39  static const WCHAR nosuchW[] = {'N','o','S','u','c','h',0};
40  static const WCHAR name1[] =
41  {'w','i','n','m','g','m','t','s',':',0};
42  static const WCHAR name2[] =
43  {'w','i','n','m','g','m','t','s',':','\\','\\','.','\\','r','o','o','t','\\','c','i','m','v','2',0};
44  static const WCHAR name3[] =
45  {'w','i','n','m','g','m','t','s',':','\\','\\','.','\\','r','o','o','t','\\','c','i','m','v','2',':',
46  'W','i','n','3','2','_','L','o','g','i','c','a','l','D','i','s','k','.',
47  'D','e','v','i','c','e','I','D','=','\'','C',':','\'',0};
48  static const WCHAR name4[] =
49  {'w','i','n','m','g','m','t','s',':','\\','\\','.','\\','r','o','o','t','\\','c','i','m','v','2',':',
50  'W','i','n','3','2','_','S','e','r','v','i','c','e',0};
51  static const WCHAR stdregprovW[] =
52  {'w','i','n','m','g','m','t','s',':','\\','\\','.','\\','r','o','o','t','\\','d','e','f','a','u','l','t',':',
53  'S','t','d','R','e','g','P','r','o','v',0};
54  static const WCHAR getstringvalueW[] =
55  {'G','e','t','S','t','r','i','n','g','V','a','l','u','e',0};
56  static const struct
57  {
58  const WCHAR *name;
59  HRESULT hr;
60  REFIID iid;
61  ULONG eaten;
62  } tests[] =
63  {
64  { name1, S_OK, &IID_ISWbemServices, ARRAY_SIZE( name1 ) - 1 },
65  { name2, S_OK, &IID_ISWbemServices, ARRAY_SIZE( name2 ) - 1 },
66  { name3, S_OK, &IID_ISWbemObject, ARRAY_SIZE( name3 ) - 1 },
67  { name4, S_OK, &IID_ISWbemObject, ARRAY_SIZE( name4 ) - 1 }
68  };
69  IParseDisplayName *displayname;
70  IBindCtx *ctx;
72  IUnknown *obj;
73  BSTR str;
74  ULONG i, eaten, count;
75  HRESULT hr;
76 
77  hr = CoCreateInstance( &CLSID_WINMGMTS, NULL, CLSCTX_INPROC_SERVER, &IID_IParseDisplayName, (void **)&displayname );
78  if (hr != S_OK)
79  {
80  win_skip( "can't create instance of WINMGMTS\n" );
81  return;
82  }
83 
84  hr = CreateBindCtx( 0, &ctx );
85  ok( hr == S_OK, "got %x\n", hr );
86 
87  for (i =0; i < ARRAY_SIZE( tests ); i++)
88  {
90  eaten = 0xdeadbeef;
91  moniker = NULL;
92  hr = IParseDisplayName_ParseDisplayName( displayname, NULL, str, &eaten, &moniker );
93  SysFreeString( str );
94  ok( hr == tests[i].hr, "%u: got %x\n", i, hr );
95  ok( eaten == tests[i].eaten, "%u: got %u\n", i, eaten );
96  if (moniker)
97  {
98  obj = NULL;
99  hr = IMoniker_BindToObject( moniker, ctx, NULL, tests[i].iid, (void **)&obj );
100  ok( hr == S_OK, "%u: got %x\n", i, hr );
101  if (obj) IUnknown_Release( obj );
102  IMoniker_Release( moniker );
103  }
104  }
105 
106  str = SysAllocString( name1 );
107  eaten = 0xdeadbeef;
108  moniker = NULL;
109  hr = IParseDisplayName_ParseDisplayName( displayname, NULL, str, &eaten, &moniker );
110  SysFreeString( str );
111  ok( hr == S_OK, "got %x\n", hr );
112  ok( eaten == lstrlenW(name1), "got %u\n", eaten );
113  if (moniker)
114  {
115  ISWbemServices *services = NULL;
116 
117  hr = IMoniker_BindToObject( moniker, ctx, NULL, &IID_IUnknown, (void **)&services );
118  ok( hr == S_OK, "got %x\n", hr );
119  if (services)
120  {
121  ISWbemObjectSet *objectset = NULL;
122 
123  str = SysAllocString( biosW );
124  hr = ISWbemServices_InstancesOf( services, str, 0, NULL, &objectset );
125  SysFreeString( str );
126  ok( hr == S_OK, "got %x\n", hr );
127  if (objectset)
128  {
129  hr = ISWbemObjectSet_get__NewEnum( objectset, &obj );
130  ok( hr == S_OK, "got %x\n", hr );
131  if (obj)
132  {
134 
135  hr = IUnknown_QueryInterface( obj, &IID_IEnumVARIANT, (void **)&enumvar );
136  ok( hr == S_OK, "got %x\n", hr );
137 
138  if (enumvar)
139  {
140  VARIANT var, res;
141  ULONG fetched;
143  DISPID dispid;
145  UINT arg_err;
146 
147  fetched = 0xdeadbeef;
148  hr = IEnumVARIANT_Next( enumvar, 0, &var, &fetched );
149  ok( hr == S_OK, "got %x\n", hr );
150  ok( !fetched, "got %u\n", fetched );
151 
152  fetched = 0xdeadbeef;
153  V_VT( &var ) = VT_ERROR;
154  V_ERROR( &var ) = 0xdeadbeef;
155  hr = IEnumVARIANT_Next( enumvar, 1, &var, &fetched );
156  ok( hr == S_OK, "got %x\n", hr );
157  ok( fetched == 1, "got %u\n", fetched );
158  ok( V_VT( &var ) == VT_DISPATCH, "got %u\n", V_VT( &var ) );
159  ok( V_DISPATCH( &var ) != (IDispatch *)0xdeadbeef, "got %u\n", V_VT( &var ) );
160 
161  dispatch = V_DISPATCH( &var );
162  count = 0;
163  hr = IDispatch_GetTypeInfoCount( dispatch, &count );
164  ok( hr == S_OK, "got %x\n", hr );
165  ok( count == 1, "got %u\n", count );
166 
167  str = SysAllocString( manufacturerW );
168  dispid = 0xdeadbeef;
169  hr = IDispatch_GetIDsOfNames( dispatch, &IID_NULL, &str, 1, english, &dispid );
170  SysFreeString( str );
171  ok( hr == S_OK, "got %x\n", hr );
172  ok( dispid == 0x1800001 || dispid == 0x10b /* win2k */, "got %x\n", dispid );
173 
175  dispid = 0xdeadbeef;
176  hr = IDispatch_GetIDsOfNames( dispatch, &IID_NULL, &str, 1, english, &dispid );
177  SysFreeString( str );
178  ok( hr == S_OK, "got %x\n", hr );
179  ok( dispid == 0x1800002 || dispid == 0x119 /* win2k */, "got %x\n", dispid );
180 
181  str = SysAllocString( nosuchW );
182  dispid = 0xdeadbeef;
183  hr = IDispatch_GetIDsOfNames( dispatch, &IID_NULL, &str, 1, english, &dispid );
184  SysFreeString( str );
185  ok( hr == DISP_E_UNKNOWNNAME, "got %x\n", hr );
186  ok( dispid == DISPID_UNKNOWN, "got %x\n", dispid );
187 
188  str = SysAllocString( manufacturerW );
189  dispid = 0xdeadbeef;
190  hr = IDispatch_GetIDsOfNames( dispatch, &IID_NULL, &str, 1, english, &dispid );
191  SysFreeString( str );
192  ok( hr == S_OK, "got %x\n", hr );
193  ok( dispid == 0x1800001 || dispid == 0x10b /* win2k */, "got %x\n", dispid );
194 
195  if (dispid == 0x1800001) /* crashes on win2k */
196  {
197  V_VT( &res ) = VT_ERROR;
198  V_BSTR( &res ) = (BSTR)0xdeadbeef;
199  params.rgvarg = (VARIANTARG *)0xdeadbeef;
200  params.rgdispidNamedArgs = (DISPID *)0xdeadbeef;
201  params.cArgs = params.cNamedArgs = 0xdeadbeef;
202  arg_err = 0xdeadbeef;
203  hr = IDispatch_Invoke( dispatch, DISPID_UNKNOWN, &IID_NULL, english,
205  &params, &res, NULL, &arg_err );
206  ok( hr == DISP_E_MEMBERNOTFOUND || hr == S_OK /* winxp */, "got %x\n", hr );
207  ok( params.rgvarg == (VARIANTARG *)0xdeadbeef, "got %p\n", params.rgvarg );
208  ok( params.rgdispidNamedArgs == (DISPID *)0xdeadbeef, "got %p\n", params.rgdispidNamedArgs );
209  ok( params.cArgs == 0xdeadbeef, "got %u\n", params.cArgs );
210  ok( params.cNamedArgs == 0xdeadbeef, "got %u\n", params.cNamedArgs );
211  ok( V_VT( &res ) == VT_ERROR, "got %u\n", V_VT( &res ) );
212  ok( V_ERROR( &res ) == 0xdeadbeef, "got %u\n", V_VT( &res ) );
213  ok( arg_err == 0xdeadbeef, "got %u\n", arg_err );
214  if (hr == S_OK) VariantClear( &res );
215  }
216 
217  V_VT( &res ) = VT_ERROR;
218  V_BSTR( &res ) = (BSTR)0xdeadbeef;
219  memset( &params, 0, sizeof(params) );
220  hr = IDispatch_Invoke( dispatch, dispid, &IID_NULL, english,
222  &params, &res, NULL, NULL );
223  ok( hr == S_OK, "got %x\n", hr );
224  ok( params.rgvarg == NULL, "got %p\n", params.rgvarg );
225  ok( params.rgdispidNamedArgs == NULL, "got %p\n", params.rgdispidNamedArgs );
226  ok( !params.cArgs, "got %u\n", params.cArgs );
227  ok( !params.cNamedArgs, "got %u\n", params.cNamedArgs );
228  ok( V_VT( &res ) == VT_BSTR, "got %u\n", V_VT( &res ) );
229  ok( V_BSTR( &res ) != (BSTR)0xdeadbeef, "got %u\n", V_VT( &res ) );
230  VariantClear( &res );
231  VariantClear( &var );
232 
233  fetched = 0xdeadbeef;
234  hr = IEnumVARIANT_Next( enumvar, 1, &var, &fetched );
235  ok( hr == S_FALSE, "got %x\n", hr );
236  ok( !fetched, "got %u\n", fetched );
237 
238  IEnumVARIANT_Release( enumvar );
239  }
240  IUnknown_Release( obj );
241  }
242  ISWbemObjectSet_Release( objectset );
243  }
244  IUnknown_Release( services );
245  }
246  IMoniker_Release( moniker );
247  }
248 
249  IBindCtx_Release( ctx );
250 
251  hr = CreateBindCtx( 0, &ctx );
252  ok( hr == S_OK, "got %x\n", hr );
253 
254  str = SysAllocString( stdregprovW );
255  hr = IParseDisplayName_ParseDisplayName( displayname, NULL, str, &eaten, &moniker );
256  ok( hr == S_OK, "got %x\n", hr );
257  SysFreeString( str );
258 
259  if (moniker)
260  {
261  ISWbemObject *sobj = NULL;
262  hr = IMoniker_BindToObject( moniker, ctx, NULL, &IID_ISWbemObject, (void **)&sobj );
263  ok( hr == S_OK, "got %x\n",hr );
264  if (sobj)
265  {
266  DISPID dispid = 0xdeadbeef;
267 
268  str = SysAllocString( getstringvalueW );
269  hr = ISWbemObject_GetIDsOfNames( sobj, &IID_NULL, &str, 1, english, &dispid );
270  ok( hr == S_OK, "got %x\n", hr );
271  ok( dispid == 0x1000001, "got %x\n", dispid );
272 
273  ISWbemObject_Release( sobj );
274  SysFreeString( str );
275  }
276  IMoniker_Release( moniker );
277  }
278 
279  IBindCtx_Release(ctx);
280  IParseDisplayName_Release( displayname );
281 }
282 
283 static const WCHAR localhost[] = {'l','o','c','a','l','h','o','s','t',0};
284 static const WCHAR root[] = {'r','o','o','t','\\','C','I','M','V','2',0};
285 static const WCHAR query[] = {'S','e','l','e','c','t',' ','P','r','o','c','e','s','s','o','r','I','d',' ','f','r','o','m',
286  ' ','W','i','n','3','2','_','P','r','o','c','e','s','s','o','r',0};
287 static const WCHAR lang[] = {'W','Q','L',0};
288 static const WCHAR props[] = {'P','r','o','p','e','r','t','i','e','s','_',0};
289 static const WCHAR procid[] = {'P','r','o','c','e','s','s','o','r','I','d',0};
290 
291 static void test_locator(void)
292 {
293  HRESULT hr;
294  DISPID id;
295  BSTR host_bstr, root_bstr, query_bstr, lang_bstr, props_bstr, procid_bstr;
296  ISWbemLocator *locator;
297  ISWbemServices *services;
298  ISWbemObjectSet *object_set;
299  IEnumVARIANT *enum_var;
300  ISWbemObject *object;
301  ISWbemPropertySet *prop_set;
302  ISWbemProperty *prop;
303  ISWbemSecurity *security;
304  VARIANT var;
305  LONG count;
306  WbemImpersonationLevelEnum imp_level;
307  WbemAuthenticationLevelEnum auth_level;
308 
309  hr = CoCreateInstance( &CLSID_SWbemLocator, NULL, CLSCTX_INPROC_SERVER, &IID_ISWbemLocator, (void **)&locator );
310  ok( hr == S_OK, "got %x\n", hr );
311 
312  host_bstr = SysAllocString(localhost);
313  root_bstr = SysAllocString(root);
314  hr = ISWbemLocator_ConnectServer( locator, host_bstr, root_bstr, NULL, NULL, NULL, NULL, 0, NULL, &services);
315  ok( hr == S_OK, "got %x\n", hr );
316  SysFreeString( root_bstr );
317  SysFreeString( host_bstr );
318 
319  query_bstr = SysAllocString(query);
320  lang_bstr = SysAllocString(lang);
321  hr = ISWbemServices_ExecQuery( services, query_bstr, lang_bstr, wbemFlagForwardOnly, NULL, &object_set);
322  ok( hr == S_OK, "got %x\n", hr );
323  SysFreeString( lang_bstr );
324  SysFreeString( query_bstr );
325 
326  hr = ISWbemLocator_get_Security_( locator, &security );
327  ok( hr == S_OK, "got %x\n", hr );
328  imp_level = 0xdeadbeef;
329  hr = ISWbemSecurity_get_ImpersonationLevel( security, &imp_level );
330  ok( hr == S_OK, "got %x\n", hr );
331  ok( imp_level == wbemImpersonationLevelImpersonate, "got %u\n", imp_level );
332  hr = ISWbemSecurity_put_ImpersonationLevel( security, wbemImpersonationLevelAnonymous );
333  ok( hr == S_OK, "got %x\n", hr );
334  imp_level = 0xdeadbeef;
335  hr = ISWbemSecurity_get_ImpersonationLevel( security, &imp_level );
336  ok( hr == S_OK, "got %x\n", hr );
337  ok( imp_level == wbemImpersonationLevelAnonymous, "got %u\n", imp_level );
338 
339  auth_level = 0xdeadbeef;
340  hr = ISWbemSecurity_get_AuthenticationLevel( security, &auth_level );
341  todo_wine {
342  ok( hr == WBEM_E_FAILED, "got %x\n", hr );
343  ok( auth_level == 0xdeadbeef, "got %u\n", auth_level );
344  }
345  hr = ISWbemSecurity_put_AuthenticationLevel( security, wbemAuthenticationLevelNone );
346  ok( hr == S_OK, "got %x\n", hr );
347  auth_level = 0xdeadbeef;
348  hr = ISWbemSecurity_get_AuthenticationLevel( security, &auth_level );
349  ok( hr == S_OK, "got %x\n", hr );
350  ok( auth_level == wbemAuthenticationLevelNone, "got %u\n", auth_level );
351  ISWbemSecurity_Release( security );
352  security = NULL;
353 
354  hr = ISWbemObjectSet_get__NewEnum( object_set, (IUnknown**)&enum_var );
355  ok( hr == S_OK, "got %x\n", hr );
356 
357  VariantInit( &var );
358  hr = IEnumVARIANT_Next( enum_var, 1, &var, NULL );
359  ok( hr == S_OK, "got %x\n", hr );
360  ok( V_VT(&var) == VT_DISPATCH, "got %x\n", V_VT(&var));
361 
362  props_bstr = SysAllocString( props );
363  hr = IDispatch_GetIDsOfNames( V_DISPATCH(&var), &IID_NULL, &props_bstr, 1, english, &id );
364  ok( hr == S_OK, "got %x\n", hr );
365  ok( id == 21, "got %d\n", id );
366 
367  hr = IDispatch_QueryInterface( V_DISPATCH(&var), &IID_ISWbemObject, (void**)&object );
368  ok( hr == S_OK, "got %x\n", hr );
369  VariantClear( &var );
370 
371  hr = ISWbemObject_get_Properties_( object, &prop_set );
372  ok( hr == S_OK, "got %x\n", hr );
373 
374  hr = ISWbemPropertySet_Item( prop_set, props_bstr, 0, &prop );
375  ok( hr == WBEM_E_NOT_FOUND, "got %x\n", hr );
376  SysFreeString( props_bstr );
377 
378  procid_bstr = SysAllocString( procid );
379  hr = ISWbemPropertySet_Item( prop_set, procid_bstr, 0, &prop );
380  ok( hr == S_OK, "got %x\n", hr );
381  SysFreeString( procid_bstr );
382 
383  count = 0;
384  hr = ISWbemPropertySet_get_Count( prop_set, &count );
385  ok( hr == S_OK, "got %x\n", hr );
386  ok( count > 0, "got %d\n", count );
387 
388  hr = ISWbemProperty_get_Value( prop, &var );
389  ok( hr == S_OK, "got %x\n", hr );
390  ok( V_VT(&var) == VT_BSTR, "got %x\n", V_VT(&var) );
391  VariantClear( &var );
392 
393  hr = ISWbemServices_get_Security_( services, &security );
394  ok( hr == S_OK, "got %x\n", hr );
395  imp_level = 0xdeadbeef;
396  hr = ISWbemSecurity_get_ImpersonationLevel( security, &imp_level );
397  ok( hr == S_OK, "got %x\n", hr );
398  ok( imp_level == wbemImpersonationLevelImpersonate, "got %u\n", imp_level );
399  auth_level = 0xdeadbeef;
400  hr = ISWbemSecurity_get_AuthenticationLevel( security, &auth_level );
401  ok( hr == S_OK, "got %x\n", hr );
402  ok( auth_level == wbemAuthenticationLevelPktPrivacy, "got %u\n", auth_level );
403 
404  ISWbemSecurity_Release(security);
405  ISWbemProperty_Release( prop );
406  ISWbemPropertySet_Release( prop_set );
407  ISWbemObject_Release( object );
408  IEnumVARIANT_Release( enum_var );
409  ISWbemObjectSet_Release( object_set );
410  ISWbemServices_Release( services );
411  ISWbemLocator_Release( locator );
412 }
413 
414 START_TEST(wbemdisp)
415 {
416  CoInitialize( NULL );
417 
419  test_locator();
420 
421  CoUninitialize();
422 }
#define DISP_E_UNKNOWNNAME
Definition: winerror.h:2515
struct param_test tests[]
#define MAKELCID(lgid, srtid)
#define REFIID
Definition: guiddef.h:113
static void test_ParseDisplayName(void)
Definition: wbemdisp.c:34
#define DISPATCH_PROPERTYGET
Definition: oleauto.h:1007
HRESULT hr
Definition: shlfolder.c:183
GLuint GLuint GLsizei count
Definition: gl.h:1545
#define DISP_E_MEMBERNOTFOUND
Definition: winerror.h:2512
START_TEST(wbemdisp)
Definition: wbemdisp.c:414
WbemImpersonationLevelEnum
Definition: wbemdisp.idl:943
DWORD LCID
Definition: nls.h:13
OLECHAR * BSTR
Definition: compat.h:1927
void WINAPI VariantInit(VARIANTARG *pVarg)
Definition: variant.c:571
static WCHAR name1[]
Definition: record.c:34
#define lstrlenW
Definition: compat.h:407
#define SUBLANG_ENGLISH_US
Definition: nls.h:222
#define DISPATCH_METHOD
Definition: oleauto.h:1006
GLsizei GLsizei GLuint * obj
Definition: glext.h:6042
static const WCHAR biosW[]
Definition: main.c:35
#define V_DISPATCH(A)
Definition: oleauto.h:239
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
GLenum const GLfloat * params
Definition: glext.h:5645
long LONG
Definition: pedump.c:60
#define S_FALSE
Definition: winerror.h:2357
const WCHAR * str
smooth NULL
Definition: ftsmooth.c:416
BSTR WINAPI SysAllocString(LPCOLESTR str)
Definition: oleaut.c:241
const GUID IID_IParseDisplayName
#define ok(value,...)
Definition: CComObject.cpp:34
static void test_locator(void)
Definition: wbemdisp.c:291
static const WCHAR lang[]
Definition: wbemdisp.c:287
HRESULT WINAPI CreateBindCtx(DWORD reserved, LPBC *ppbc)
Definition: bindctx.c:556
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:77
#define SORT_DEFAULT
const GUID IID_IUnknown
#define LANG_ENGLISH
Definition: nls.h:52
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
Definition: variant.c:651
#define IID_NULL
Definition: guiddef.h:93
#define todo_wine
Definition: test.h:154
WbemAuthenticationLevelEnum
Definition: wbemdisp.idl:956
#define V_VT(A)
Definition: oleauto.h:211
static const WCHAR procid[]
Definition: wbemdisp.c:289
#define GUID_NULL
Definition: ks.h:106
DEFINE_GUID(CLSID_WINMGMTS, 0x172bddf8, 0xceea, 0x11d1, 0x8b, 0x05, 0x00, 0x60, 0x08, 0x06, 0xd9, 0xb6)
void dispatch(HANDLE hStopEvent)
Definition: dispatch.c:66
#define V_BSTR(A)
Definition: oleauto.h:226
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
Definition: compobj.c:3234
static VARIANTARG static DISPID
Definition: ordinal.c:49
#define S_OK
Definition: intsafe.h:59
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
Definition: compobj.c:1991
#define ARRAY_SIZE(a)
Definition: main.h:24
static const WCHAR name4[]
Definition: db.c:2959
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
Definition: oleaut.c:274
#define V_ERROR(A)
Definition: oleauto.h:241
unsigned int UINT
Definition: ndis.h:50
Definition: main.c:41
static const LCID english
Definition: wbemdisp.c:32
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
Definition: compobj.c:1897
static const WCHAR name3[]
Definition: db.c:2958
Definition: name.c:36
static const WCHAR props[]
Definition: wbemdisp.c:288
GLuint res
Definition: glext.h:9613
struct stdole::DISPPARAMS DISPPARAMS
unsigned int ULONG
Definition: retypes.h:1
GLenum GLuint id
Definition: glext.h:5579
#define MAKELANGID(p, s)
Definition: nls.h:15
static WCHAR name2[]
Definition: record.c:35
#define memset(x, y, z)
Definition: compat.h:39
static const WCHAR versionW[]
Definition: name.c:50
#define win_skip
Definition: test.h:141
static const WCHAR localhost[]
Definition: wbemdisp.c:283
void * object
Definition: jmemsys.h:48
static ISAXLocator * locator
Definition: saxreader.c:1037
GLuint const GLchar * name
Definition: glext.h:6031