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