ReactOS 0.4.15-dev-7113-g9ea2222
host.c
Go to the documentation of this file.
1/*
2 * Copyright 2010 Jacek Caban 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#define CONST_VTABLE
23
24#include <windef.h>
25#include <winbase.h>
26#include <ole2.h>
27
28#include "wscript.h"
29
30#include <wine/debug.h>
31#include <wine/heap.h>
32
34
35#define BUILDVERSION 16535
36
37static const WCHAR wshNameW[] = {'W','i','n','d','o','w','s',' ','S','c','r','i','p','t',' ','H','o','s','t',0};
38static const WCHAR wshVersionW[] = {'5','.','8'};
39
41#ifndef CSCRIPT_BUILD
42 VARIANT_TRUE;
43#else
44 VARIANT_FALSE;
45#endif
46
48{
49 VARIANT v;
51
52 static const WCHAR nullW[] = {'n','u','l','l',0};
53
54 if(V_VT(src) == VT_NULL) {
56 return *dst ? S_OK : E_OUTOFMEMORY;
57 }
58
59 V_VT(&v) = VT_EMPTY;
61 if(FAILED(hres)) {
62 WARN("Could not convert argument %s to string\n", debugstr_variant(src));
63 return hres;
64 }
65
66 *dst = V_BSTR(&v);
67 return S_OK;
68}
69
70static void print_string(const WCHAR *string)
71{
72 DWORD count, ret, len, lena;
73 char *buf;
74
75 if(wshInteractive) {
76 static const WCHAR windows_script_hostW[] =
77 {'W','i','n','d','o','w','s',' ','S','c','r','i','p','t',' ','H','o','s','t',0};
78 MessageBoxW(NULL, string, windows_script_hostW, MB_OK);
79 return;
80 }
81
82 len = lstrlenW(string);
84 if(ret) {
85 static const WCHAR crnlW[] = {'\r','\n'};
87 return;
88 }
89
90 lena = WideCharToMultiByte(GetConsoleOutputCP(), 0, string, len, NULL, 0, NULL, NULL);
92 if(!buf)
93 return;
94
95 WideCharToMultiByte(GetConsoleOutputCP(), 0, string, len, buf, lena, NULL, NULL);
99}
100
102{
103 WINE_TRACE("(%s %p)\n", wine_dbgstr_guid(riid), ppv);
104
107 || IsEqualGUID(&IID_IHost, riid)) {
108 *ppv = iface;
109 return S_OK;
110 }
111
112 *ppv = NULL;
113 return E_NOINTERFACE;
114}
115
117{
118 return 2;
119}
120
122{
123 return 1;
124}
125
127{
128 WINE_TRACE("(%p)\n", pctinfo);
129 *pctinfo = 1;
130 return S_OK;
131}
132
133static HRESULT WINAPI Host_GetTypeInfo(IHost *iface, UINT iTInfo, LCID lcid,
134 ITypeInfo **ppTInfo)
135{
136 WINE_TRACE("(%x %x %p\n", iTInfo, lcid, ppTInfo);
137
138 ITypeInfo_AddRef(host_ti);
139 *ppTInfo = host_ti;
140 return S_OK;
141}
142
144 UINT cNames, LCID lcid, DISPID *rgDispId)
145{
146 WINE_TRACE("(%s %p %d %x %p)\n", wine_dbgstr_guid(riid), rgszNames,
147 cNames, lcid, rgDispId);
148
149 return ITypeInfo_GetIDsOfNames(host_ti, rgszNames, cNames, rgDispId);
150}
151
152static HRESULT WINAPI Host_Invoke(IHost *iface, DISPID dispIdMember, REFIID riid,
153 LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult,
154 EXCEPINFO *pExcepInfo, UINT *puArgErr)
155{
156 WINE_TRACE("(%d %p %p)\n", dispIdMember, pDispParams, pVarResult);
157
158 return ITypeInfo_Invoke(host_ti, iface, dispIdMember, wFlags, pDispParams,
159 pVarResult, pExcepInfo, puArgErr);
160}
161
162static HRESULT WINAPI Host_get_Name(IHost *iface, BSTR *out_Name)
163{
164 WINE_TRACE("(%p)\n", out_Name);
165
166 if(!(*out_Name = SysAllocString(wshNameW)))
167 return E_OUTOFMEMORY;
168 return S_OK;
169}
170
171static HRESULT WINAPI Host_get_Application(IHost *iface, IDispatch **out_Dispatch)
172{
173 WINE_TRACE("(%p)\n", out_Dispatch);
174
175 *out_Dispatch = (IDispatch*)&host_obj;
176 return S_OK;
177}
178
179static HRESULT WINAPI Host_get_FullName(IHost *iface, BSTR *out_Path)
180{
181 WCHAR fullPath[MAX_PATH];
182
183 WINE_TRACE("(%p)\n", out_Path);
184
185 if(GetModuleFileNameW(NULL, fullPath, ARRAY_SIZE(fullPath)) == 0)
186 return E_FAIL;
187 if(!(*out_Path = SysAllocString(fullPath)))
188 return E_OUTOFMEMORY;
189 return S_OK;
190}
191
192static HRESULT WINAPI Host_get_Path(IHost *iface, BSTR *out_Path)
193{
195 int howMany;
196 WCHAR *pos;
197
198 WINE_TRACE("(%p)\n", out_Path);
199
201 return E_FAIL;
202 pos = wcsrchr(path, '\\');
203 howMany = pos - path;
204 if(!(*out_Path = SysAllocStringLen(path, howMany)))
205 return E_OUTOFMEMORY;
206 return S_OK;
207}
208
209static HRESULT WINAPI Host_get_Interactive(IHost *iface, VARIANT_BOOL *out_Interactive)
210{
211 WINE_TRACE("(%p)\n", out_Interactive);
212
213 *out_Interactive = wshInteractive;
214 return S_OK;
215}
216
218{
219 WINE_TRACE("(%x)\n", v);
220
222 return S_OK;
223}
224
225static HRESULT WINAPI Host_Quit(IHost *iface, int ExitCode)
226{
227 FIXME("(%d) semi-stub: no script engine clean up\n", ExitCode);
228
229 ExitProcess(ExitCode);
230 return S_OK;
231}
232
233static HRESULT WINAPI Host_get_ScriptName(IHost *iface, BSTR *out_ScriptName)
234{
235 WCHAR *scriptName;
236
237 WINE_TRACE("(%p)\n", out_ScriptName);
238
239 scriptName = wcsrchr(scriptFullName, '\\');
240 ++scriptName;
241 if(!(*out_ScriptName = SysAllocString(scriptName)))
242 return E_OUTOFMEMORY;
243 return S_OK;
244}
245
246static HRESULT WINAPI Host_get_ScriptFullName(IHost *iface, BSTR *out_ScriptFullName)
247{
248 WINE_TRACE("(%p)\n", out_ScriptFullName);
249
250 if(!(*out_ScriptFullName = SysAllocString(scriptFullName)))
251 return E_OUTOFMEMORY;
252 return S_OK;
253}
254
255static HRESULT WINAPI Host_get_Arguments(IHost *iface, IArguments2 **out_Arguments)
256{
257 WINE_TRACE("(%p)\n", out_Arguments);
258
259 *out_Arguments = &arguments_obj;
260 return S_OK;
261}
262
263static HRESULT WINAPI Host_get_Version(IHost *iface, BSTR *out_Version)
264{
265 WINE_TRACE("(%p)\n", out_Version);
266
267 if(!(*out_Version = SysAllocString(wshVersionW)))
268 return E_OUTOFMEMORY;
269 return S_OK;
270}
271
272static HRESULT WINAPI Host_get_BuildVersion(IHost *iface, int *out_Build)
273{
274 WINE_TRACE("(%p)\n", out_Build);
275
276 *out_Build = BUILDVERSION;
277 return S_OK;
278}
279
280static HRESULT WINAPI Host_get_Timeout(IHost *iface, LONG *out_Timeout)
281{
282 WINE_FIXME("(%p)\n", out_Timeout);
283 return E_NOTIMPL;
284}
285
287{
288 WINE_FIXME("(%d)\n", v);
289 return E_NOTIMPL;
290}
291
293 IDispatch **out_Dispatch)
294{
295 IUnknown *unk;
296 GUID guid;
298
299 TRACE("(%s %s %p)\n", wine_dbgstr_w(ProgID), wine_dbgstr_w(Prefix), out_Dispatch);
300
301 if(Prefix && *Prefix) {
302 FIXME("Prefix %s not supported\n", debugstr_w(Prefix));
303 return E_NOTIMPL;
304 }
305
306 hres = CLSIDFromProgID(ProgID, &guid);
307 if(FAILED(hres))
308 return hres;
309
310 hres = CoCreateInstance(&guid, NULL, CLSCTX_INPROC_SERVER|CLSCTX_LOCAL_SERVER|CLSCTX_REMOTE_SERVER,
311 &IID_IUnknown, (void**)&unk);
312 if(FAILED(hres))
313 return hres;
314
315 hres = IUnknown_QueryInterface(unk, &IID_IDispatch, (void**)out_Dispatch);
316 IUnknown_Release(unk);
317 return hres;
318}
319
321{
322 WCHAR *output = NULL, *ptr;
323 unsigned argc, i, len;
324#ifdef __REACTOS__
325 LONG ubound, lbound;
326#else
327 int ubound, lbound;
328#endif
329 VARIANT *argv;
330 BSTR *strs;
332
333 TRACE("(%p)\n", args);
334
335 if(SafeArrayGetDim(args) != 1) {
336 FIXME("Unsupported args dim %d\n", SafeArrayGetDim(args));
337 return E_NOTIMPL;
338 }
339
340 SafeArrayGetLBound(args, 1, &lbound);
341 SafeArrayGetUBound(args, 1, &ubound);
342
343 hres = SafeArrayAccessData(args, (void**)&argv);
344 if(FAILED(hres))
345 return hres;
346
347 argc = ubound-lbound+1;
348 strs = heap_alloc_zero(argc*sizeof(*strs));
349 if(!strs) {
351 return E_OUTOFMEMORY;
352 }
353
354 /* Len of spaces between arguments. */
355 len = argc-1;
356
357 for(i=0; i < argc; i++) {
358 hres = to_string(argv+i, strs+i);
359 if(FAILED(hres))
360 break;
361
362 len += SysStringLen(strs[i]);
363 }
364
366 if(SUCCEEDED(hres)) {
367 ptr = output = heap_alloc((len+1)*sizeof(WCHAR));
368 if(output) {
369 for(i=0; i < argc; i++) {
370 if(i)
371 *ptr++ = ' ';
372 len = SysStringLen(strs[i]);
373 memcpy(ptr, strs[i], len*sizeof(WCHAR));
374 ptr += len;
375 }
376 *ptr = 0;
377 }else {
379 }
380 }
381
382 for(i=0; i < argc; i++)
383 SysFreeString(strs[i]);
384 heap_free(strs);
385 if(FAILED(hres))
386 return hres;
387
388 print_string(output);
389
390 heap_free(output);
391 return S_OK;
392}
393
395 BSTR Prefix, IDispatch **out_Dispatch)
396{
397 WINE_FIXME("(%s %s %s %p)\n", wine_dbgstr_w(Pathname), wine_dbgstr_w(ProgID),
398 wine_dbgstr_w(Prefix), out_Dispatch);
399 return E_NOTIMPL;
400}
401
403{
404 WINE_FIXME("(%p)\n", Object);
405 return E_NOTIMPL;
406}
407
409{
410 WINE_FIXME("(%d)\n", Time);
411 return E_NOTIMPL;
412}
413
415{
416 WINE_FIXME("(%p %s)\n", Object, wine_dbgstr_w(Prefix));
417 return E_NOTIMPL;
418}
419
420static HRESULT WINAPI Host_get_StdIn(IHost *iface, ITextStream **ppts)
421{
422 WINE_FIXME("(%p)\n", ppts);
423 return E_NOTIMPL;
424}
425
426static HRESULT WINAPI Host_get_StdOut(IHost *iface, ITextStream **ppts)
427{
428 WINE_FIXME("(%p)\n", ppts);
429 return E_NOTIMPL;
430}
431
432static HRESULT WINAPI Host_get_StdErr(IHost *iface, ITextStream **ppts)
433{
434 WINE_FIXME("(%p)\n", ppts);
435 return E_NOTIMPL;
436}
437
438static const IHostVtbl HostVtbl = {
452 Host_Quit,
461 Host_Echo,
469};
470
static int argc
Definition: ServiceArgs.c:12
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn UINT32 *TableIdx UINT32 ACPI_TABLE_HEADER *OutTableHeader ACPI_TABLE_HEADER **OutTable ACPI_HANDLE UINT32 ACPI_WALK_CALLBACK ACPI_WALK_CALLBACK void void **ReturnValue UINT32 ACPI_BUFFER *RetPathPtr ACPI_OBJECT_HANDLER void *Data ACPI_OBJECT_HANDLER void **Data ACPI_STRING Pathname
Definition: acpixf.h:704
static void * heap_alloc(size_t len)
Definition: appwiz.h:66
static BOOL heap_free(void *mem)
Definition: appwiz.h:76
IArguments2 arguments_obj
Definition: arguments.c:140
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
Definition: precomp.h:23
WCHAR scriptFullName[MAX_PATH]
Definition: main.c:56
ITypeInfo * host_ti
Definition: main.c:58
#define ARRAY_SIZE(A)
Definition: main.h:33
HANDLE WINAPI GetStdHandle(IN DWORD nStdHandle)
Definition: console.c:203
const GUID IID_IUnknown
#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 E_FAIL
Definition: ddrawi.h:102
#define NULL
Definition: types.h:112
#define FALSE
Definition: types.h:117
#define wcsrchr
Definition: compat.h:16
OLECHAR * BSTR
Definition: compat.h:2293
#define MAX_PATH
Definition: compat.h:34
#define WideCharToMultiByte
Definition: compat.h:111
short VARIANT_BOOL
Definition: compat.h:2290
@ VT_BSTR
Definition: compat.h:2303
@ VT_NULL
Definition: compat.h:2296
@ VT_EMPTY
Definition: compat.h:2295
#define lstrlenW
Definition: compat.h:750
UINT WINAPI DECLSPEC_HOTPATCH GetConsoleOutputCP(VOID)
Definition: console.c:2451
BOOL WINAPI DECLSPEC_HOTPATCH WriteConsoleW(IN HANDLE hConsoleOutput, IN CONST VOID *lpBuffer, IN DWORD nNumberOfCharsToWrite, OUT LPDWORD lpNumberOfCharsWritten, LPVOID lpReserved)
Definition: readwrite.c:1447
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
Definition: rw.c:24
DWORD WINAPI GetModuleFileNameW(HINSTANCE hModule, LPWSTR lpFilename, DWORD nSize)
Definition: loader.c:600
VOID WINAPI ExitProcess(IN UINT uExitCode)
Definition: proc.c:1487
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
Definition: compobj.c:3325
HRESULT WINAPI DECLSPEC_HOTPATCH CLSIDFromProgID(LPCOLESTR progid, LPCLSID clsid)
Definition: compobj.c:2602
HRESULT WINAPI SafeArrayGetUBound(SAFEARRAY *psa, UINT nDim, LONG *plUbound)
Definition: safearray.c:1033
HRESULT WINAPI SafeArrayAccessData(SAFEARRAY *psa, void **ppvData)
Definition: safearray.c:1137
HRESULT WINAPI SafeArrayUnaccessData(SAFEARRAY *psa)
Definition: safearray.c:1168
UINT WINAPI SafeArrayGetDim(SAFEARRAY *psa)
Definition: safearray.c:1094
HRESULT WINAPI SafeArrayGetLBound(SAFEARRAY *psa, UINT nDim, LONG *plLbound)
Definition: safearray.c:1066
unsigned long DWORD
Definition: ntddk_ex.h:95
unsigned short WORD
Definition: ntddk_ex.h:93
const GLdouble * v
Definition: gl.h:2040
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLenum src
Definition: glext.h:6340
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
GLenum GLenum dst
Definition: glext.h:6340
GLenum GLsizei len
Definition: glext.h:6722
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 HRESULT WINAPI Host_QueryInterface(IHost *iface, REFIID riid, void **ppv)
Definition: host.c:101
static HRESULT WINAPI Host_get_Application(IHost *iface, IDispatch **out_Dispatch)
Definition: host.c:171
static ULONG WINAPI Host_Release(IHost *iface)
Definition: host.c:121
static HRESULT WINAPI Host_Invoke(IHost *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
Definition: host.c:152
static HRESULT WINAPI Host_GetTypeInfoCount(IHost *iface, UINT *pctinfo)
Definition: host.c:126
static HRESULT WINAPI Host_Echo(IHost *iface, SAFEARRAY *args)
Definition: host.c:320
static HRESULT WINAPI Host_get_ScriptFullName(IHost *iface, BSTR *out_ScriptFullName)
Definition: host.c:246
static HRESULT WINAPI Host_CreateObject(IHost *iface, BSTR ProgID, BSTR Prefix, IDispatch **out_Dispatch)
Definition: host.c:292
static void print_string(const WCHAR *string)
Definition: host.c:70
static HRESULT WINAPI Host_GetObject(IHost *iface, BSTR Pathname, BSTR ProgID, BSTR Prefix, IDispatch **out_Dispatch)
Definition: host.c:394
static HRESULT WINAPI Host_get_FullName(IHost *iface, BSTR *out_Path)
Definition: host.c:179
static HRESULT WINAPI Host_get_Name(IHost *iface, BSTR *out_Name)
Definition: host.c:162
static HRESULT WINAPI Host_GetIDsOfNames(IHost *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
Definition: host.c:143
static HRESULT WINAPI Host_get_Version(IHost *iface, BSTR *out_Version)
Definition: host.c:263
static HRESULT WINAPI Host_get_Interactive(IHost *iface, VARIANT_BOOL *out_Interactive)
Definition: host.c:209
static HRESULT WINAPI Host_get_ScriptName(IHost *iface, BSTR *out_ScriptName)
Definition: host.c:233
static HRESULT WINAPI Host_get_BuildVersion(IHost *iface, int *out_Build)
Definition: host.c:272
static HRESULT WINAPI Host_ConnectObject(IHost *iface, IDispatch *Object, BSTR Prefix)
Definition: host.c:414
static const WCHAR wshNameW[]
Definition: host.c:37
static HRESULT to_string(VARIANT *src, BSTR *dst)
Definition: host.c:47
IHost host_obj
Definition: host.c:471
static HRESULT WINAPI Host_put_Interactive(IHost *iface, VARIANT_BOOL v)
Definition: host.c:217
static HRESULT WINAPI Host_get_Timeout(IHost *iface, LONG *out_Timeout)
Definition: host.c:280
static const WCHAR wshVersionW[]
Definition: host.c:38
static HRESULT WINAPI Host_get_Path(IHost *iface, BSTR *out_Path)
Definition: host.c:192
static HRESULT WINAPI Host_get_StdErr(IHost *iface, ITextStream **ppts)
Definition: host.c:432
static HRESULT WINAPI Host_get_StdOut(IHost *iface, ITextStream **ppts)
Definition: host.c:426
static HRESULT WINAPI Host_Sleep(IHost *iface, LONG Time)
Definition: host.c:408
static HRESULT WINAPI Host_GetTypeInfo(IHost *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
Definition: host.c:133
static HRESULT WINAPI Host_Quit(IHost *iface, int ExitCode)
Definition: host.c:225
static ULONG WINAPI Host_AddRef(IHost *iface)
Definition: host.c:116
static const IHostVtbl HostVtbl
Definition: host.c:438
static HRESULT WINAPI Host_get_Arguments(IHost *iface, IArguments2 **out_Arguments)
Definition: host.c:255
static HRESULT WINAPI Host_put_Timeout(IHost *iface, LONG v)
Definition: host.c:286
#define BUILDVERSION
Definition: host.c:35
VARIANT_BOOL wshInteractive
Definition: host.c:40
static HRESULT WINAPI Host_DisconnectObject(IHost *iface, IDispatch *Object)
Definition: host.c:402
static HRESULT WINAPI Host_get_StdIn(IHost *iface, ITextStream **ppts)
Definition: host.c:420
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
#define S_OK
Definition: intsafe.h:52
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define FAILED(hr)
Definition: intsafe.h:51
static const WCHAR nullW[]
Definition: json.c:32
#define debugstr_w
Definition: kernel32.h:32
#define wine_dbgstr_w
Definition: kernel32.h:34
const GUID * guid
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
static PVOID ptr
Definition: dispmode.c:27
static const char * debugstr_variant(const VARIANT *var)
Definition: container.c:46
HRESULT hres
Definition: protocol.c:465
static PLARGE_INTEGER Time
Definition: time.c:105
static LPOLESTR
Definition: stg_prop.c:27
static VARIANTARG static DISPID
Definition: ordinal.c:52
#define argv
Definition: mplay32.c:18
Definition: ihost.idl:30
unsigned int UINT
Definition: ndis.h:50
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 V_VT(A)
Definition: oleauto.h:211
#define V_BSTR(A)
Definition: oleauto.h:226
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 WINE_TRACE
Definition: debug.h:354
#define WINE_FIXME
Definition: debug.h:366
static __inline const char * wine_dbgstr_guid(const GUID *id)
Definition: debug.h:197
#define TRACE(s)
Definition: solgame.cpp:4
Definition: match.c:390
uint32_t ULONG
Definition: typedefs.h:59
HRESULT WINAPI DECLSPEC_HOTPATCH VariantChangeType(VARIANTARG *pvargDest, VARIANTARG *pvargSrc, USHORT wFlags, VARTYPE vt)
Definition: variant.c:962
int ret
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
#define STD_OUTPUT_HANDLE
Definition: winbase.h:268
_In_ DWORD _Out_ _In_ WORD wFlags
Definition: wincon.h:531
#define WINAPI
Definition: msvc.h:6
#define E_NOINTERFACE
Definition: winerror.h:2364
int WINAPI MessageBoxW(_In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType)
#define MB_OK
Definition: winuser.h:789
_In_ __drv_aliasesMem PSTRING Prefix
Definition: rtlfuncs.h:1630
__wchar_t WCHAR
Definition: xmlstorage.h:180