PFN_WSK_DISCONNECT fonction de rappel (wsk.h)
La fonction WskDisconnect déconnecte un socket orienté connexion ou de flux à partir d’une adresse de transport distante.
Syntaxe
PFN_WSK_DISCONNECT PfnWskDisconnect;
NTSTATUS PfnWskDisconnect(
[in] PWSK_SOCKET Socket,
[in, optional] PWSK_BUF Buffer,
[in] ULONG Flags,
[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 déconnexion.
[in, optional] Buffer
Pointeur vers une structure WSK_BUF. Cette structure décrit une mémoire tampon de données qui contient des données à transmettre par le sous-système WSK à l’adresse de transport distante avant la déconnexion du socket. S’il n’y a pas de telles données à transmettre, l’application WSK définit ce pointeur sur null. Si WSK_FLAG_ABORTIVE est spécifié dans le paramètre Indicateurs de, le paramètre Tampon doit être NULL.
[in] Flags
Valeur ULONG qui contient l’indicateur suivant ou zéro :
WSK_FLAG_ABORTIVE
Dirige le sous-système WSK pour effectuer une déconnexion abandonnée du socket. Si une application WSK ne spécifie pas cet indicateur, le sous-système WSK effectue une déconnexion normale du socket.
[in, out] Irp
Pointeur vers un IRP alloué par l’appelant que le sous-système WSK utilise pour terminer l’opération de déconnexion 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
WskDisconnect retourne l’un des codes NTSTATUS suivants :
Retourner le code | Description |
---|---|
|
Le socket a été correctement déconnecté de l’adresse de transport distante. L’IRP sera terminé avec l’état de réussite. |
|
Le sous-système WSK n’a pas pu déconnecter le socket immédiatement. Le sous-système WSK termine l’IRP une fois qu’il a déconnecté le socket de l’adresse de transport distante. L’état de l’opération de déconnexion est retourné dans le champ IoStatus.Status de l’IRP. |
|
Le socket n’est plus fonctionnel. L’IRP est terminé avec l’état d’échec. L’application WSK doit appeler la fonction WskCloseSocket pour fermer le socket dès que possible. |
|
Une erreur s’est produite. L’IRP est terminé avec l’état d’échec. |
Remarques
Une application WSK peut appeler la fonction WskDisconnect uniquement sur un socket orienté connexion ou de flux qu’elle a précédemment connectée à une adresse de transport distante ou sur un socket accepté sur un socket d’écoute.
WskDisconnect amène le sous-système WSK à notifier l’adresse de transport distante, par le biais de tout moyen approprié pour le transport sous-jacent, que la connexion est déconnectée. Si le paramètre de mémoire tampon n’est pasNULL, le sous-système WSK transmet les données de la mémoire tampon à l’adresse de transport distante avant de déconnecter le socket.
Si une déconnexion normale est effectuée, le sous-système WSK attend que toutes les données de transmission en attente aient été envoyées avant de déconnecter le socket. Une fois le socket déconnecté, l’application WSK ne peut pas envoyer de données supplémentaires à l’adresse de transport distante. Toutefois, l’application WSK peut toujours recevoir des données supplémentaires de l’adresse de transport distante jusqu’à ce que l’application distante déconnecte sa fin du socket.
Notez que tous les transports ne prennent pas en charge les connexions semi-ouvertes. Si un transport ne prend pas en charge les connexions semi-ouvertes, l’application WSK ne reçoit pas de données supplémentaires de l’adresse de transport distante après l’exécution d’une déconnexion normale.
Avec une déconnexion normale, l’IRP est terminé uniquement lorsque l’opération de déconnexion est entièrement terminée par le protocole de transport. Pour certains protocoles de transport, l’IRP peut ne pas se terminer en cas de problème de transmission de données à l’adresse de transport distante. Dans ce cas, l’application WSK peut récupérer en appelant à nouveau la fonction WskDisconnect et en spécifiant à nouveau l’indicateur de WSK_FLAG_ABORTIVE ou en appelant la fonction WskCloseSocket. Dans les deux cas, le sous-système WSK déconnecte de façon abandonnée le socket et force l’achèvement de l’IRP en attente.
Si une déconnexion abortive est effectuée, le sous-système WSK annule toutes les opérations de transmission en cours et en attente et n’attend pas de déconnecter le socket. Après une déconnexion abandonnée, l’application WSK ne peut pas envoyer de données supplémentaires à l’adresse de transport distante ou recevoir des données supplémentaires de l’adresse de transport distante.
Une application WSK peut fermer complètement la connexion en appelant la fonction WskCloseSocket.
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 |