PFN_WSK_DISCONNECT Rückruffunktion (wsk.h)
Die WskDisconnect Funktion trennt einen verbindungsorientierten oder Streamsocket von einer Remote-Transportadresse.
Syntax
PFN_WSK_DISCONNECT PfnWskDisconnect;
NTSTATUS PfnWskDisconnect(
[in] PWSK_SOCKET Socket,
[in, optional] PWSK_BUF Buffer,
[in] ULONG Flags,
[in, out] PIRP Irp
)
{...}
Parameter
[in] Socket
Ein Zeiger auf eine WSK_SOCKET-Struktur, die das Socketobjekt für den Socket angibt, der getrennt wird.
[in, optional] Buffer
Ein Zeiger auf eine WSK_BUF Struktur. Diese Struktur beschreibt einen Datenpuffer, der Daten enthält, die vom WSK-Subsystem an die Remotetransportadresse übertragen werden, bevor der Socket getrennt wird. Wenn keine solchen Daten übertragen werden sollen, legt die WSK-Anwendung diesen Zeiger auf NULL-fest. Wenn WSK_FLAG_ABORTIVE im Parameter Flags angegeben wird, muss der parameter BufferNULLsein.
[in] Flags
Ein ULONG-Wert, der das folgende Flag oder null enthält:
WSK_FLAG_ABORTIVE
Leitet das WSK-Subsystem an, um eine abgebrochene Trennung des Sockets durchzuführen. Wenn eine WSK-Anwendung dieses Flag nicht angibt, führt das WSK-Subsystem eine ordnungsgemäße Verbindung des Sockets durch.
[in, out] Irp
Ein Zeiger auf ein vom Aufrufer zugewiesenes IRP, das vom WSK-Subsystem zum asynchronen Abschließen des Trennungsvorgangs verwendet wird. Weitere Informationen zur Verwendung von IRPs mit WSK-Funktionen finden Sie unter Verwenden von IRPs mit Winsock Kernel Functions.
Rückgabewert
WskDisconnect- gibt einen der folgenden NTSTATUS-Codes zurück:
Rückgabecode | Beschreibung |
---|---|
|
Der Socket wurde erfolgreich von der Remotetransportadresse getrennt. Das IRP wird mit dem Erfolgsstatus abgeschlossen. |
|
Das WSK-Subsystem konnte den Socket nicht sofort trennen. Das WSK-Subsystem schließt das IRP ab, nachdem er den Socket von der Remotetransportadresse getrennt hat. Der Status des Trennungsvorgangs wird im feld IoStatus.Status IRP zurückgegeben. |
|
Der Socket ist nicht mehr funktionsfähig. Das IRP wird mit dem Fehlerstatus abgeschlossen. Die WSK-Anwendung muss die WskCloseSocket- Funktion aufrufen, um den Socket so schnell wie möglich zu schließen. |
|
Fehler. Das IRP wird mit dem Fehlerstatus abgeschlossen. |
Bemerkungen
Eine WSK-Anwendung kann die WskDisconnect--Funktion nur für einen verbindungsorientierten oder Streamsocket aufrufen, den sie zuvor mit einer Remote-Transportadresse oder einem Socket verbunden hat, den sie in einem Überwachungssocket akzeptiert hat.
WskDisconnect- bewirkt, dass das WSK-Subsystem die Remotetransportadresse über die für den zugrunde liegenden Transport geeigneten Mittel benachrichtigt, dass die Verbindung getrennt wird. Wenn der parameter Buffer nichtNULList, überträgt das WSK-Subsystem die Daten im Puffer an die Remotetransportadresse, bevor der Socket getrennt wird.
Wenn eine ordnungsgemäße Verbindung ausgeführt wird, wartet das WSK-Subsystem, bis alle ausstehenden Übertragungsdaten gesendet wurden, bevor die Verbindung mit dem Socket getrennt wird. Nachdem der Socket getrennt wurde, kann die WSK-Anwendung keine weiteren Daten an die Remotetransportadresse senden. Die WSK-Anwendung kann jedoch weiterhin zusätzliche Daten von der Remotetransportadresse empfangen, bis die Remoteanwendung das Ende des Sockets trennt.
Beachten Sie, dass nicht alle Transporte halb geöffnete Verbindungen unterstützen. Wenn ein Transport keine halboffenen Verbindungen unterstützt, empfängt die WSK-Anwendung keine zusätzlichen Daten von der Remotetransportadresse, nachdem eine ordnungsgemäße Verbindung ausgeführt wurde.
Bei einer ordnungsgemäßen Verbindung wird das IRP nur abgeschlossen, wenn der Trennungsvorgang vollständig durch das Transportprotokoll abgeschlossen ist. Bei einigen Transportprotokollen ist das IRP möglicherweise nicht abgeschlossen, wenn ein Problem beim Übertragen von Daten an die Remotetransportadresse vorliegt. In diesem Fall kann die WSK-Anwendung wiederherstellen, indem sie entweder die WskDisconnect--Funktion erneut aufrufen und das WSK_FLAG_ABORTIVE Flag angeben oder die WskCloseSocket--Funktion aufrufen. In beiden Situationen trennt das WSK-Subsystem den Socket und erzwingt den Abschluss des ausstehenden IRP.
Wenn eine abgebrochene Verbindung ausgeführt wird, bricht das WSK-Subsystem alle laufenden und ausstehenden Übertragungsvorgänge ab und wartet nicht, bis der Socket getrennt wird. Nach einer abgebrochenen Verbindung kann die WSK-Anwendung keine zusätzlichen Daten an die Remotetransportadresse senden oder weitere Daten von der Remotetransportadresse empfangen.
Eine WSK-Anwendung kann die Verbindung vollständig schließen, indem die WskCloseSocket--Funktion aufgerufen wird.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Verfügbar in Windows Vista und höheren Versionen der Windows-Betriebssysteme. |
Zielplattform- | Universal |
Header- | wsk.h (include Wsk.h) |
IRQL- | <= DISPATCH_LEVEL |