usb.h) (_URB_OPEN_STATIC_STREAMS 结构
USB 客户端驱动程序使用 _URB_OPEN_STATIC_STREAMS 结构在指定的批量终结点中打开流。
若要设置 URB 的格式,请调用 UsbBuildOpenStaticStreamsRequest 函数。
语法
struct _URB_OPEN_STATIC_STREAMS {
struct _URB_HEADER Hdr;
USBD_PIPE_HANDLE PipeHandle;
ULONG NumberOfStreams;
USHORT StreamInfoVersion;
USHORT StreamInfoSize;
PUSBD_STREAM_INFORMATION Streams;
};
成员
Hdr
指定 URB 标头信息的 _URB_HEADER 结构。 Hdr.Function 必须 URB_FUNCTION_OPEN_STATIC_STREAMS,Hdr.Length 必须为 sizeof(_URB_OPEN_STATIC_STREAMS)
。
PipeHandle
与支持要打开的流的终结点关联的管道的不透明句柄。
客户端驱动程序从URB_FUNCTION_SELECT_CONFIGURATION或URB_FUNCTION_SELECT_INTERFACE请求获取 PipeHandle 。
NumberOfStreams
要打开的流数。 NumberOfStreams 值指示 Streams 指向的数组中的元素数。 此值必须大于零且小于或等于 USB 驱动程序堆栈、主机控制器和设备中的终结点支持的最大流数。 有关详细信息,请参阅“备注”。
StreamInfoVersion
USBD_STREAM_INFORMATION 结构的版本。 必须设置为 URB_OPEN_STATIC_STREAMS_VERSION_100;否则,请求将失败,URB 状态为USBD_STATUS_INVALID_PARAMETER。
StreamInfoSize
USBD_STREAM_INFORMATION结构的大小。 StreamInfoSize 必须为 sizeof(USBD_STREAM_INFORMATION)
;否则,请求将失败,并且 URB 状态USBD_STATUS_INFO_LENGTH_MISMATCH。
Streams
指向调用方分配的初始化USBD_STREAM_INFORMATION结构的数组 的 指针。 数组的长度取决于要打开的流数,并且必须与 NumberOfStreams 值相同。 有关详细信息,请参阅“备注”。
注解
若要在终结点中使用除默认流) 以外的流 (进行 I/O 操作,客户端驱动程序通过将开放流请求 (URB_FUNCTION_OPEN_STATIC_STREAMS) 发送到 USB 驱动程序堆栈来打开所需的流。 对于请求,客户端驱动程序必须通过初始化 _URB_OPEN_STATIC_STREAMS 结构来格式化 URB 。 若要设置 URB 的格式,请调用 UsbBuildOpenStaticStreamsRequest 函数。
客户端驱动程序可以打开的最大流数必须小于或等于 USB 驱动程序堆栈、主机控制器和批量终结点支持的最大流数。 若要获取主机控制器支持的最大流数,请调用 USBD_QueryUsbCapability。 USB 驱动程序堆栈最多支持 255 个流。 如果客户端驱动程序请求的流数超过 255 个, USBD_QueryUsbCapability 请求失败。 若要获取终结点支持的最大流数,请检查终结点配套描述符 (查看 Usbspec.h) 中的 USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR 。
有关格式化开放流请求的 URB 和代码示例的信息,请参阅 如何在 USB 批量终结点中打开和关闭静态流。
客户端驱动程序使用完流后,驱动程序可以通过发送关闭流请求来关闭与特定终结点关联的所有流。 若要发送请求,客户端驱动程序必须在 _URB_PIPE_REQUEST 结构中指定有关终结点的信息。 必须URB_FUNCTION_CLOSE_STATIC_STREAMS_URB_PIPE_REQUEST的 Hdr 成员;PipeHandle 成员必须是包含正在使用的流的终结点的句柄。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 8 |
标头 | usb.h |