_URB_OPEN_STATIC_STREAMS结构 (usb.h)

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 操作的默认流) ,客户端驱动程序通过向 USB 驱动程序堆栈发送开放流请求 (URB_FUNCTION_OPEN_STATIC_STREAMS) 来打开所需的流。 对于请求,客户端驱动程序必须通过初始化 _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_PIPE_REQUESTHdr 成员必须URB_FUNCTION_CLOSE_STATIC_STREAMS;PipeHandle 成员必须是包含正在使用的流的终结点的句柄。

要求

   
最低受支持的客户端 Windows 8
Header usb.h

另请参阅

如何在 USB 批量终结点中打开和关闭静态流

URB

USB 结构

_URB_HEADER