structure USBD_PIPE_INFORMATION (usb.h)
La structure USBD_PIPE_INFORMATION est utilisée par les pilotes clients USB pour contenir des informations sur un canal à partir d’une interface spécifique.
Syntaxe
typedef struct _USBD_PIPE_INFORMATION {
USHORT MaximumPacketSize;
UCHAR EndpointAddress;
UCHAR Interval;
USBD_PIPE_TYPE PipeType;
USBD_PIPE_HANDLE PipeHandle;
ULONG MaximumTransferSize;
ULONG PipeFlags;
} USBD_PIPE_INFORMATION, *PUSBD_PIPE_INFORMATION;
Membres
MaximumPacketSize
Spécifie la taille maximale des paquets, en octets, que ce canal gère. Cette valeur doit être inférieure ou égale à la valeur de wMaxPacketSize dans le descripteur de point de terminaison. La pile USB ignore cette valeur si l’indicateur USBD_PF_CHANGE_MAX_PACKET n’est pas défini dans le membre PipeFlags.
Pour les points de terminaison isochrones à haute vitesse, la valeur MaximumPacketSize reçue inclut le nombre d’octets qui peuvent être transférés dans des transactions supplémentaires, si le point de terminaison les prend en charge. Pour plus d’informations, consultez Remarques.
EndpointAddress
Spécifie l’adresse de bus pour ce canal.
Interval
Contient l’intervalle d’interrogation, indiqué par le champ bInterval dans le descripteur de point de terminaison correspondant (USB_ENDPOINT_DESCRIPTOR). Cette valeur n’est valide que pour les canaux d’interruption et d’isochrone. Pour les autres types de canal, cette valeur doit être ignorée. Elle reflète la configuration de l’appareil dans le microprogramme. Les pilotes ne peuvent pas le modifier.
L’intervalle d’interrogation, ainsi que la vitesse de l’appareil et le type de contrôleur hôte, déterminent la fréquence avec laquelle le pilote doit lancer un transfert. La valeur dans Intervalle ne représente pas une durée fixe. Il s’agit d’une valeur relative, et la fréquence d’interrogation réelle dépend également du fonctionnement de l’appareil et du contrôleur hôte USB à faible, pleine ou haute vitesse.
Si le contrôleur hôte ou l’appareil fonctionne à faible vitesse, la période de temps entre les transferts (également appelée « période d’interrogation ») est mesurée en unités de 1 millisecondes et la période est liée à la valeur dans Intervalle comme indiqué dans le tableau suivant :
Intervalle | Période d’interrogation (images de 1 millisecondes) | Interrompre | Isochrone |
---|---|---|---|
0 à 15 | 8 | Supporté. | Non pris en charge. |
16 à 35 | 16 | Supporté. | Non pris en charge. |
36 à 255 | 32 | Supporté. | Non pris en charge. |
Pour les appareils et les contrôleurs hôtes qui peuvent fonctionner à pleine vitesse, la période est mesurée en unités de 1 millisecondes. Pour les transferts isochrones à pleine vitesse, l’intervalle valeur et la période d’interrogation est toujours 1. Cette valeur indique que les données peuvent être transférées dans chaque image. Pour les transferts d’interruptions à vitesse totale, la période d’interrogation est dérivée de la valeur Interval. Le tableau suivant indique les valeurs prises en charge pour les points de terminaison d’interruption et isochrones.
Intervalle | Période d’interrogation (images de 1 millisecondes) | Interrompre | Isochrone |
---|---|---|---|
1 | 1 | Supporté. | Supporté. |
2 à 3 | 2 | Supporté. | Non pris en charge. |
4 à 7 | 4 | Supporté. | Non pris en charge. |
8 à 15 | 8 | Supporté. | Non pris en charge. |
16 à 31 | 16 | Supporté. | Non pris en charge. |
32 à 255 | 32 | Supporté. | Non pris en charge. |
Pour les appareils et les contrôleurs hôtes qui peuvent fonctionner à grande vitesse, la période est mesurée en unités de microframes. La période d’interrogation est dérivée de la valeur intervalle de à l’aide de la formule Polling period = 2 ** (Interval - 1)
. Les valeurs calculées sont indiquées dans le tableau suivant :
Intervalle | Période d’interrogation (microframes) | Interrompre | Isochrone |
---|---|---|---|
1 | 1 | Supporté. | Supporté. |
2 | 2 | Supporté. | Supporté. |
3 | 4 | Supporté. | Supporté. |
4 | 8 | Supporté. | Supporté. |
5 | 16 | Supporté. | Non pris en charge. |
6 à 255 | 32 | Supporté. | Non pris en charge. |
Les périodes d’interrogation prises en charge pour les transferts isochroniques à grande vitesse sont 1, 2, 4 et 8. Si un pilote client envoie une demande de URB_FUNCTION_ISOCH_TRANSFER pour un point de terminaison isochrone à grande vitesse avec une période d’interrogation supérieure à 8, la demande échoue avec l’état USBD_STATUS_INVALID_PARAMETER. Pour plus d’informations sur les transferts isochrones, consultez Comment transférer des données vers des points de terminaison isochronous USB.
Les mappages dans les tables précédentes entre les périodes et les intervalles d’interrogation sont valides dans Microsoft Windows 2000 et les versions ultérieures du système d’exploitation Windows.
PipeType
Spécifie le type de transfert utilisé par ce canal. Ces valeurs sont définies dans l’énumération USBD_PIPE_TYPE.
PipeHandle
Spécifie un handle opaque vers le canal de bloc ou d’interruption. Le pilote du contrôleur hôte retourne ce handle lorsque le pilote client sélectionne la configuration de l’appareil avec un URB de type URB_FUNCTION_SELECT_CONFIGURATION ou lorsque le pilote client modifie les paramètres d’une interface avec un URB de type URB_FUNCTION_SELECT_INTERFACE.
MaximumTransferSize
Spécifie la taille maximale, en octets, pour une demande de transfert sur ce canal. Dans Windows Server 2003, Windows XP et les systèmes d’exploitation ultérieurs, ce membre n’est pas utilisé et ne contient pas de données valides.
Pour plus d’informations sur les tailles de transfert maximales de chaque type de point de terminaison USB dans différentes versions de Windows, consultez les tailles de transfert et de paquets USB.
PipeFlags
Contient un ou plusieurs indicateurs de canal que le pilote peut utiliser pour spécifier certaines caractéristiques configurables du canal. Le pilote spécifie ces caractéristiques de canal lorsqu’il sélectionne la configuration d’un périphérique USB avec une requête URB dont le type de fonction est URB_FUNCTION_SELECT_CONFIGURATION.
Le tableau suivant explique la signification de chaque indicateur de canal :
Nom de l’indicateur | Signification |
---|---|
USBD_PF_CHANGE_MAX_PACKET | Indique que le pilote remplace la taille maximale du paquet du point de terminaison par la valeur spécifiée dans MaximumPacketSize. Cette valeur doit être inférieure ou égale au maximum par défaut spécifié dans le descripteur de point de terminaison du canal. |
Remarques
Cette structure contient des informations pour un point de terminaison, récupérées à partir du descripteur d’interface de l’appareil. Pour obtenir des informations dans USBD_PIPE_INFORMATION à partir du descripteur d’interface, consultez Comment sélectionner une configuration pour un périphérique USB.
La valeur MaximumPacketSize est dérivée du premier 11 bits du champ wMaxPacketSize du descripteur de point de terminaison, qui indique le nombre maximal d’octets auxquels le contrôleur hôte peut envoyer ou recevoir du point de terminaison dans une seule transaction.
En règle générale, pour les transferts à grande vitesse, le contrôleur hôte envoie ou reçoit une transaction par microframe. Toutefois, la vitesse élevée, les points de terminaison d’interruption ou d’isochronous à bande passante élevée prennent en charge des débits de données plus élevés par le biais de transactions supplémentaires. Cela permet au contrôleur hôte de transférer jusqu’à 3072 octets dans un microframe unique. Le nombre de transactions supplémentaires prises en charge par ce type de point de terminaison est indiqué par bits 12..11 de wMaxPacketSize (le bit le moins significatif est 0). Ce nombre peut être égal à 0, 1 ou 2. Si 12..11 indiquent 0, les transactions supplémentaires par microframe ne sont pas prises en charge par le point de terminaison. Si le nombre est 1, le contrôleur hôte peut envoyer une transaction supplémentaire (total de deux transactions par microframe) ; 2 indique deux transactions supplémentaires (au total trois transactions par microframe).
La valeur reçue dans MaximumPacketSize pour un point de terminaison isochrone (haute vitesse et bande passante élevée) indique le nombre total d’octets auxquels le contrôleur hôte peut envoyer ou recevoir à partir du point de terminaison dans un microframe. La valeur inclut le nombre d’octets dans des transactions supplémentaires, si le point de terminaison les prend en charge. Par exemple, tenez compte des caractéristiques de point de terminaison isochrones suivantes :
- wMaxPacketSize est de 1 024
- Les bits 12..11 indiquent 2
- intervalle est 1.
Exigences
Exigence | Valeur |
---|---|
d’en-tête | usb.h (include Usb.h) |