Partager via


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
STATUS_SUCCESS
Le socket a été correctement déconnecté de l’adresse de transport distante. L’IRP sera terminé avec l’état de réussite.
STATUS_PENDING
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.
STATUS_FILE_FORCED_CLOSED
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.
Autres codes d’état
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

Voir aussi

WSK_BUF

WSK_PROVIDER_CONNECTION_DISPATCH

WSK_PROVIDER_STREAM_DISPATCH

WSK_SOCKET

WskCloseSocket

WskConnect

WskDisconnectEvent

WskSocketConnect