2 * Dispatch API functions
4 * Copyright 2000 Francois Jacques, Macadamian Technologies Inc.
8 * TODO: Type coercion is implemented in variant.c but not called yet.
16 #include "winreg.h" /* for HKEY_LOCAL_MACHINE */
17 #include "winnls.h" /* for PRIMARYLANGID */
20 #include "wine/obj_oleaut.h"
21 #include "debugtools.h"
23 DEFAULT_DEBUG_CHANNEL(ole);
24 DECLARE_DEBUG_CHANNEL(typelib);
27 /******************************************************************************
28 * DispInvoke (OLEAUT32.30)
31 * Calls method of an object through its IDispatch interface.
34 * - Defer method invocation to ITypeInfo::Invoke()
41 DispInvoke(VOID* _this, /* object instance */
42 ITypeInfo* ptinfo, /* object's type info */
43 DISPID dispidMember, /* member id */
44 USHORT wFlags, /* kind of method call */
45 DISPPARAMS* pparams, /* array of arguments */
46 VARIANT* pvarResult, /* result of method call */
47 EXCEPINFO* pexcepinfo, /* information about exception */
48 UINT* puArgErr /* index of bad argument(if any) */
55 * For each param, call DispGetParam to perform type coercion
57 FIXME("Coercion of arguments not implemented\n");
59 hr = ICOM_CALL7(Invoke,
64 pparams, pvarResult, pexcepinfo, puArgErr);
70 /******************************************************************************
71 * DispGetIDsOfNames (OLEAUT32.29)
73 * Convert a set of names to dispids, based on information
74 * contained in object's type library.
77 * - Defers to ITypeInfo::GetIDsOfNames()
84 DispGetIDsOfNames(ITypeInfo* ptinfo,
91 hr = ICOM_CALL3(GetIDsOfNames,
99 /******************************************************************************
100 * DispGetParam (OLEAUT32.30)
102 * Retrive a parameter from a DISPPARAMS structures and coerce it to
103 * specified variant type
106 * Coercion is done using system (0) locale.
113 DispGetParam(DISPPARAMS* pdispparams,
120 * TODO : Call VariantChangeTypeEx with LCID 0 (system)
123 FIXME("Coercion of arguments not implemented\n");