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 |
---|---|
|
Die eingehende Verbindungsanforderung wird akzeptiert. |
|
Die eingehende Verbindungsanforderung wird abgelehnt. |
|
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 |