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 vers 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 de 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, lors du retour, contient la taille, en octets, des informations stockées par la fonction de rappel dans OutputBuffer.
Valeur de retour
Si l’opération réussit, la fonction de rappel doit retourner STATUS_SUCCESS, ou une autre valeur d’état pour laquelle NT_SUCCESS(status) a la valeur TRUE. Si une fonctionnalité n’est pas prise en charge, le pilote client peut retourner NT_SUCCESS(status) a la valeur 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 EvtDriverDeviceAdd a retourné, généralement dans EvtDevicePrepareHardware. Ce rappel ne peut pas être appelé après EvtDeviceReleaseHardware a retourné.
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, par exemple GUID_USB_CAPABILITY_CHAINED_MDLS. Le pilote client est censé déterminer la prise en charge des requêtes d’E/S qui utilisent un MDL chaîné. Si cette fonctionnalité est prise en charge, le TransferBufferMdl membre du 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 TransferBufferMdl valeurs qui pointent vers des DLL chaînées.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows 10 |
serveur minimum pris en charge | Windows Server 2016 |
plateforme cible | Windows |
version minimale de KMDF | 1.15 |
d’en-tête | udecxwdfdevice.h (include Udecx.h) |
IRQL | PASSIVE_LEVEL |
Voir aussi
architecture : émulation de périphérique USB (UDE)