IMessageFilter::HandleInComingCall 方法 (objidl.h)
为传入呼叫提供单个入口点。
此方法在源自当前进程外部的每个方法调用之前调用,并提供筛选或拒绝传入调用 (或) 对象或进程的回调的能力。
语法
DWORD HandleInComingCall(
[in] DWORD dwCallType,
[in] HTASK htaskCaller,
[in] DWORD dwTickCount,
[in] LPINTERFACEINFO lpInterfaceInfo
);
参数
[in] dwCallType
已接收的传入呼叫的类型。 可能的值来自枚举 CALLTYPE。
[in] htaskCaller
调用方线程 ID。
[in] dwTickCount
如果未CALLTYPE_TOPLEVEL dwCallType ,则为自发出传出调用以来经过的计时周期计数。 如果 dwCallType CALLTYPE_TOPLEVEL,则应忽略 dwTickCount 。
[in] lpInterfaceInfo
指向 INTERFACEINFO 结构的指针,该结构标识要调用的对象、接口和方法。 对于 DDE 调用, lpInterfaceInfo 可以为 NULL ,因为 DDE 层不返回接口信息。
返回值
此方法可以返回以下值。
返回代码 | 说明 |
---|---|
|
应用程序可能能够处理调用。 |
|
由于不可预见的问题(例如网络不可用)或应用程序正在终止,应用程序无法处理调用。 |
|
应用程序此时无法处理调用。 当应用程序处于用户控制的模式状态时,可能会返回此值。 |
注解
如果实现,当收到传入 COM 消息时,COM 将调用 HandleInComingCall 。
根据应用程序的当前状态,将接受并处理调用,或者永久或暂时) (拒绝调用。 如果返回SERVERCALL_ISHANDLED,应用程序也许能够处理调用,尽管成功取决于调用的目标接口。 如果无法处理调用,COM 将返回RPC_E_CALL_REJECTED。
即使应用程序返回SERVERCALL_REJECTED或SERVERCALL_RETRYLATER,也会调度输入同步调用和异步调用。
在操作(如带段打印)期间,不应使用 HandleInComingCall 来阻止对对象的更新。 为此,请使用 IViewObject::Freeze。
还可以使用 HandleInComingCall 设置应用程序的状态,以便将来可以处理调用。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | objidl.h |