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.
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
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour