EVT_UDECX_WDF_DEVICE_QUERY_USB_CAPABILITY fonction de rappel (udecxwdfdevice.h)

Implémentation du pilote client UDE pour déterminer les fonctionnalités prises en charge par le contrôleur hôte USB émulé.

Syntaxe

EVT_UDECX_WDF_DEVICE_QUERY_USB_CAPABILITY EvtUdecxWdfDeviceQueryUsbCapability;

NTSTATUS EvtUdecxWdfDeviceQueryUsbCapability(
  [in]            WDFDEVICE UdecxWdfDevice,
  [in]            PGUID CapabilityType,
  [in]            ULONG OutputBufferLength,
  [out, optional] PVOID OutputBuffer,
  [out]           PULONG ResultLength
)
{...}

Paramètres

[in] UdecxWdfDevice

Handle pour un objet d’appareil framework qui représente le contrôleur. Le pilote client a initialisé cet objet dans l’appel précédent à UdecxWdfDeviceAddUsbDeviceEmulation.

[in] CapabilityType

Pointeur vers un GUID spécifiant la fonctionnalité demandée. Les valeurs PGUID possibles sont les suivantes :

  • GUID_USB_CAPABILITY_CHAINED_MDLS
  • 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 sur les fonctionnalités, consultez la section Remarques de USBD_QueryUsbCapability.

[in] OutputBufferLength

Longueur, en octets, de la mémoire tampon de sortie de la requête, si une mémoire tampon de sortie est disponible.

[out, optional] OutputBuffer

Pointeur vers un emplacement qui reçoit l’adresse de la mémoire tampon. Certaines fonctionnalités peuvent avoir besoin de fournir des informations supplémentaires à l’extension de classe d’émulation de périphérique USB (UdeCx) dans cette mémoire tampon.

[out] ResultLength

Emplacement qui, au retour, contient la taille, en octets, des informations stockées par la fonction de rappel dans OutputBuffer.

Valeur retournée

Si l’opération réussit, la fonction de rappel doit retourner STATUS_SUCCESS, ou une autre valeur status pour laquelle NT_SUCCESS(status) est égal à TRUE. Si une fonctionnalité n’est pas prise en charge, le pilote client peut retourner NT_SUCCESS(status) est false, par exemple STATUS_UNSUCCESSFUL.

Remarques

L’extension de classe appelle cette fonction de rappel implémentée par le pilote client lorsque l’extension de classe reçoit une demande pour déterminer les fonctionnalités du contrôleur émulé. Le rappel est appelé uniquement après le retour d’EvtDriverDeviceAdd , généralement dans EvtDevicePrepareHardware. Ce rappel ne peut pas être appelé après le retour d’EvtDeviceReleaseHardware .

L’extension de classe signale ces GUID de fonctionnalité, comme non pris en charge :

  • GUID_USB_CAPABILITY_STATIC_STREAMS
  • GUID_USB_CAPABILITY_CLEAR_TT_BUFFER_ON_ASYNC_TRANSFER_CANCEL
L’extension de classe signale le GUID de la fonctionnalité GUID_USB_CAPABILITY_SELECTIVE_SUSPEND comme pris en charge sans même appeler la fonction de rappel.

Pour les autres GUID, l’extension de classe appelle l’implémentation du pilote client, telle que GUID_USB_CAPABILITY_CHAINED_MDLS. Le pilote client est censé déterminer la prise en charge des demandes d’E/S qui utilisent une MDL chaînée. Si cette fonctionnalité est prise en charge, le membre TransferBufferMdl de l’URB contient la mémoire tampon de requête. Si mdL chaîné n’est pas pris en charge, le pilote client ne reçoit pas les valeurs TransferBufferMdl qui pointent vers des DLL chaînées.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10
Serveur minimal pris en charge Windows Server 2016
Plateforme cible Windows
Version KMDF minimale 1.15
En-tête udecxwdfdevice.h (include Udecx.h)
IRQL PASSIVE_LEVEL

Voir aussi

Architecture : Émulation de périphérique USB (UDE)

Écrire un pilote client UDE