Partager 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

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 demande de URB_FUNCTION_SELECT_CONFIGURATION ou de URB_FUNCTION_SELECT_INTERFACE.

NumberOfStreams

Nombre de flux à ouvrir. La valeur NumberOfStreams indique le nombre d’éléments dans le tableau pointé 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 de l’appareil. Pour plus d’informations, consultez Remarques.

StreamInfoVersion

Version de la structure USBD_STREAM_INFORMATION. Doit être défini sur URB_OPEN_STATIC_STREAMS_VERSION_100 ; sinon, la requête échoue et l’état URB est USBD_STATUS_INVALID_PARAMETER.

StreamInfoSize

Taille de la structure USBD_STREAM_INFORMATION. StreamInfoSize doit être sizeof(USBD_STREAM_INFORMATION); sinon, la requête échoue et l’état URB est USBD_STATUS_INFO_LENGTH_MISMATCH.

Streams

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

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 de flux ouvert (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 la demande. Pour obtenir le nombre maximal de flux pris en charge par le point de terminaison, inspectez le descripteur complémentaire du point de terminaison (voir USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR dans Usbspec.h).

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

Lorsque le pilote client est terminé à l’aide des flux, le pilote 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.

Exigences

Exigence Valeur
client minimum pris en charge Windows 8
d’en-tête usb.h

Voir aussi

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

URB

structures USB

_URB_HEADER