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 |
---|---|
|
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. |
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 |