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.
22 #include "winreg.h" /* for HKEY_LOCAL_MACHINE */
23 #include "winnls.h" /* for PRIMARYLANGID */
25 #include "wine/obj_oleaut.h"
27 #include "debugtools.h"
29 DEFAULT_DEBUG_CHANNEL(ole);
30 DECLARE_DEBUG_CHANNEL(typelib);
33 /******************************************************************************
34 * DispInvoke (OLEAUT32.30)
37 * Calls method of an object through its IDispatch interface.
40 * - Defer method invocation to ITypeInfo::Invoke()
46 HRESULT WINAPI DispInvoke(
47 VOID *_this, /* [in] object instance */
48 ITypeInfo *ptinfo, /* [in] object's type info */
49 DISPID dispidMember, /* [in] member id */
50 USHORT wFlags, /* [in] kind of method call */
51 DISPPARAMS *pparams, /* [in] array of arguments */
52 VARIANT *pvarResult, /* [out] result of method call */
53 EXCEPINFO *pexcepinfo, /* [out] information about exception */
54 UINT *puArgErr) /* [out] index of bad argument(if any) */
60 * For each param, call DispGetParam to perform type coercion
62 FIXME("Coercion of arguments not implemented\n");
64 hr = ICOM_CALL7(Invoke,
69 pparams, pvarResult, pexcepinfo, puArgErr);
75 /******************************************************************************
76 * DispGetIDsOfNames (OLEAUT32.29)
78 * Convert a set of names to dispids, based on information
79 * contained in object's type library.
82 * - Defers to ITypeInfo::GetIDsOfNames()
88 HRESULT WINAPI DispGetIDsOfNames(
89 ITypeInfo *ptinfo, /* [in] */
90 OLECHAR **rgszNames, /* [in] */
91 UINT cNames, /* [in] */
92 DISPID *rgdispid) /* [out] */
96 hr = ICOM_CALL3(GetIDsOfNames,
104 /******************************************************************************
105 * DispGetParam (OLEAUT32.28)
107 * Retrive a parameter from a DISPPARAMS structures and coerce it to
108 * specified variant type
111 * Coercion is done using system (0) locale.
117 HRESULT WINAPI DispGetParam(
118 DISPPARAMS *pdispparams, /* [in] */
119 UINT position, /* [in] */
120 VARTYPE vtTarg, /* [in] */
121 VARIANT *pvarResult, /* [out] */
122 UINT *puArgErr) /* [out] */
127 * TODO : Call VariantChangeTypeEx with LCID 0 (system)
130 FIXME("Coercion of arguments not implemented\n");