Partager via


PFN_WSK_GET_REMOTE_ADDRESS fonction de rappel (wsk.h)

La fonction WskGetRemoteAddress récupère l’adresse de transport distante d’un socket orienté connexion ou de flux.

Syntaxe

PFN_WSK_GET_REMOTE_ADDRESS PfnWskGetRemoteAddress;

NTSTATUS PfnWskGetRemoteAddress(
  [in]      PWSK_SOCKET Socket,
  [out]     PSOCKADDR RemoteAddress,
  [in, out] PIRP Irp
)
{...}

Paramètres

[in] Socket

Pointeur vers une structure WSK_SOCKET qui spécifie l’objet socket pour le socket interrogé.

[out] RemoteAddress

Pointeur vers une mémoire tampon allouée par l’appelant qui reçoit l’adresse de transport distante pour le socket. La mémoire tampon doit se trouver en mémoire non paginée. La mémoire tampon doit également être suffisamment grande pour contenir le type de structure SOCKADDR spécifique qui correspond à la famille d’adresses spécifiée par l’application WSK spécifiée lors de la création du socket.

Pour un socket orienté connexion accepté par l’application WSK sur un socket d’écoute, la famille d’adresses est la même que la famille d’adresses spécifiée par l’application WSK lors de la création du socket d’écoute.

[in, out] Irp

Pointeur vers un IRP alloué par l’appelant que le sous-système WSK utilise pour terminer l’opération de récupération 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

WskGetRemoteAddress retourne l’un des codes NTSTATUS suivants :

Retourner le code Description
STATUS_SUCCESS
L’adresse de transport distante du socket a été récupérée avec succès. L’IRP sera terminé avec l’état de réussite.
STATUS_PENDING
Le sous-système WSK n’a pas pu récupérer immédiatement l’adresse de transport distante du socket. Le sous-système WSK termine l’IRP une fois qu’il a récupéré l’adresse de transport distante pour le socket. L’état de l’opération de récupération est retourné dans le champ IoStatus.Status de l’IRP.
STATUS_INVALID_DEVICE_STATE
Le socket n’est pas connecté à une adresse de transport distante. L’IRP est terminé avec l’état d’échec.
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 WskGetRemoteAddress uniquement sur un socket orienté connexion ou de flux connecté à une adresse de transport distante. Un socket de flux est connecté à une adresse de transport distante en appelant la fonction WskConnect. Un socket orienté connexion est connecté à une adresse de transport distante de l’une des manières suivantes :

  • L’application WSK appelle la fonction WskConnect.
  • L’application WSK crée, lie et connecte le socket en appelant la fonction WskSocketConnect.
  • Le sous-système WSK connecte le socket lorsque l’application WSK accepte une demande de connexion entrante sur un socket d’écoute.
Si la fonction WskGetRemoteAddress retourne STATUS_PENDING, la mémoire tampon pointée par le paramètre RemoteAddress doit rester valide tant que l’IRP n’est pas terminé. Si l’application WSK a alloué la mémoire tampon avec l’une des fonctions ExAllocateXxx, elle ne peut pas libérer la mémoire avec la fonction ExFreeXxx correspondante jusqu’à la fin de l’IRP. Si l’application WSK a alloué la mémoire tampon sur la pile, elle ne peut pas retourner à partir de la fonction qui appelle la fonction WskGetRemoteAddress jusqu’à la fin de l’IRP.

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

SOCKADDR

WSK_PROVIDER_CONNECTION_DISPATCH

WSK_PROVIDER_STREAM_DISPATCH

WSK_SOCKET

WskAccept

WskAcceptEvent

WskBind

WskCloseSocket

WskConnect

WskGetLocalAddress

WskSocketConnect