PFN_WSK_CONNECT_EX fonction de rappel (wsk.h)

La fonction WskConnectEx connecte un socket orienté connexion ou de flux à une adresse de transport distante.

WskConnectEx est similaire à WskConnect , sauf qu’il peut également envoyer éventuellement une mémoire tampon de données pendant ou après la synchronisation de connexion.

Syntaxe

PFN_WSK_CONNECT_EX PfnWskConnectEx;

NTSTATUS PfnWskConnectEx(
  [in]           PWSK_SOCKET Socket,
  [in]           PSOCKADDR RemoteAddress,
  [in, optional] PWSK_BUF Buffer,
                 ULONG Flags,
  [in, out]      PIRP Irp
)
{...}

Paramètres

[in] Socket

Pointeur vers une structure de WSK_SOCKET qui spécifie l’objet socket pour le socket connecté à une adresse de transport distante.

[in] RemoteAddress

Pointeur vers une structure qui spécifie l’adresse de transport distante à laquelle connecter le socket. Ce pointeur doit être un pointeur vers le type de structure SOCKADDR spécifique qui correspond à la famille d’adresses spécifiée par l’application WSK lors de la création du socket.

[in, optional] Buffer

Pointeur vers une structure de WSK_BUF , qui contient les données à envoyer pendant ou après la synchronisation de la connexion. La taille maximale autorisée en octets est de 65 535.

Flags

Ce paramètre est réservé à l’utilisation du système. Une application WSK doit définir ce paramètre sur zéro.

[in, out] Irp

Pointeur vers un IRP alloué à l’appelant que le sous-système WSK utilise pour terminer l’opération de connexion de manière asynchrone. Pour plus d’informations sur l’utilisation des irps avec des fonctions WSK, consultez Utilisation des irps avec les fonctions du noyau Winsock.

Valeur retournée

WskConnectEx retourne l’un des codes NTSTATUS suivants :

Code de retour Description
STATUS_SUCCESS
Le socket a été correctement connecté à l’adresse de transport distante. Le IRP sera terminé avec succès status.
STATUS_PENDING
Le sous-système WSK n’a pas pu connecter le socket immédiatement. Le sous-système WSK termine l’IRP une fois qu’il a connecté le socket à l’adresse de transport distante. Le status de l’opération de connexion sera retourné dans le champ IoStatus.Status de l’IRP.
STATUS_FILE_FORCED_CLOSED
Le socket n’est plus fonctionnel. L’IRP sera terminé avec l’échec status. L’application WSK doit appeler la fonction WskCloseSocket pour fermer le socket dès que possible.
STATUS_INVALID_PARAMETER
L’application WSK a tenté de passer un indicateur au paramètre Flags (étant donné qu’aucun indicateur valide n’est actuellement défini pour WskConnectEx, cela n’est pas autorisé).
STATUS_BUFFER_OVERFLOW
L’application WSK a tenté de passer une mémoire tampon supérieure à 65 535 octets au paramètre Buffer .
Autres codes status
Une erreur est survenue. L’IRP sera terminé avec l’échec status.

Remarques

Une application WSK peut créer, lier et connecter un socket orienté connexion dans un seul appel de fonction en appelant la fonction WskSocketConnect plutôt que d’appeler la fonction WskSocket , la fonction WskBind , puis la fonction WskConnectEx . Nous vous recommandons d’appeler la fonction WskSocketConnect , sauf si l’application WSK doit définir une option de socket ou émettre une opération de contrôle d’E/S avant de lier ou de connecter le socket.

Une application WSK peut appeler la fonction WskConnectEx uniquement sur un socket orienté connexion ou de flux que l’application a précédemment lié à une adresse de transport locale en appelant la fonction WskBind .

Pour les sockets de flux, une fois que WskConnectEx est appelé avec succès sur un socket de flux, le socket est engagé dans un flux orienté connexion et peut ne plus appeler les fonctions de socket d’écoute.

Si le paramètre Buffer est utilisé, l’appelant peut libérer le MDL dans sa structure WSK_BUF dès que la demande de connexion est terminée.

Avant d’appeler WskConnectEx avec une mémoire tampon d’envoi fournie, si l’application WSK définit l’option TCP_FASTOPEN sur un socket WSK via la fonction WskControlSocket , le système envoie éventuellement tout ou partie des données dans un paquet SYN. Pour plus d’informations, consultez l’option TCP Fastopen dans IPPROTO_TCP Socket Options.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10 version 1703
Plateforme cible Universal
En-tête wsk.h (inclure Wsk.h)
IRQL <= DISPATCH_LEVEL

Voir aussi

SOCKADDR

WSK_PROVIDER_CONNECTION_DISPATCH WSK_PROVIDER_STREAM_DISPATCH

WSK_SOCKET

WskBind

WskCloseSocket

WskControlSocket

WskDisconnect

WskDisconnectEvent

WskSocket

WskSocketConnect