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