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()
40 HRESULT WINAPI DispInvoke(
41 VOID *_this, /* [in] object instance */
42 ITypeInfo *ptinfo, /* [in] object's type info */
43 DISPID dispidMember, /* [in] member id */
44 USHORT wFlags, /* [in] kind of method call */
45 DISPPARAMS *pparams, /* [in] array of arguments */
46 VARIANT *pvarResult, /* [out] result of method call */
47 EXCEPINFO *pexcepinfo, /* [out] information about exception */
48 UINT *puArgErr) /* [out] index of bad argument(if any) */
54 * For each param, call DispGetParam to perform type coercion
56 FIXME("Coercion of arguments not implemented\n");
58 hr = ICOM_CALL7(Invoke,
63 pparams, pvarResult, pexcepinfo, puArgErr);
69 /******************************************************************************
70 * DispGetIDsOfNames (OLEAUT32.29)
72 * Convert a set of names to dispids, based on information
73 * contained in object's type library.
76 * - Defers to ITypeInfo::GetIDsOfNames()
82 HRESULT WINAPI DispGetIDsOfNames(
83 ITypeInfo *ptinfo, /* [in] */
84 OLECHAR **rgszNames, /* [in] */
85 UINT cNames, /* [in] */
86 DISPID *rgdispid) /* [out] */
90 hr = ICOM_CALL3(GetIDsOfNames,
98 /******************************************************************************
99 * DispGetParam (OLEAUT32.28)
101 * Retrive a parameter from a DISPPARAMS structures and coerce it to
102 * specified variant type
105 * Coercion is done using system (0) locale.
111 HRESULT WINAPI DispGetParam(
112 DISPPARAMS *pdispparams, /* [in] */
113 UINT position, /* [in] */
114 VARTYPE vtTarg, /* [in] */
115 VARIANT *pvarResult, /* [out] */
116 UINT *puArgErr) /* [out] */
121 * TODO : Call VariantChangeTypeEx with LCID 0 (system)
124 FIXME("Coercion of arguments not implemented\n");