IMessageFilter::HandleInComingCall 方法 (objidl.h)

提供傳入呼叫的單一進入點。

這個方法會在源自目前進程以外的每個方法調用之前呼叫,並提供篩選或拒絕傳入呼叫的能力, (或回呼) 對象或進程。

語法

DWORD HandleInComingCall(
  [in] DWORD           dwCallType,
  [in] HTASK           htaskCaller,
  [in] DWORD           dwTickCount,
  [in] LPINTERFACEINFO lpInterfaceInfo
);

參數

[in] dwCallType

已接收的來電類型。 可能的值為來自列舉 CALLTYPE

[in] htaskCaller

呼叫端的線程標識碼。

[in] dwTickCount

如果 dwCallType 未CALLTYPE_TOPLEVEL,則傳出呼叫之後經過的刻度計數。 如果 dwCallType 是CALLTYPE_TOPLEVEL,則應該忽略 dwTickCount

[in] lpInterfaceInfo

INTERFACEINFO 結構的指標,可識別所呼叫的物件、介面和方法。 在 DDE 呼叫的情況下, lpInterfaceInfo 可以是 NULL ,因為 DDE 層不會傳回介面資訊。

傳回值

這個方法可以傳回下列值。

傳回碼 Description
SERVERCALL_ISHANDLED
應用程式可能能夠處理呼叫。
SERVERCALL_REJECTED
應用程式因無法預期的問題而無法處理呼叫,例如網路無法使用,或是在終止的過程中。
SERVERCALL_RETRYLATER
應用程式目前無法處理呼叫。 當應用程式處於使用者控制的強制回應狀態時,可能會傳回此值。

備註

如果實作,當收到傳入 COM 訊息時,COM 會呼叫 HandleInComingCall

視應用程式的目前狀態而定,系統會永久或暫時) 接受和處理或拒絕呼叫 (。 如果傳回SERVERCALL_ISHANDLED,則應用程式可能會處理呼叫,雖然成功取決於呼叫的目的地介面。 如果無法處理呼叫,COM 會傳回RPC_E_CALL_REJECTED。

即使應用程式傳回SERVERCALL_REJECTED或SERVERCALL_RETRYLATER,仍會分派輸入同步處理和異步呼叫。

HandleInComingCall 不應該用來在作業期間保留物件的更新,例如頻外列印。 針對該目的,請使用 IViewObject::Freeze

您也可以使用 HandleInComingCall 來設定應用程式的狀態,以便日後處理呼叫。

注意 雖然 htaskCaller 參數的類型為 HTASK,但它包含呼叫線程的線程標識碼。 當您實作 IMessageFilter 介面時,您可以呼叫 OpenThread 函式以從 htaskCaller 參數取得線程句柄,而且您可以呼叫 GetProcessIdOfThread 函式以取得進程識別符。
 

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 objidl.h

另請參閱

IMessageFilter