Partager via


PFN_WSK_CONTROL_CLIENT fonction de rappel (wsk.h)

La fonction WskControlClient effectue des opérations de contrôle sur un objet client WSK.

Syntaxe

PFN_WSK_CONTROL_CLIENT PfnWskControlClient;

NTSTATUS PfnWskControlClient(
  [in]            PWSK_CLIENT Client,
  [in]            ULONG ControlCode,
  [in]            SIZE_T InputSize,
  [in, optional]  PVOID InputBuffer,
  [in]            SIZE_T OutputSize,
  [out, optional] PVOID OutputBuffer,
  [out, optional] SIZE_T *OutputSizeReturned,
  [in, out]       PIRP Irp
)
{...}

Paramètres

[in] Client

Pointeur vers une structure WSK_CLIENT qui a été retournée via le paramètre WskProviderNpi de la fonction WskCaptureProviderNPI.

[in] ControlCode

Opération de contrôle en cours d’exécution. Une application WSK peut spécifier l’un des codes de contrôle suivants :

WSK_TRANSPORT_LIST_QUERY

Récupérez la liste des transports réseau disponibles.

WSK_TRANSPORT_LIST_CHANGE

Recevoir une notification d’une modification de la liste des transports réseau disponibles.

WSK_CACHE_SD

Obtenez une copie mise en cache d’un descripteur de sécurité.

WSK_RELEASE_SD

Relâchez une copie mise en cache d’un descripteur de sécurité.

WSK_SET_STATIC_EVENT_CALLBACKS

Activez automatiquement les fonctions de rappel d’événements spécifiées sur tous les sockets.

WSK_TDI_DEVICENAME_MAPPING

Mapper des combinaisons de famille d’adresses, de type de socket et de protocole aux noms d’appareils de transport TDI.

WSK_TDI_BEHAVIOR

Déterminez si le sous-système WSK redirige les E/S réseau vers transports TDI.

[in] InputSize

Nombre d’octets de données dans la mémoire tampon pointant vers le paramètre InputBuffer.

[in, optional] InputBuffer

Mémoire tampon allouée par l’appelant qui fournit toutes les données d’entrée requises pour effectuer l’opération de contrôle spécifiée. Si aucune donnée d’entrée n’est requise pour l’opération de contrôle spécifiée, l’application WSK doit définir ce paramètre sur NULL et définir le paramètre InputSize sur zéro.

[in] OutputSize

Taille, en octets, de la mémoire tampon pointée par le paramètre OutputBuffer.

[out, optional] OutputBuffer

Mémoire tampon allouée par l’appelant qui reçoit toutes les données de sortie retournées par l’opération de contrôle spécifiée. Si aucune donnée de sortie n’est retournée par l’opération de contrôle spécifiée, l’application WSK doit définir ce paramètre sur NULL et définir le paramètre OutputSize sur zéro.

[out, optional] OutputSizeReturned

Pointeur vers une variable typée ULONG qui reçoit le nombre d’octets de données retournés dans la mémoire tampon pointée par le paramètre OutputBuffer. Une application WSK doit définir ce pointeur sur NULL, sauf si toutes les valeurs suivantes sont vraies :

  • Le paramètre Irp est NULL.
  • L’opération en cours d’exécution retourne des données de sortie dans la mémoire tampon pointée par le paramètre OutputBuffer.
  • Le nombre d’octets des données de sortie retournées par l’opération en cours d’exécution est inconnu.

[in, out] Irp

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

Ce paramètre est obligatoire, est facultatif ou doit être NULL, en fonction de l’opération de contrôle client particulière en cours d’exécution. Pour plus d’informations sur la configuration requise pour ce paramètre pour chacune des opérations de contrôle client prises en charge, consultez opérations de contrôle client WSK.

Valeur de retour

WskControlClient retourne l’un des codes NTSTATUS suivants :

Retourner le code Description
STATUS_SUCCESS L’opération de contrôle s’est terminée avec succès. Si l’application WSK a spécifié un pointeur vers un IRP dans le paramètre Irp, l’IRP est terminé avec l’état de réussite.
STATUS_PENDING Le sous-système WSK n’a pas pu terminer immédiatement l’opération de contrôle. Le sous-système WSK termine l’IRP une fois l’opération de contrôle terminée. L’état de l’opération de contrôle est retourné dans le champ IoStatus.Status de l’IRP.
STATUS_BUFFER_OVERFLOW La mémoire tampon de sortie n’est pas suffisamment grande pour contenir les données retournées. La variable pointée par le paramètre OutputSizeReturned contient la taille de mémoire tampon requise.
Autres codes d’état Une erreur s’est produite. L’IRP est terminé avec l’état d’échec.

Remarques

Pour plus d’informations sur l’utilisation des mémoires tampons d’entrée et de sortie pour chaque opération de contrôle client, consultez opérations de contrôle client WSK.

Si la fonction WskControlClient retourne STATUS_PENDING, toutes les mémoires tampons pointées par le paramètre InputBuffer ou le paramètre OutputBuffer doivent rester valides jusqu’à ce que l’IRP soit terminé. Si l’application WSK a alloué les mémoires tampons 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é les mémoires tampons sur la pile, elle ne peut pas retourner à partir de la fonction qui appelle la fonction WskControlClient jusqu’à la fin de l’IRP.

Remarque TDI ne sera pas pris en charge dans les versions de Microsoft Windows après Windows Vista. Utilisez plateforme de filtrage Windows ou de noyau Winsock à la place.
 

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

opérations de contrôle client WSK

WSK_CLIENT

WSK_PROVIDER_DISPATCH

WSK_PROVIDER_NPI

WSK_TRANSPORT

WskCaptureProviderNPI