structure _URB_CONTROL_VENDOR_OR_CLASS_REQUEST (usb.h)
La structure _URB_CONTROL_VENDOR_OR_CLASS_REQUEST est utilisée par les pilotes clients USB pour émettre une commande spécifique à un fournisseur ou une commande spécifique à une classe sur un appareil, une interface, un point de terminaison ou une autre cible définie par l’appareil.
Syntaxe
struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST {
struct _URB_HEADER Hdr;
PVOID Reserved;
ULONG TransferFlags;
ULONG TransferBufferLength;
PVOID TransferBuffer;
PMDL TransferBufferMDL;
struct _URB *UrbLink;
struct _URB_HCD_AREA hca;
UCHAR RequestTypeReservedBits;
UCHAR Request;
USHORT Value;
USHORT Index;
USHORT Reserved1;
};
Membres
Hdr
Pointeur vers une structure _URB_HEADER qui spécifie les informations d’en-tête URB.
Hdr.Function doit être l’un des URB_FUNCTION_CLASS_XXX ou URB_FUNCTION_VENDOR_XXX GET_STATUS, et Hdr.Length doit être sizeof(_URB_CONTROL_VENDOR_OR_CLASS_REQUEST)
.
Reserved
TransferFlags
Spécifie zéro, un ou une combinaison des indicateurs suivants :
Valeur | Signification |
---|---|
|
Est défini pour demander des données à partir d’un appareil. Pour transférer des données vers un appareil, cet indicateur doit être clair. L’indicateur doit être défini si le canal est un canal de transfert d’interruption. |
|
Est défini pour diriger le contrôleur hôte de ne pas retourner une erreur lorsqu’il reçoit un paquet de l’appareil plus court que la taille maximale du paquet pour le point de terminaison. La taille maximale des paquets pour le point de terminaison est signalée dans le bMaxPacketSize0 membre de la structure USB_DEVICE_DESCRIPTOR (descripteur d’appareil) pour le point de terminaison de contrôle par défaut. Pour un point de terminaison de contrôle non par défaut, la taille maximale des paquets est définie dans le wMaxPacketSize membre de la structure USB_ENDPOINT_DESCRIPTOR (descripteur de point de terminaison).
Lorsque le contrôleur hôte reçoit un paquet dont la longueur est inférieure à la valeur wMaxPacketSize sur un point de terminaison de contrôle, le comportement est le suivant en fonction du type de contrôleur hôte :
Cet indicateur ne doit pas être défini, sauf si USBD_TRANSFER_DIRECTION_IN est également défini. |
TransferBufferLength
Spécifie la longueur, en octets, de la mémoire tampon spécifiée dans TransferBuffer ou décrite dans TransferBufferMDL. Le pilote du contrôleur hôte retourne le nombre d’octets envoyés ou lus à partir du canal dans ce membre.
TransferBuffer
Pointeur vers une mémoire tampon résidente pour le transfert ou est NULL si un MDL est fourni dans transferBufferMDL. Le contenu de cette mémoire tampon dépend de la valeur de TransferFlags. Si USBD_TRANSFER_DIRECTION_IN est spécifié, cette mémoire tampon contient des données lues à partir de l’appareil lors du retour du pilote du contrôleur hôte. Sinon, cette mémoire tampon contient des données fournies par le pilote pour le transfert vers l’appareil.
TransferBufferMDL
Pointeur vers un MDL qui décrit une mémoire tampon résidente ou est NULL si une mémoire tampon est fournie dans TransferBuffer. Le contenu de la mémoire tampon dépend de la valeur de TransferFlags. Si USBD_TRANSFER_DIRECTION_IN est spécifié, la mémoire tampon décrite contient des données lues à partir de l’appareil à partir du pilote du contrôleur hôte. Sinon, la mémoire tampon contient des données fournies par le pilote pour le transfert vers l’appareil. Ce MDL doit être alloué à partir d’un pool non paginé.
UrbLink
Réservé. N’utilisez pas.
hca
Réservé. N’utilisez pas.
RequestTypeReservedBits
Réservé. N’utilisez pas.
Request
Spécifie le code de requête USB ou défini par le fournisseur pour l’appareil, l’interface, le point de terminaison ou une autre cible définie par l’appareil.
Value
Spécifie une valeur spécifique à demande, qui fait partie du paquet de configuration défini par USB pour la cible. Cette valeur est définie par le créateur du code utilisé dans requête.
Index
Spécifie l’index défini par l’appareil, retourné par une demande de configuration réussie, si la demande concerne un point de terminaison ou une interface. Sinon, d’index doit être égal à zéro.
Reserved1
Réservé. N’utilisez pas.
Remarques
Les pilotes peuvent utiliser la routine de service UsbBuildVendorRequest formater cette URB.
Les membres réservés de cette structure doivent être traités comme opaques et sont réservés à une utilisation système.
Exigences
Exigence | Valeur |
---|---|
d’en-tête | usb.h (include Usb.h) |