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