iTypeInfo::Invoke 方法 (oaidl.h)

调用对象的方法或访问对象的属性,该方法或属性实现由类型说明描述的接口。

语法

HRESULT Invoke(
  [in]      PVOID      pvInstance,
  [in]      MEMBERID   memid,
  [in]      WORD       wFlags,
  [in, out] DISPPARAMS *pDispParams,
  [out]     VARIANT    *pVarResult,
  [out]     EXCEPINFO  *pExcepInfo,
  [out]     UINT       *puArgErr
);

参数

[in] pvInstance

此类型说明所描述的接口的实例。

[in] memid

接口成员。

[in] wFlags

描述 Invoke 调用的上下文的标志。

含义
DISPATCH_METHOD
成员作为方法进行访问。 如果存在多义性,则可以同时设置此标志和 DISPATCH_PROPERTYGET 标志。
DISPATCH_PROPERTYGET
成员作为属性或数据成员进行检索。
DISPATCH_PROPERTYPUT
成员将更改为属性或数据成员。
DISPATCH_PROPERTYPUTREF
通过使用引用赋值而不是值赋值来更改成员。 仅当属性接受对 对象的引用时,此标志才有效。

[in, out] pDispParams

参数数组、命名参数的 DISPID 数组以及每个数组中元素数的计数。

[out] pVarResult

结果。 如果调用方不期望任何结果,应为 null。 如果 wFlags 指定DISPATCH_PROPERTYPUT或DISPATCH_PROPERTYPUTREF,则忽略 pVarResultis

[out] pExcepInfo

异常信息结构,仅在返回DISP_E_EXCEPTION时填充。 如果 输入时 pExcepInfo 为 null,则仅返回 HRESULT 错误。

[out] puArgErr

如果 Invoke 返回DISP_E_TYPEMISMATCH, 则 puArgErr 指示类型不正确的参数的 rgvarg) 内的索引 (。 如果多个参数返回错误, 则 puArgErr 仅指示第一个有错误的参数。 pDispParams->rgvarg 中的参数采用逆序显示,因此第一个参数是数组中具有最大索引的参数。 此参数不可以为 null。

返回值

返回代码 说明
S_OK
成功。
E_INVALIDARG
一个或多个参数无效。
DISP_E_EXCEPTION
被调用的成员返回了错误 HRESULT。 如果成员实现 IErrorInfo,则错误对象中提供了详细信息。 否则, pExcepInfo 参数包含详细信息。
 

也可能返回任何 IDispatch::Invoke 错误。

注解

使用函数 ITypeInfo::Invoke 访问对象的成员,或调用实现此类型说明所描述的接口的方法。 对于支持 IDispatch 接口的对象,可以使用 Invoke 实现 IDispatch::Invoke

ITypeInfo::Invoke 获取指向 类实例的指针。 否则,其参数与 IDispatch::Invoke 相同,只是 ITypeInfo::Invoke 省略 refiidlcid 参数。 调用时, ITypeInfo::Invoke 在指定的实例上执行 IDispatch::Invoke 参数描述的操作。

对于 VTBL 接口成员, ITypeInfo::Invoke 将类型信息的 LCID 传递到使用 lcid 属性标记的参数中,并将返回的值传递到 retval 属性中。

如果类型说明继承自另一个类型说明,则此函数在基本类型说明上重复,以查找具有所请求成员 ID 的项。

要求

要求
目标平台 Windows
标头 oaidl.h

另请参阅

ITypeInfo