ReactOS 0.4.17-dev-357-ga8f14ff
caller.c
Go to the documentation of this file.
1/*
2 * Copyright 2023 Gabriel Ivăncescu 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 <stdio.h>
20
21#define COBJMACROS
22#define CONST_VTABLE
23
24#include <ole2.h>
25#include <dispex.h>
26#include <activscp.h>
27#include <objsafe.h>
28
29#include "wine/test.h"
30
31#ifdef _WIN64
32
33#define IActiveScriptParse_QueryInterface IActiveScriptParse64_QueryInterface
34#define IActiveScriptParse_Release IActiveScriptParse64_Release
35#define IActiveScriptParse_InitNew IActiveScriptParse64_InitNew
36#define IActiveScriptParse_ParseScriptText IActiveScriptParse64_ParseScriptText
37
38#else
39
40#define IActiveScriptParse_QueryInterface IActiveScriptParse32_QueryInterface
41#define IActiveScriptParse_Release IActiveScriptParse32_Release
42#define IActiveScriptParse_InitNew IActiveScriptParse32_InitNew
43#define IActiveScriptParse_ParseScriptText IActiveScriptParse32_ParseScriptText
44
45#endif
46
47extern const CLSID CLSID_VBScript;
48
49#define DEFINE_EXPECT(func) \
50 static BOOL expect_ ## func = FALSE, called_ ## func = FALSE
51
52#define SET_EXPECT(func) \
53 expect_ ## func = TRUE
54
55#define CHECK_EXPECT2(func) \
56 do { \
57 ok(expect_ ##func, "unexpected call " #func "\n"); \
58 called_ ## func = TRUE; \
59 }while(0)
60
61#define CHECK_EXPECT(func) \
62 do { \
63 CHECK_EXPECT2(func); \
64 expect_ ## func = FALSE; \
65 }while(0)
66
67#define CHECK_CALLED(func) \
68 do { \
69 ok(called_ ## func, "expected " #func "\n"); \
70 expect_ ## func = called_ ## func = FALSE; \
71 }while(0)
72
73#define CLEAR_CALLED(func) \
74 expect_ ## func = called_ ## func = FALSE
75
76DEFINE_EXPECT(sp_caller_QI_NULL);
77DEFINE_EXPECT(site_QI_NULL);
78DEFINE_EXPECT(testGetCaller);
79DEFINE_EXPECT(testGetCallerVBS);
80DEFINE_EXPECT(testGetCallerNested);
81DEFINE_EXPECT(OnEnterScript);
82DEFINE_EXPECT(OnLeaveScript);
83
86
87#define DISPID_TEST_TESTGETCALLER 0x1000
88#define DISPID_TEST_TESTGETCALLERVBS 0x1001
89#define DISPID_TEST_TESTGETCALLERNESTED 0x1002
90
91#define parse_script(a,s) _parse_script(__LINE__,a,s)
93{
94 IActiveScriptParse *parser;
96
97 hres = IActiveScript_QueryInterface(active_script, &IID_IActiveScriptParse, (void**)&parser);
98 ok_(__FILE__,line)(hres == S_OK, "Could not get IActiveScriptParse: %08lx\n", hres);
99
101 ok_(__FILE__,line)(hres == S_OK, "ParseScriptText failed: %08lx\n", hres);
103}
104
106
108{
109 if(IsEqualGUID(&IID_IUnknown, riid) || IsEqualGUID(&IID_IServiceProvider, riid))
110 *ppv = &sp_caller_obj;
111 else {
112 ok(IsEqualGUID(&IID_NULL, riid), "unexpected riid %s\n", wine_dbgstr_guid(riid));
113 CHECK_EXPECT(sp_caller_QI_NULL);
114 *ppv = NULL;
115 return E_NOINTERFACE;
116 }
117
118 return S_OK;
119}
120
122{
123 return 2;
124}
125
127{
128 return 1;
129}
130
132 REFIID riid, void **ppv)
133{
134 if(IsEqualGUID(guidService, &SID_GetCaller)) {
135 ok(IsEqualGUID(riid, &IID_IServiceProvider), "unexpected riid %s\n", wine_dbgstr_guid(riid));
136 *ppv = NULL;
137 return S_OK;
138 }
139
140 ok(0, "unexpected guidService %s with riid %s\n", wine_dbgstr_guid(guidService), wine_dbgstr_guid(riid));
141 *ppv = NULL;
142 return E_NOINTERFACE;
143}
144
145static const IServiceProviderVtbl sp_caller_vtbl = {
150};
151
153
155{
157 *ppv = iface;
158 }else if(IsEqualGUID(riid, &IID_IDispatch) || IsEqualGUID(riid, &IID_IDispatchEx)) {
159 *ppv = iface;
160 }else if(IsEqualGUID(&IID_IObjectSafety, riid)) {
161 ok(0, "Unexpected IID_IObjectSafety query\n");
162 }else {
163 *ppv = NULL;
164 return E_NOINTERFACE;
165 }
166
167 return S_OK;
168}
169
171{
172 return 2;
173}
174
176{
177 return 1;
178}
179
181{
182 ok(0, "unexpected call\n");
183 return E_NOTIMPL;
184}
185
187{
188 return E_NOTIMPL;
189}
190
191static HRESULT WINAPI DispatchEx_GetIDsOfNames(IDispatchEx *iface, REFIID riid, LPOLESTR *rgszNames,
192 UINT cNames, LCID lcid, DISPID *rgDispId)
193{
194 ok(0, "unexpected call\n");
195 return E_NOTIMPL;
196}
197
199 WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
200{
201 ok(0, "unexpected call\n");
202 return E_NOTIMPL;
203}
204
206{
207 ok(0, "unexpected call\n");
208 return E_NOTIMPL;
209}
210
212{
213 ok(0, "unexpected call\n");
214 return E_NOTIMPL;
215}
216
218{
219 ok(0, "unexpected call\n");
220 return E_NOTIMPL;
221}
222
224{
225 ok(0, "unexpected call\n");
226 return E_NOTIMPL;
227}
228
230{
231 ok(0, "unexpected call\n");
232 return E_NOTIMPL;
233}
234
236{
237 ok(0, "unexpected call\n");
238 return E_NOTIMPL;
239}
240
241static HRESULT WINAPI Test_GetDispID(IDispatchEx *iface, BSTR bstrName, DWORD grfdex, DISPID *pid)
242{
243 if(!lstrcmpW(bstrName, L"testGetCaller")) {
244 ok(grfdex == fdexNameCaseInsensitive, "grfdex = %lx\n", grfdex);
246 return S_OK;
247 }
248 if(!lstrcmpW(bstrName, L"testGetCallerVBS")) {
249 ok(grfdex == fdexNameCaseInsensitive, "grfdex = %lx\n", grfdex);
251 return S_OK;
252 }
253 if(!lstrcmpW(bstrName, L"testGetCallerNested")) {
254 ok(grfdex == fdexNameCaseInsensitive, "grfdex = %lx\n", grfdex);
256 return S_OK;
257 }
258
259 return E_NOTIMPL;
260}
261
262static HRESULT WINAPI Test_InvokeEx(IDispatchEx *iface, DISPID id, LCID lcid, WORD wFlags, DISPPARAMS *pdp,
263 VARIANT *pvarRes, EXCEPINFO *pei, IServiceProvider *pspCaller)
264{
265 IServiceProvider *caller = (void*)0xdeadbeef;
267
268 ok(pspCaller != NULL, "pspCaller == NULL\n");
269
270 switch(id) {
272 void *iface = (void*)0xdeadbeef;
273
274 CHECK_EXPECT(testGetCaller);
275 CHECK_CALLED(OnEnterScript);
276
277 ok(wFlags == DISPATCH_METHOD, "wFlags = %x\n", wFlags);
278 ok(pdp != NULL, "pdp == NULL\n");
279 ok(!pdp->rgdispidNamedArgs, "rgdispidNamedArgs != NULL\n");
280 ok(!pvarRes, "pvarRes != NULL\n");
281 ok(pei != NULL, "pei == NULL\n");
282
283 SET_EXPECT(OnEnterScript);
284 SET_EXPECT(OnLeaveScript);
285 SET_EXPECT(testGetCallerNested);
286 parse_script(active_script, L"Call testGetCallerNested(1,2)");
287 CHECK_CALLED(testGetCallerNested);
288 CHECK_CALLED(OnLeaveScript);
289 CHECK_CALLED(OnEnterScript);
290 SET_EXPECT(OnLeaveScript);
291
292 hres = IServiceProvider_QueryService(pspCaller, &SID_GetCaller, &IID_IServiceProvider, (void**)&caller);
293 ok(hres == S_OK, "Could not get SID_GetCaller service: %08lx\n", hres);
294 ok(caller == test_get_caller_sp, "caller != test_get_caller_sp\n");
295 if(caller) IServiceProvider_Release(caller);
296
298 SET_EXPECT(sp_caller_QI_NULL);
299 hres = IServiceProvider_QueryService(pspCaller, &SID_GetCaller, &IID_NULL, &iface);
300 ok(hres == (test_get_caller_sp ? E_NOINTERFACE : S_OK), "Could not query SID_GetCaller with IID_NULL: %08lx\n", hres);
301 ok(iface == NULL, "iface != NULL\n");
303 CHECK_CALLED(sp_caller_QI_NULL);
304 break;
305 }
306
308 IUnknown *unk;
309
310 CHECK_EXPECT(testGetCallerVBS);
311
312 ok(wFlags == DISPATCH_METHOD, "wFlags = %x\n", wFlags);
313 ok(pdp != NULL, "pdp == NULL\n");
314 ok(pdp->cArgs == 1, "cArgs = %d\n", pdp->cArgs);
315 ok(!pdp->rgdispidNamedArgs, "rgdispidNamedArgs != NULL\n");
316 ok(!pvarRes, "pvarRes != NULL\n");
317 ok(pei != NULL, "pei == NULL\n");
318 ok(V_VT(pdp->rgvarg) == VT_I2, "V_VT(rgvarg) = %d\n", V_VT(pdp->rgvarg));
319 ok(V_I2(pdp->rgvarg) == 42, "V_I2(rgvarg) = %d\n", V_I2(pdp->rgvarg));
320
321 hres = IServiceProvider_QueryService(pspCaller, &SID_GetCaller, &IID_IServiceProvider, (void**)&caller);
322 ok(hres == E_NOINTERFACE, "QueryService(SID_GetCaller) returned: %08lx\n", hres);
323 ok(caller == NULL, "caller != NULL\n");
324
325 SET_EXPECT(site_QI_NULL);
326 hres = IServiceProvider_QueryService(pspCaller, &IID_IActiveScriptSite, &IID_NULL, (void**)&unk);
327 ok(hres == E_NOINTERFACE, "QueryService(IActiveScriptSite->NULL) returned: %08lx\n", hres);
328 ok(!unk, "unk != NULL\n");
329 CHECK_CALLED(site_QI_NULL);
330 break;
331 }
332
334 CHECK_EXPECT(testGetCallerNested);
335
336 ok(wFlags == DISPATCH_METHOD, "wFlags = %x\n", wFlags);
337 ok(pdp != NULL, "pdp == NULL\n");
338 ok(pdp->cArgs == 2, "cArgs = %d\n", pdp->cArgs);
339 ok(!pdp->rgdispidNamedArgs, "rgdispidNamedArgs != NULL\n");
340 ok(!pvarRes, "pvarRes != NULL\n");
341 ok(pei != NULL, "pei == NULL\n");
342 ok(V_VT(&pdp->rgvarg[0]) == VT_I2, "V_VT(rgvarg[0]) = %d\n", V_VT(&pdp->rgvarg[0]));
343 ok(V_VT(&pdp->rgvarg[1]) == VT_I2, "V_VT(rgvarg[1]) = %d\n", V_VT(&pdp->rgvarg[1]));
344 ok(V_I2(&pdp->rgvarg[0]) == 2, "V_I2(rgvarg[0]) = %d\n", V_I2(&pdp->rgvarg[0]));
345 ok(V_I2(&pdp->rgvarg[1]) == 1, "V_I2(rgvarg[1]) = %d\n", V_I2(&pdp->rgvarg[1]));
346
347 hres = IServiceProvider_QueryService(pspCaller, &SID_GetCaller, &IID_IServiceProvider, (void**)&caller);
348 ok(hres == E_NOINTERFACE, "QueryService(SID_GetCaller) returned: %08lx\n", hres);
349 ok(caller == NULL, "caller != NULL\n");
350 break;
351
352 default:
353 ok(0, "unexpected call\n");
354 return E_NOTIMPL;
355 }
356
357 return S_OK;
358}
359
360static IDispatchExVtbl testObjVtbl = {
376};
377
379
381{
383 *ppv = iface;
384 }else if(IsEqualGUID(&IID_IActiveScriptSite, riid)) {
385 *ppv = iface;
386 }else {
388 CHECK_EXPECT(site_QI_NULL);
389 *ppv = NULL;
390 return E_NOINTERFACE;
391 }
392
393 IUnknown_AddRef((IUnknown*)*ppv);
394 return S_OK;
395}
396
398{
399 return 2;
400}
401
403{
404 return 1;
405}
406
408{
409 *plcid = GetUserDefaultLCID();
410 return S_OK;
411}
412
414 DWORD dwReturnMask, IUnknown **ppiunkItem, ITypeInfo **ppti)
415{
416 ok(dwReturnMask == SCRIPTINFO_IUNKNOWN, "unexpected dwReturnMask %lx\n", dwReturnMask);
417 ok(!ppti, "ppti != NULL\n");
418 ok(!lstrcmpW(pstrName, L"test"), "pstrName = %s\n", wine_dbgstr_w(pstrName));
419
420 *ppiunkItem = (IUnknown*)&testObj;
421 return S_OK;
422}
423
425{
426 return E_NOTIMPL;
427}
428
430 const VARIANT *pvarResult, const EXCEPINFO *pexcepinfo)
431{
432 return E_NOTIMPL;
433}
434
436{
437 return E_NOTIMPL;
438}
439
441{
442 return E_NOTIMPL;
443}
444
446{
447 CHECK_EXPECT(OnEnterScript);
448 return E_NOTIMPL;
449}
450
452{
453 CHECK_EXPECT(OnLeaveScript);
454 return E_NOTIMPL;
455}
456
457static const IActiveScriptSiteVtbl ActiveScriptSiteVtbl = {
469};
470
472
474{
475 IActiveScriptParse *parser;
478
479 hres = CoCreateInstance(&CLSID_VBScript, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER,
480 &IID_IActiveScript, (void**)&script);
481 if(FAILED(hres))
482 return NULL;
483
484 hres = IActiveScript_QueryInterface(script, &IID_IActiveScriptParse, (void**)&parser);
485 ok(hres == S_OK, "Could not get IActiveScriptParse: %08lx\n", hres);
486
488 ok(hres == S_OK, "InitNew failed: %08lx\n", hres);
490
491 hres = IActiveScript_SetScriptSite(script, &ActiveScriptSite);
492 ok(hres == S_OK, "SetScriptSite failed: %08lx\n", hres);
493
494 hres = IActiveScript_AddNamedItem(script, L"test",
495 SCRIPTITEM_ISVISIBLE|SCRIPTITEM_ISSOURCE|SCRIPTITEM_GLOBALMEMBERS);
496 ok(hres == S_OK, "AddNamedItem failed: %08lx\n", hres);
497
498 hres = IActiveScript_SetScriptState(script, SCRIPTSTATE_STARTED);
499 ok(hres == S_OK, "SetScriptState(SCRIPTSTATE_STARTED) failed: %08lx\n", hres);
500
501 return script;
502}
503
504static void run_scripts(void)
505{
506 DISPPARAMS dp = { 0 };
507 IDispatchEx *dispex;
508 IDispatch *disp;
509 DISPID dispid;
511 BSTR bstr;
512
514
515 SET_EXPECT(OnEnterScript);
516 SET_EXPECT(OnLeaveScript);
517 SET_EXPECT(testGetCallerVBS);
519 L"Sub testGetCallerFunc\nCall testGetCaller\nEnd Sub\n"
520 L"Call testGetCallerVBS(42)");
521 CHECK_CALLED(testGetCallerVBS);
522 CHECK_CALLED(OnLeaveScript);
523 CHECK_CALLED(OnEnterScript);
524
525 hres = IActiveScript_GetScriptDispatch(active_script, NULL, &disp);
526 ok(hres == S_OK, "GetScriptDispatch failed: %08lx\n", hres);
527 hres = IDispatch_QueryInterface(disp, &IID_IDispatchEx, (void**)&dispex);
528 ok(hres == S_OK, "Could not get IDispatchEx: %08lx\n", hres);
529 IDispatch_Release(disp);
530 bstr = SysAllocString(L"testGetCallerFunc");
531 hres = IDispatchEx_GetDispID(dispex, bstr, 0, &dispid);
532 ok(hres == S_OK, "GetDispID failed: %08lx\n", hres);
533 SysFreeString(bstr);
534
535 SET_EXPECT(OnEnterScript);
536 SET_EXPECT(OnLeaveScript);
537 SET_EXPECT(testGetCaller);
538 hres = IDispatchEx_InvokeEx(dispex, dispid, 0, DISPATCH_METHOD, &dp, NULL, NULL, NULL);
539 ok(hres == S_OK, "InvokeEx failed: %08lx\n", hres);
540 CHECK_CALLED(testGetCaller);
541 CHECK_CALLED(OnLeaveScript);
543 SET_EXPECT(OnEnterScript);
544 SET_EXPECT(OnLeaveScript);
545 SET_EXPECT(testGetCaller);
546 hres = IDispatchEx_InvokeEx(dispex, dispid, 0, DISPATCH_METHOD, &dp, NULL, NULL, test_get_caller_sp);
547 ok(hres == S_OK, "InvokeEx failed: %08lx\n", hres);
548 CHECK_CALLED(testGetCaller);
549 CHECK_CALLED(OnLeaveScript);
550 IDispatchEx_Release(dispex);
551
552 IActiveScript_Release(active_script);
554}
555
557{
559
560 run_scripts();
561
563}
@ SCRIPTSTATE_STARTED
Definition: activscp.idl:58
enum tagSCRIPTSTATE SCRIPTSTATE
#define ok(value,...)
Definition: atltest.h:57
#define START_TEST(x)
Definition: atltest.h:75
#define ok_(x1, x2)
Definition: atltest.h:61
const GUID IID_IUnknown
#define E_NOTIMPL
Definition: ddrawi.h:99
#define NULL
Definition: types.h:112
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
Definition: combase.c:2842
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context, REFIID riid, void **obj)
Definition: combase.c:1685
OLECHAR * BSTR
Definition: compat.h:2293
@ VT_I2
Definition: compat.h:2297
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
Definition: locale.c:4152
LCID WINAPI GetUserDefaultLCID(void)
Definition: locale.c:1216
LCID lcid
Definition: locale.c:5660
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
Definition: compobj.c:531
#define L(x)
Definition: resources.c:13
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned long DWORD
Definition: ntddk_ex.h:95
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
static HRESULT WINAPI sp_caller_QueryInterface(IServiceProvider *iface, REFIID riid, void **ppv)
Definition: caller.c:278
#define SET_EXPECT(func)
Definition: caller.c:53
static ULONG WINAPI ActiveScriptSite_Release(IActiveScriptSite *iface)
Definition: caller.c:593
static HRESULT WINAPI ActiveScriptSite_OnLeaveScript(IActiveScriptSite *iface)
Definition: caller.c:642
static HRESULT WINAPI ActiveScriptSite_OnStateChange(IActiveScriptSite *iface, SCRIPTSTATE ssScriptState)
Definition: caller.c:626
static HRESULT WINAPI DispatchEx_GetMemberProperties(IDispatchEx *iface, DISPID id, DWORD grfdexFetch, DWORD *pgrfdex)
Definition: caller.c:390
static ULONG WINAPI DispatchEx_Release(IDispatchEx *iface)
Definition: caller.c:346
static HRESULT WINAPI DispatchEx_GetIDsOfNames(IDispatchEx *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
Definition: caller.c:362
static HRESULT WINAPI DispatchEx_DeleteMemberByDispID(IDispatchEx *iface, DISPID id)
Definition: caller.c:384
static HRESULT WINAPI DispatchEx_GetNameSpaceParent(IDispatchEx *iface, IUnknown **ppunk)
Definition: caller.c:408
static HRESULT WINAPI DispatchEx_Invoke(IDispatchEx *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
Definition: caller.c:370
static void run_scripts(void)
Definition: caller.c:705
#define CHECK_EXPECT(func)
Definition: caller.c:62
static HRESULT WINAPI ActiveScriptSite_GetDocVersionString(IActiveScriptSite *iface, BSTR *pbstrVersion)
Definition: caller.c:615
static HRESULT WINAPI ActiveScriptSite_GetItemInfo(IActiveScriptSite *iface, LPCOLESTR pstrName, DWORD dwReturnMask, IUnknown **ppiunkItem, ITypeInfo **ppti)
Definition: caller.c:604
static void _parse_script(unsigned line, IActiveScriptParse *parser, const WCHAR *script)
Definition: caller.c:665
#define DEFINE_EXPECT(func)
Definition: caller.c:50
static HRESULT WINAPI DispatchEx_GetMemberName(IDispatchEx *iface, DISPID id, BSTR *pbstrName)
Definition: caller.c:396
static IServiceProvider sp_caller_obj
Definition: caller.c:276
#define IActiveScriptParse_InitNew
Definition: caller.c:42
#define IActiveScriptParse_ParseScriptText
Definition: caller.c:43
static IActiveScriptParse * create_script(void)
Definition: caller.c:673
#define IActiveScriptParse_Release
Definition: caller.c:41
static ULONG WINAPI sp_caller_Release(IServiceProvider *iface)
Definition: caller.c:297
#define parse_script(p, s)
Definition: caller.c:664
static ULONG WINAPI sp_caller_AddRef(IServiceProvider *iface)
Definition: caller.c:292
#define DISPID_TEST_TESTGETCALLER
Definition: caller.c:92
static HRESULT WINAPI DispatchEx_GetNextDispID(IDispatchEx *iface, DWORD grfdex, DISPID id, DISPID *pid)
Definition: caller.c:402
static HRESULT WINAPI Test_GetDispID(IDispatchEx *iface, BSTR bstrName, DWORD grfdex, DISPID *pid)
Definition: caller.c:414
static HRESULT WINAPI DispatchEx_QueryInterface(IDispatchEx *iface, REFIID riid, void **ppv)
Definition: caller.c:325
static HRESULT WINAPI ActiveScriptSite_QueryInterface(IActiveScriptSite *iface, REFIID riid, void **ppv)
Definition: caller.c:571
static HRESULT WINAPI ActiveScriptSite_OnEnterScript(IActiveScriptSite *iface)
Definition: caller.c:636
static ULONG WINAPI DispatchEx_AddRef(IDispatchEx *iface)
Definition: caller.c:341
static HRESULT WINAPI sp_caller_QueryService(IServiceProvider *iface, REFGUID guidService, REFIID riid, void **ppv)
Definition: caller.c:302
#define CHECK_CALLED(func)
Definition: caller.c:68
static ULONG WINAPI ActiveScriptSite_AddRef(IActiveScriptSite *iface)
Definition: caller.c:588
static HRESULT WINAPI ActiveScriptSite_OnScriptTerminate(IActiveScriptSite *iface, const VARIANT *pvarResult, const EXCEPINFO *pexcepinfo)
Definition: caller.c:620
static HRESULT WINAPI DispatchEx_GetTypeInfo(IDispatchEx *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
Definition: caller.c:357
static IServiceProvider * test_get_caller_sp
Definition: caller.c:89
static IDispatchEx testObj
Definition: caller.c:569
static const IActiveScriptSiteVtbl ActiveScriptSiteVtbl
Definition: caller.c:648
#define DISPID_TEST_TESTGETCALLERNESTED
Definition: caller.c:94
static HRESULT WINAPI DispatchEx_DeleteMemberByName(IDispatchEx *iface, BSTR bstrName, DWORD grfdex)
Definition: caller.c:378
static HRESULT WINAPI ActiveScriptSite_GetLCID(IActiveScriptSite *iface, LCID *plcid)
Definition: caller.c:598
static IActiveScriptSite ActiveScriptSite
Definition: caller.c:662
static HRESULT WINAPI ActiveScriptSite_OnScriptError(IActiveScriptSite *iface, IActiveScriptError *pscripterror)
Definition: caller.c:631
static HRESULT WINAPI DispatchEx_GetTypeInfoCount(IDispatchEx *iface, UINT *pctinfo)
Definition: caller.c:351
static IDispatchExVtbl testObjVtbl
Definition: caller.c:551
static const IServiceProviderVtbl sp_caller_vtbl
Definition: caller.c:316
static HRESULT WINAPI Test_InvokeEx(IDispatchEx *iface, DISPID id, LCID lcid, WORD wFlags, DISPPARAMS *pdp, VARIANT *pvarRes, EXCEPINFO *pei, IServiceProvider *pspCaller)
Definition: caller.c:440
#define wine_dbgstr_w
Definition: kernel32.h:34
HRESULT hres
Definition: protocol.c:465
static VARIANTARG static DISPID
Definition: ordinal.c:49
script
Definition: msipriv.h:383
unsigned int UINT
Definition: ndis.h:50
BSTR WINAPI SysAllocString(LPCOLESTR str)
Definition: oleaut.c:238
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
Definition: oleaut.c:271
#define DISPATCH_METHOD
Definition: oleauto.h:1006
#define V_VT(A)
Definition: oleauto.h:211
#define V_I2(A)
Definition: oleauto.h:245
const GUID IID_IDispatch
short WCHAR
Definition: pedump.c:58
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define REFIID
Definition: guiddef.h:118
#define IID_NULL
Definition: guiddef.h:98
DWORD LCID
Definition: nls.h:13
static __inline const char * wine_dbgstr_guid(const GUID *id)
Definition: debug.h:171
Definition: scsiwmi.h:51
Definition: parser.c:49
Definition: import.c:81
uint32_t ULONG
Definition: typedefs.h:59
#define DISPID_TEST_TESTGETCALLERVBS
Definition: caller.c:88
static IActiveScript * active_script
Definition: caller.c:84
const CLSID CLSID_VBScript
WINBASEAPI _In_ DWORD _Out_ _In_ WORD wFlags
Definition: wincon_undoc.h:337
_In_ ULONG_PTR _In_ ULONG _Out_ ULONG_PTR * pid
Definition: winddi.h:3837
#define WINAPI
Definition: msvc.h:6
#define E_NOINTERFACE
Definition: winerror.h:3479