IMessageFilter::HandleInComingCall-Methode (objidl.h)

Stellt einen einzelnen Einstiegspunkt für eingehende Anrufe bereit.

Diese Methode wird vor jedem Methodenaufruf aufgerufen, der außerhalb des aktuellen Prozesses liegt, und bietet die Möglichkeit, eingehende Aufrufe (oder Rückrufe) an ein Objekt oder einen Prozess zu filtern oder abzulehnen.

Syntax

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

Parameter

[in] dwCallType

Der Typ des eingehenden Anrufs, der empfangen wurde. Mögliche Werte stammen aus der Enumeration CALLTYPE.

[in] htaskCaller

Die Thread-ID des Aufrufers.

[in] dwTickCount

Die Anzahl der verstrichenen Teilstriche seit dem ausgehenden Anruf, wenn dwCallType nicht CALLTYPE_TOPLEVEL ist. Wenn dwCallType CALLTYPE_TOPLEVEL ist, sollte dwTickCount ignoriert werden.

[in] lpInterfaceInfo

Ein Zeiger auf eine INTERFACEINFO-Struktur , die das aufgerufene Objekt, die Schnittstelle und die Methode identifiziert. Bei DDE-Aufrufen kann lpInterfaceInfoNULL sein, da die DDE-Ebene keine Schnittstelleninformationen zurückgibt.

Rückgabewert

Diese Methode kann die folgenden Werte zurückgeben.

Rückgabecode Beschreibung
SERVERCALL_ISHANDLED
Die Anwendung kann den Aufruf möglicherweise verarbeiten.
SERVERCALL_REJECTED
Die Anwendung kann den Aufruf aufgrund eines unvorhergesehenen Problems nicht verarbeiten, z. B. aufgrund der Nichtverfügbarkeit des Netzwerks, oder wenn er gerade beendet wird.
SERVERCALL_RETRYLATER
Die Anwendung kann den Aufruf derzeit nicht verarbeiten. Eine Anwendung gibt diesen Wert möglicherweise zurück, wenn sie sich in einem vom Benutzer gesteuerten modalen Zustand befindet.

Hinweise

Falls implementiert, wird HandleInComingCall von COM aufgerufen, wenn eine eingehende COM-Nachricht empfangen wird.

Abhängig vom aktuellen Status einer Anwendung wird ein Aufruf entweder akzeptiert und verarbeitet oder abgelehnt (dauerhaft oder vorübergehend). Wenn SERVERCALL_ISHANDLED zurückgegeben wird, kann die Anwendung den Aufruf möglicherweise verarbeiten, obwohl der Erfolg von der Schnittstelle abhängt, für die der Aufruf bestimmt ist. Wenn der Aufruf nicht verarbeitet werden kann, gibt COM RPC_E_CALL_REJECTED zurück.

Eingabesynchrone und asynchrone Aufrufe werden auch dann weitergeleitet, wenn die Anwendung SERVERCALL_REJECTED oder SERVERCALL_RETRYLATER zurückgibt.

HandleInComingCall sollte nicht verwendet werden, um Aktualisierungen von Objekten während Vorgängen wie banddrucken zu halten. Verwenden Sie zu diesem Zweck IViewObject::Freeze.

Sie können auch HandleInComingCall verwenden, um den Zustand der Anwendung so einzurichten, dass der Aufruf in Zukunft verarbeitet werden kann.

Hinweis Obwohl der htaskCaller-Parameter als HTASK eingegeben wird, enthält er die Thread-ID des aufrufenden Threads. Wenn Sie die IMessageFilter-Schnittstelle implementieren, können Sie die OpenThread-Funktion aufrufen, um das Threadhandle aus dem htaskCaller-Parameter abzurufen, und Sie können die GetProcessIdOfThread-Funktion aufrufen, um die Prozess-ID abzurufen.
 

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile objidl.h

Weitere Informationen

Imessagefilter