WdfUsbTargetDeviceQueryUsbCapability, fonction (wdfusb.h)

[S’applique à KMDF et UMDF]

La méthode WdfUsbTargetDeviceQueryUsbCapability détermine si le contrôleur hôte et la pile de pilotes USB prennent en charge une fonctionnalité spécifique.

Syntaxe

NTSTATUS WdfUsbTargetDeviceQueryUsbCapability(
  [in]            WDFUSBDEVICE UsbDevice,
  [in]            const GUID   *CapabilityType,
  [in]            ULONG        CapabilityBufferLength,
  [out, optional] PVOID        CapabilityBuffer,
  [out, optional] PULONG       ResultLength
);

Paramètres

[in] UsbDevice

Handle vers un objet périphérique USB.

[in] CapabilityType

Pointeur vers un GUID qui représente la fonctionnalité sur laquelle le pilote client souhaite récupérer des informations. Les valeurs PGUID possibles sont les suivantes :

  • GUID_USB_CAPABILITY_CHAINED_MDLS
  • GUID_USB_CAPABILITY_STATIC_STREAMS
  • GUID_USB_CAPABILITY_SELECTIVE_SUSPEND
  • GUID_USB_CAPABILITY_FUNCTION_SUSPEND
  • GUID_USB_CAPABILITY_DEVICE_CONNECTION_HIGH_SPEED_COMPATIBLE
  • GUID_USB_CAPABILITY_DEVICE_CONNECTION_SUPER_SPEED_COMPATIBLE
Pour plus d’informations, consultez Remarques.

[in] CapabilityBufferLength

Longueur, en octets, de la mémoire tampon pointée par CapabilityBuffer.

[out, optional] CapabilityBuffer

Pointeur vers une mémoire tampon allouée à l’appelant pour recevoir la fonctionnalité USB demandée. Ce paramètre est facultatif. Si CapabilityBufferLength est égal à zéro, ce paramètre doit être NULL. De même, si CapabilityBufferLength est différent de zéro, ce paramètre doit être fourni. Ce paramètre correspond au paramètre OutputBuffer de la routine USBD_QueryUsbCapability .

[out, optional] ResultLength

Pointeur vers un emplacement contenant la taille, en octets, de la fonctionnalité retournée. Ce paramètre est facultatif.

Valeur renvoyée

WdfUsbTargetDeviceQueryUsbCapability retourne STATUS_SUCCESS si l’opération réussit. Sinon, cette méthode peut retourner l’une des valeurs suivantes :

Code de retour Description
STATUS_INVALID_DEVICE_STATE
Le handle d’objet de périphérique USB n’est pas valide.
STATUS_INSUFFICIENT_RESOURCES
La mémoire disponible était insuffisante.
STATUS_INVALID_PARAMETER
L’appelant a passé une valeur de paramètre non valide.
  • UsbDevice ou CapabilityType a la valeur NULL.
  • CapabilityBuffer a la valeur NULL, mais CapabilityBufferLength contient une valeur différente de zéro. À l’inverse, l’appelant a fourni un CapabilityBuffer , mais CapabilityBufferLength est égal à zéro.
STATUS_NOT_IMPLEMENTED
La fonctionnalité spécifiée n’est pas prise en charge par la pile de pilotes USB sous-jacente.
STATUS_NOT_SUPPORTED
La fonctionnalité spécifiée n’est pas prise en charge par le matériel du contrôleur hôte.
 

Cette méthode peut également retourner d’autres valeurs NTSTATUS.

Remarques

Avant d’appeler WdfUsbTargetDeviceQueryUsbCapability, le pilote doit appeler WdfUsbTargetDeviceCreateWithParameters pour s’inscrire auprès de la pile de pilotes USB sous-jacente.

WdfUsbTargetDeviceQueryUsbCapability doit être appelé après l’appel de la fonction de rappel EvtDevicePrepareHardware du pilote.

Le tableau suivant décrit les fonctionnalités spécifiques à USB qu’un pilote client USB basé sur KMDF peut interroger via un appel WdfUsbTargetDeviceQueryUsbCapability .

GUID de fonctionnalité Description
GUID_USB_CAPABILITY_CHAINED_MDLS La nouvelle pile de pilotes USB dans Windows 8 est capable d’accepter une MDL chaînée (voir MDL) à partir d’un pilote client USB basé sur KMDF.

Pour plus d’informations sur la fonctionnalité mdL chaînée dans la pile de pilotes USB, consultez Guide pratique pour envoyer des DLL chaînées.

Ce GUID s’applique uniquement aux pilotes KMDF.

GUID_USB_CAPABILITY_STATIC_STREAMS Alors que USB 2.0 et versions antérieures prennent en charge l’envoi d’un seul flux de données via un point de terminaison en bloc, USB 3.0 permet d’envoyer et de recevoir plusieurs flux de données via un point de terminaison en bloc.

Pour plus d’informations sur l’ouverture de flux, consultez Comment ouvrir et fermer des flux statiques dans un point de terminaison en bloc USB.

Ce GUID s’applique uniquement aux pilotes KMDF.

GUID_USB_CAPABILITY_FUNCTION_SUSPEND La spécification USB (Universal Serial Bus) 3.0 définit une nouvelle fonctionnalité appelée suspension de fonction. La fonctionnalité permet à une fonction individuelle d’un appareil composite d’entrer dans un état de faible consommation d’énergie, indépendamment des autres fonctions.

Pour plus d’informations sur la suspension de fonction, consultez How to Implement Function Suspend in a Composite Driver.

Ce GUID s’applique uniquement aux pilotes KMDF.

GUID_USB_CAPABILITY_SELECTIVE_SUSPEND Pour plus d’informations sur la suspension sélective, consultez Suspension sélective USB.

Ce GUID s’applique uniquement aux pilotes KMDF.

GUID_USB_CAPABILITY_DEVICE_CONNECTION_HIGH_SPEED_COMPATIBLE Détermine si le bus fonctionne à grande vitesse ou à une vitesse supérieure.

Ce GUID s’applique aux pilotes KMDF et UMDF.

GUID_USB_CAPABILITY_DEVICE_CONNECTION_SUPER_SPEED_COMPATIBLE Détermine si le bus fonctionne à SuperSpeed ou à une vitesse supérieure.

Ce GUID s’applique aux pilotes KMDF et UMDF.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista
Plateforme cible Universal
Version KMDF minimale 1.11
Version UMDF minimale 2.0
En-tête wdfusb.h (inclure Wdfusb.h)
Bibliothèque Wdf01000.sys (KMDF) ; WUDFx02000.dll (UMDF)
IRQL PASSIVE_LEVEL
Règles de conformité DDI DriverCreate(kmdf)

Voir aussi

USBD_QueryUsbCapability

WdfUsbTargetDeviceRetrieveInformation