Freigeben über


PFN_WSK_CLOSE_SOCKET Rückruffunktion (wsk.h)

Die WskCloseSocket- Funktion schließt einen Socket und gibt alle zugehörigen Ressourcen frei.

Syntax

PFN_WSK_CLOSE_SOCKET PfnWskCloseSocket;

NTSTATUS PfnWskCloseSocket(
  [in]      PWSK_SOCKET Socket,
  [in, out] PIRP Irp
)
{...}

Parameter

[in] Socket

Ein Zeiger auf eine WSK_SOCKET-Struktur, die das Socketobjekt für den zu schließenden Socket angibt.

[in, out] Irp

Ein Zeiger auf ein vom Aufrufer zugewiesenes IRP, das vom WSK-Subsystem verwendet wird, um den Abschlussvorgang asynchron abzuschließen. Weitere Informationen zur Verwendung von IRPs mit WSK-Funktionen finden Sie unter Verwenden von IRPs mit Winsock Kernel Functions.

Rückgabewert

WskCloseSocket gibt einen der folgenden NTSTATUS-Codes zurück:

Rückgabecode Beschreibung
STATUS_SUCCESS
Der Socket wurde erfolgreich geschlossen. Das IRP wird mit dem Erfolgsstatus abgeschlossen.
STATUS_PENDING
Das WSK-Subsystem konnte den Socket nicht sofort schließen. Das WSK-Subsystem schließt das IRP ab, nachdem er den Socket geschlossen hat. Der Status des Schließensvorgangs wird im feld IoStatus.Status des IRP zurückgegeben.
Andere Statuscodes
Fehler. Das IRP wird mit dem Fehlerstatus abgeschlossen.

Bemerkungen

Bevor Sie die WskCloseSocket--Funktion aufrufen, muss eine WSK-Anwendung sicherstellen, dass in einem der anderen Threads der Anwendung keine anderen Funktionsaufrufe ausgeführt werden, einschließlich aller Erweiterungsfunktionen. Beispielsweise darf eine WSK-Anwendung nicht WskCloseSocket- in einem Socket in einem Thread aufrufen, während die Anwendung WskSend- für denselben Socket in einem anderen Thread aufruft. Alle laufenden Aufrufe der Socketfunktionen müssen die Steuerung zurück an die WSK-Anwendung zurückgeben, bevor sie WskCloseSocket- aufruft, um den Socket zu schließen. Eine WSK-Anwendung kann jedoch WskCloseSocket- aufrufen, wenn ausstehende IRPs aus früheren Aufrufen der Socketfunktionen vorhanden sind, die noch nicht abgeschlossen wurden.

Das Aufrufen der WskCloseSocket--Funktion bewirkt, dass das WSK-Subsystem alle ausstehenden IRPs von vorherigen Aufrufen der Socketfunktionen abbricht und abschließt. Das WSK-Subsystem stellt außerdem sicher, dass alle laufenden Ereignisrückruffunktionen die Steuerung zurück an das WSK-Subsystem zurückgegeben haben, bevor der Socket geschlossen wird.

Nachdem eine WSK-Anwendung WskCloseSocket-aufgerufen hat, sollte sie keine weiteren Aufrufe an die Funktionen des Sockets vornehmen.

Wenn eine WSK-Anwendung einen Sicherheitsdeskriptor auf einen Socket anwendet, wird die zwischengespeicherte Kopie der Sicherheitsbeschreibung, die im Aufruf von WskSocket, WskSocketConnectoder WskControlSocket- nicht freigegeben wird, wenn der Socket geschlossen wird. Eine WSK-Anwendung muss die zwischengespeicherte Kopie der Sicherheitsbeschreibung freigeben, indem Sie den WSK_RELEASE_SD Clientsteuerungsvorgang verwenden, wenn der Sicherheitsdeskriptor nicht mehr benötigt wird.

Das WSK-Subsystem verteilt den Speicher für das Socketobjekt WSK_SOCKETdes Sockets, das beim Erstellen des Sockets vom WSK-Subsystem zugewiesen wurde.

Für verbindungsorientierte Sockets führt die WskCloseSocket- Funktion immer eine abbruchende Verbindung des Sockets aus, es sei denn, der Socket ist in beiden Richtungen bereits vollständig getrennt. Um einen verbindungsorientierten Socket ordnungsgemäß von einer Remotetransportadresse zu trennen, sollte eine WSK-Anwendung die WskDisconnect-Funktion aufrufen.

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

Siehe auch

WSK_PROVIDER_BASIC_DISPATCH

WSK_PROVIDER_CONNECTION_DISPATCH WSK_PROVIDER_DATAGRAM_DISPATCH

WSK_PROVIDER_LISTEN_DISPATCH

WSK_SOCKET

WskControlSocket-

WskDisconnect-

WskSocket-

WskSocketConnect-