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 |
---|---|
|
Der Socket wurde erfolgreich geschlossen. Das IRP wird mit dem Erfolgsstatus abgeschlossen. |
|
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. |
|
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 |