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 de 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

Recevez la notification d’une modification apportée à la liste des transports réseau disponibles.

WSK_CACHE_SD

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

WSK_RELEASE_SD

Libérer 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 des transports TDI .

WSK_TDI_BEHAVIOR

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

[in] InputSize

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

[in, optional] InputBuffer

Mémoire tampon allouée à 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 vers laquelle pointe le paramètre OutputBuffer .

[out, optional] OutputBuffer

Mémoire tampon allouée à 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 de type ULONG qui reçoit le nombre d’octets de données retournés dans la mémoire tampon vers laquelle pointe le paramètre OutputBuffer . Une application WSK doit définir ce pointeur sur NULL , sauf lorsque tous les éléments suivants sont true :

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

[in, out] Irp

Pointeur vers un IRP alloué à 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 des irps avec des fonctions WSK, consultez Utilisation des irps avec les fonctions du noyau Winsock.

Ce paramètre est obligatoire, est facultatif ou doit avoir la valeur NULL, en fonction de l’opération de contrôle client 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 retournée

WskControlClient retourne l’un des codes NTSTATUS suivants :

Code de retour 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 succès status.
STATUS_PENDING Le sous-système WSK n’a pas pu terminer l’opération de contrôle immédiatement. Le sous-système WSK termine l’IRP une fois l’opération de contrôle terminée. Le status de l’opération de contrôle sera retourné dans le champ IoStatus.Status de l’IRP.
STATUS_BUFFER_OVERFLOW La mémoire tampon de sortie n’est pas assez grande pour contenir les données retournées. La variable vers laquelle pointe le paramètre OutputSizeReturned contient la taille de mémoire tampon requise.
Autres codes status Une erreur est survenue. L’IRP sera terminé avec l’échec status.

Remarques

Pour plus d’informations sur l’utilisation des 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 libérer la mémoire avec la fonction ExFreeXxx correspondante qu’une fois l’IRP terminée. 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 tant qu’une fois l’IRP terminée.

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

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible dans Windows Vista et les versions ultérieures des systèmes d’exploitation Windows.
Plateforme cible Universal
En-tête wsk.h (inclure 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