Share via


structure _URB_OPEN_STATIC_STREAMS (usb.h)

La structure _URB_OPEN_STATIC_STREAMS est utilisée par un pilote client USB pour ouvrir des flux dans le point de terminaison en bloc spécifié.

Pour mettre en forme l’URB, appelez la fonction UsbBuildOpenStaticStreamsRequest .

Syntaxe

struct _URB_OPEN_STATIC_STREAMS {
  struct _URB_HEADER       Hdr;
  USBD_PIPE_HANDLE         PipeHandle;
  ULONG                    NumberOfStreams;
  USHORT                   StreamInfoVersion;
  USHORT                   StreamInfoSize;
  PUSBD_STREAM_INFORMATION Streams;
};

Membres

Hdr

La structure _URB_HEADER qui spécifie les informations d’en-tête URB. Hdr.Function doit être URB_FUNCTION_OPEN_STATIC_STREAMS et Hdr.Length doit être sizeof(_URB_OPEN_STATIC_STREAMS).

PipeHandle

Handle opaque pour le canal associé au point de terminaison qui prend en charge les flux à ouvrir.

Le pilote client obtient PipeHandle à partir de la requête URB_FUNCTION_SELECT_CONFIGURATION ou URB_FUNCTION_SELECT_INTERFACE.

NumberOfStreams

Nombre de flux à ouvrir. La valeur NumberOfStreams indique le nombre d’éléments dans le tableau pointés par Streams. Cette valeur doit être supérieure à zéro et inférieure ou égale au nombre maximal de flux pris en charge par la pile de pilotes USB, le contrôleur hôte et le point de terminaison dans l’appareil. Pour plus d'informations, consultez la section Notes.

StreamInfoVersion

Version de la structure USBD_STREAM_INFORMATION . Doit être défini sur URB_OPEN_STATIC_STREAMS_VERSION_100 ; sinon, la demande échoue et le status URB est USBD_STATUS_INVALID_PARAMETER.

StreamInfoSize

Taille de la structure USBD_STREAM_INFORMATION . StreamInfoSize doit être sizeof(USBD_STREAM_INFORMATION); sinon, la demande échoue et le status URB est USBD_STATUS_INFO_LENGTH_MISMATCH.

Streams

Pointeur vers un tableau de structures USBD_STREAM_INFORMATION initialisé et alloué par l’appelant. La longueur du tableau dépend du nombre de flux à ouvrir et doit être identique à la valeur NumberOfStreams . Pour plus d'informations, consultez la section Notes.

Remarques

Pour utiliser des flux (autres que le flux par défaut) dans le point de terminaison pour les opérations d’E/S, le pilote client ouvre les flux requis en envoyant une demande d’open stream (URB_FUNCTION_OPEN_STATIC_STREAMS) à la pile de pilotes USB. Pour la demande, le pilote client doit mettre en forme l’URB en initialisant la structure _URB_OPEN_STATIC_STREAMS . Pour mettre en forme l’URB, appelez la fonction UsbBuildOpenStaticStreamsRequest .

Le nombre maximal de flux pouvant être ouverts par un pilote client doit être inférieur ou égal au nombre maximal de flux pris en charge par la pile de pilotes USB, le contrôleur hôte et le point de terminaison en bloc. Pour obtenir le nombre maximal de flux pris en charge par le contrôleur hôte, appelez USBD_QueryUsbCapability. La pile de pilotes USB prend en charge jusqu’à 255 flux. Si le pilote client demande plus de 255 flux, USBD_QueryUsbCapability échoue. Pour obtenir le nombre maximal de flux pris en charge par le point de terminaison, inspectez le descripteur complémentaire du point de terminaison (consultez USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR dans Usbspec.h).

Pour plus d’informations sur la mise en forme de l’URB pour la demande et l’exemple de code open-stream, consultez Comment ouvrir et fermer des flux statiques dans un point de terminaison en bloc USB.

Lorsque le pilote client a terminé d’utiliser les flux, il peut fermer tous les flux associés à un point de terminaison particulier en envoyant une demande de flux de fermeture. Pour envoyer la requête, le pilote client doit spécifier des informations sur le point de terminaison dans la structure _URB_PIPE_REQUEST . Le membre Hdr de _URB_PIPE_REQUEST doit être URB_FUNCTION_CLOSE_STATIC_STREAMS ; le membre PipeHandle doit être le handle du point de terminaison qui contient les flux en cours d’utilisation.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 8
En-tête usb.h

Voir aussi

Comment ouvrir et fermer des flux statiques dans un point de terminaison en bloc USB

URB

USB Structures

_URB_HEADER