Freigeben über


PFN_WSK_INSPECT_EVENT Rückruffunktion (wsk.h)

Die WskInspectEvent- Ereignisrückruffunktion benachrichtigt eine WSK-Anwendung, dass eine eingehende Verbindungsanforderung für einen Überwachungssocket mit aktiviertem Modus für bedingte Annahme empfangen wurde.

Syntax

PFN_WSK_INSPECT_EVENT PfnWskInspectEvent;

WSK_INSPECT_ACTION PfnWskInspectEvent(
  [in, optional] PVOID SocketContext,
  [in]           PSOCKADDR LocalAddress,
  [in]           PSOCKADDR RemoteAddress,
  [in, optional] PWSK_INSPECT_ID InspectID
)
{...}

Parameter

[in, optional] SocketContext

Ein Zeiger auf den Socketkontext für den Überwachungssocket, auf dem die eingehende Verbindungsanforderung empfangen wurde. Die WSK-Anwendung hat diesen Zeiger auf das WSK-Subsystem bereitgestellt, wenn sie die WskSocket--Funktion aufgerufen hat, um den Überwachungssocket zu erstellen.

[in] LocalAddress

Ein Zeiger auf einen Puffer, der die lokale Transportadresse enthält, auf der die eingehende Verbindungsanforderung eingegangen ist. Der Puffer enthält den spezifischen SOCKADDR-Strukturtyp, der der Adressfamilie entspricht, die die WSK-Anwendung beim Erstellen des Überwachungssockets angegeben hat.

[in] RemoteAddress

Ein Zeiger auf einen Puffer, der die Remotetransportadresse enthält, von der die eingehende Verbindungsanforderung stammt. Der Puffer enthält den spezifischen SOCKADDR-Strukturtyp, der der Adressfamilie entspricht, die die WSK-Anwendung beim Erstellen des Überwachungssockets angegeben hat.

[in, optional] InspectID

Ein Zeiger auf eine WSK_INSPECT_ID Struktur. Der Inhalt der Struktur identifiziert die eingehende Verbindungsanforderung, die überprüft wird. Wenn dieser Zeiger NULL-ist, ist der Überwachungssocket nicht mehr funktionsfähig, und die WSK-Anwendung muss die WskCloseSocket--Funktion aufrufen, um den Überwachungssocket so schnell wie möglich zu schließen.

Rückgabewert

Die WskInspectEvent- Ereignisrückruffunktion einer WSK-Anwendung kann einen der folgenden WSK_INSPECT_ACTION Werte zurückgeben:

Rückgabecode Beschreibung
WskInspectAccept-
Die eingehende Verbindungsanforderung wird akzeptiert.
WskInspectReject
Die eingehende Verbindungsanforderung wird abgelehnt.
WskInspectPend
Die WSK-Anwendung konnte nicht ermitteln, ob die eingehende Verbindungsanforderung sofort akzeptiert oder abgelehnt werden soll.

Bemerkungen

Das WSK-Subsystem ruft die WskInspectEvent Ereignisrückruffunktion einer WSK-Anwendung in einem Überwachungssocket auf, in dem der Modus für die bedingte Annahme aktiviert ist. Eine WSK-Anwendung kann den Modus für die bedingte Annahme in einem Überwachungssocket aktivieren, indem die SO_CONDITIONAL_ACCEPT Socketoption aktiviert wird. Weitere Informationen zum bedingten Annehmen eingehender Verbindungen finden Sie unter Überwachung und Annehmen eingehender Verbindungen.

Wenn eine WSK-Anwendung WskInspectAccept von der WskInspectEvent- Ereignisrückruffunktion zurückgibt, wird die Socketverbindung weiterhin vom WSK-Subsystem hergestellt. Das WSK-Subsystem gibt den Socket an die WSK-Anwendung zurück, indem entweder ein Aufruf der WskAccept--Funktion oder durch Aufrufen der WskAcceptEvent Ereignisrückruffunktion der WSK-Anwendung ausgeführt wird, wenn die Ereignisrückruffunktion aktiviert ist. Wenn die eingehende Verbindungsanforderung gelöscht wird, bevor die Socketverbindung vollständig hergestellt wird, ruft das WSK-Subsystem die WskAbortEvent- Ereignisrückruffunktion der WSK-Anwendung auf.

Wenn eine WSK-Anwendung WskInspectReject aus der WskInspectEvent Ereignisrückruffunktion zurückgibt, wird die eingehende Verbindungsanforderung gelöscht, und die Socketverbindung wird nicht hergestellt.

Wenn eine WSK-Anwendung WskInspectPend- von der WskInspectEvent Ereignisrückruffunktion zurückgibt, muss die Anwendung die WskInspectComplete--Funktion aufrufen, nachdem sie bestimmt hat, ob die eingehende Verbindungsanforderung akzeptiert oder abgelehnt werden soll (es sei denn, die eingehende Verbindungsanforderung wird in der Zwischenzeit abgebrochen). Die WSK-Anwendung muss den Inhalt der WSK_INSPECT_ID Struktur kopieren, auf die der InspectID Parameter verweist, in eine eigene WSK_INSPECT_ID-Struktur, bevor sie von der WskInspectEvent Ereignisrückruffunktion zurückgegeben wird. Die WSK-Anwendung übergibt einen Zeiger an eine eigene WSK_INSPECT_ID Struktur an die WskInspectComplete--Funktion, wenn sie die Inspektion abgeschlossen hat. Die WSK-Anwendung verwendet diese Struktur auch, um die eingehende Verbindungsanforderung zu identifizieren, wenn die Anforderung abgebrochen wird, bevor die Überprüfung abgeschlossen ist.

Die SOCKADDR- Strukturen, auf die durch die LocalAddress- und RemoteAddress Parameter verwiesen werden, sind nur für die Dauer des Aufrufs an die WskInspectEvent Ereignisrückruffunktion gültig. Wenn eine WSK-Anwendung WskInspectPend- aus der WskInspectEvent Ereignisrückruffunktion zurückgibt und diese Transportadressen während des restlichen Prüfvorgangs benötigt, muss sie den Inhalt dieser Strukturen in seine eigenen SOCKADDR-Strukturen kopieren, bevor sie von der WskInspectEvent Ereignisrückruffunktion zurückgegeben wird.

Das WSK-Subsystem ruft die WskInspectEvent Ereignisrückruffunktion einer WSK-Anwendung bei IRQL <= DISPATCH_LEVEL auf.

Die WskInspectEvent- Ereignisrückruffunktion einer WSK-Anwendung darf nicht auf den Abschluss anderer WSK-Anforderungen im Kontext von WSK-Abschluss- oder Ereignisrückruffunktionen warten. Der Rückruf kann andere WSK-Anforderungen initiieren (vorausgesetzt, es verbringt nicht zu viel Zeit bei DISPATCH_LEVEL), aber er darf nicht auf den Abschluss warten, auch wenn der Rückruf bei IRQL = PASSIVE_LEVEL aufgerufen wird.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Verfügbar in Windows Vista und höheren Versionen der Windows-Betriebssysteme.
Zielplattform- Fenster
Header- wsk.h (include Wsk.h)
IRQL- <= DISPATCH_LEVEL

Siehe auch

SOCKADDR-

WSK_CLIENT_LISTEN_DISPATCH

WSK_INSPECT_ID

WskAbortEvent-

WskAccept-

WskAcceptEvent-

WskCloseSocket

WskControlSocket-

WskInspectComplete-

WskSocket-