PFN_WSK_INSPECT_EVENT Rückruffunktion (wsk.h)

Die WskInspectEvent-Ereignisrückruffunktion benachrichtigt eine WSK-Anwendung, dass eine eingehende Verbindungsanforderung für einen Überwachungssocket empfangen wurde, für den der Modus für die bedingte Annahme aktiviert ist.

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 lauschenden Socket, für den die eingehende Verbindungsanforderung empfangen wurde. Die WSK-Anwendung hat diesen Zeiger auf das WSK-Subsystem bereitgestellt, als sie die WskSocket-Funktion aufgerufen hat , um den lauschenden Socket zu erstellen.

[in] LocalAddress

Ein Zeiger auf einen Puffer, der die lokale Transportadresse enthält, an 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 lauschenden Sockets 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 lauschenden Sockets 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 Abhörsocket nicht mehr funktionsfähig, und die WSK-Anwendung muss die WskCloseSocket-Funktion aufrufen, um den Lauschsocket 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.

Hinweise

Das WSK-Subsystem ruft die WskInspectEvent-Ereignisrückruffunktion einer WSK-Anwendung für einen lauschenden Socket auf, für den der Modus für die bedingte Annahme aktiviert ist. Eine WSK-Anwendung kann den Modus für die bedingte Annahme auf einem Lauschocket aktivieren, indem die Option SO_CONDITIONAL_ACCEPT Socket aktiviert wird. Weitere Informationen zum bedingten Akzeptieren eingehender Verbindungen finden Sie unter Lauschen auf und Akzeptieren eingehender Connections.

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

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

Wenn eine WSK-Anwendung WskInspectPend von ihrer WskInspectEvent-Ereignisrückruffunktion zurückgibt, muss die Anwendung die WskInspectComplete-Funktion aufrufen, nachdem ermittelt wurde, ob die eingehende Verbindungsanforderung akzeptiert oder abgelehnt werden soll (es sei denn, die eingehende Verbindungsanforderung wurde in der Zwischenzeit abgebrochen). Die WSK-Anwendung muss den Inhalt der WSK_INSPECT_ID Struktur, auf die vom InspectID-Parameter verwiesen wird, in eine eigene WSK_INSPECT_ID-Struktur kopieren, bevor sie von der WskInspectEvent-Ereignisrückruffunktion zurückgibt. Die WSK-Anwendung übergibt einen Zeiger auf ihre eigene WSK_INSPECT_ID-Struktur an die WskInspectComplete-Funktion , wenn sie die Überprüfung 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 von den Parametern LocalAddress und RemoteAddress verwiesen wird, sind nur für die Dauer des Aufrufs der WskInspectEvent-Ereignisrückruffunktion gültig. Wenn eine WSK-Anwendung WskInspectPend aus ihrer WskInspectEvent-Ereignisrückruffunktion zurückgibt und diese Transportadressen während des weiteren Verlaufs der Überprüfung benötigt, muss sie den Inhalt dieser Strukturen in ihre eigenen SOCKADDR-Strukturen kopieren, bevor sie von der WskInspectEvent-Ereignisrückruffunktion zurückgibt.

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

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

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar in Windows Vista und höheren Versionen der Windows-Betriebssysteme.
Zielplattform Windows
Kopfzeile wsk.h (einschließen von Wsk.h)
IRQL <= DISPATCH_LEVEL

Weitere Informationen

SOCKADDR

WSK_CLIENT_LISTEN_DISPATCH

WSK_INSPECT_ID

WskAbortEvent

WskAccept

WskAcceptEvent

WskCloseSocket

WskControlSocket

WskInspectComplete

WskSocket