Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La fonction WskCloseSocket ferme un socket et libère toutes les ressources associées.
Syntaxe
PFN_WSK_CLOSE_SOCKET PfnWskCloseSocket;
NTSTATUS PfnWskCloseSocket(
[in] PWSK_SOCKET Socket,
[in, out] PIRP Irp
)
{...}
Paramètres
[in] Socket
Pointeur vers une structure WSK_SOCKET qui spécifie l’objet socket pour le socket en cours de fermeture.
[in, out] Irp
Pointeur vers un IRP alloué par l’appelant que le sous-système WSK utilise pour terminer l’opération de fermeture de manière asynchrone. Pour plus d’informations sur l’utilisation d’IRPs avec des fonctions WSK, consultez Utilisation d’IRPs avec winsock Kernel Functions.
Valeur de retour
WskCloseSocket retourne l’un des codes NTSTATUS suivants :
Retourner le code | Description |
---|---|
|
Le socket a été correctement fermé. L’IRP sera terminé avec l’état de réussite. |
|
Le sous-système WSK n’a pas pu fermer le socket immédiatement. Le sous-système WSK termine l’IRP une fois qu’il a fermé le socket. L’état de l’opération de fermeture est retourné dans le champ IoStatus.Status du protocole IRP. |
|
Une erreur s’est produite. L’IRP est terminé avec l’état d’échec. |
Remarques
Avant d’appeler la fonction WskCloseSocket, une application WSK doit s’assurer qu’il n’existe aucun autre appel de fonction en cours à l’une des fonctions du socket, y compris les fonctions d’extension, dans les autres threads de l’application. Par exemple, une application WSK ne doit pas appeler WskCloseSocket sur un socket dans un thread pendant que l’application appelle WskSend sur le même socket dans un autre thread. Les appels en cours aux fonctions du socket doivent retourner le contrôle à l’application WSK avant d’appeler WskCloseSocket pour fermer le socket. Toutefois, une application WSK peut appeler WskCloseSocket s’il existe des IRP en attente à partir des appels antérieurs aux fonctions du socket qui n’ont pas encore été terminées.
L’appel de la fonction WskCloseSocket entraîne l’annulation et l’exécution de tous les IRPs en attente à partir des appels antérieurs aux fonctions du socket. Le sous-système WSK garantit également que toutes les fonctions de rappel d’événement en cours ont retourné le contrôle au sous-système WSK avant de fermer le socket.
Une fois qu’une application WSK a appelé WskCloseSocket, elle ne doit pas effectuer d’appels supplémentaires à l’une des fonctions du socket.
Si une application WSK applique un descripteur de sécurité à un socket, la copie mise en cache du descripteur de sécurité spécifiée dans l’appel à WskSocket, WskSocketConnect, ou WskControlSocket n’est pas libéré lorsque le socket est fermé. Une application WSK doit libérer la copie mise en cache du descripteur de sécurité à l’aide de l’opération de contrôle client WSK_RELEASE_SD lorsque le descripteur de sécurité n’est plus nécessaire.
Le sous-système WSK libère la mémoire de l’objet socket du socket, WSK_SOCKET, qui a été alloué par le sous-système WSK lors de la création du socket.
Pour les sockets orientés connexion, la fonction WskCloseSocket effectue toujours une déconnexion abortive du socket, sauf si le socket est déjà entièrement déconnecté dans les deux sens. Pour déconnecter correctement un socket orienté connexion d’une adresse de transport distante, une application WSK doit appeler la fonction WskDisconnect.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Disponible dans Windows Vista et versions ultérieures des systèmes d’exploitation Windows. |
plateforme cible | Universel |
d’en-tête | wsk.h (include Wsk.h) |
IRQL | <= DISPATCH_LEVEL |