WinUsb_ReadIsochPipeAsap 函数 (winusb.h)

WinUsb_ReadIsochPipeAsap 函数提交从常时等量 IN 终结点读取数据的请求。

语法

BOOL WinUsb_ReadIsochPipeAsap(
  [in]           WINUSB_ISOCH_BUFFER_HANDLE  BufferHandle,
  [in]           ULONG                       Offset,
  [in]           ULONG                       Length,
  [in]           BOOL                        ContinueStream,
  [in]           ULONG                       NumberOfPackets,
                 PUSBD_ISO_PACKET_DESCRIPTOR IsoPacketDescriptors,
  [in, optional] LPOVERLAPPED                Overlapped
);

参数

[in] BufferHandle

传输缓冲区的不透明句柄,该句柄由上一次调用 WinUsb_RegisterIsochBuffer注册。

[in] Offset

相对于开始传输的缓冲区偏移量。

[in] Length

传输缓冲区的长度(以字节为单位)。

[in] ContinueStream

指示仅当传输可以安排在上一个挂起的传输之后的第一帧时,才应提交传输。

[in] NumberOfPackets

保存传输缓冲区所需的常时等量数据包总数。 还指示 IsoPacketDescriptors 指向的数组中的元素数。

IsoPacketDescriptors

一个USBD_ISO_PACKET_DESCRIPTOR数组,用于接收传输中每个常时等量数据包的详细信息。

[in, optional] Overlapped

指向用于异步操作 的 OVERLAPPED 结构的指针。

返回值

如果操作成功,WinUsb_ReadIsochPipeAsap返回 TRUE。 否则,此函数返回 FALSE,调用方可以通过调用 GetLastError 检索记录的错误。

如果调用方将 ContinueStream 设置为 TRUE,则如果Winusb.sys无法计划传输以在不删除一个或多个帧的情况下继续流,则传输将失败。

备注

WinUsb_ReadIsochPipeAsap 允许 USB 驱动程序堆栈选择传输的起始帧编号。 如果终结点上已挂起一个或多个传输,则传输将紧跟在当前挂起的最后一个传输的最后一个帧编号之后安排传输。

WinUsb_ReadIsochPipeAsap 将传输缓冲区数据包化,以便在每个间隔内,主机可以接收每个间隔允许的最大字节数。 最大字节数由完整终结点和高速终结点的终结点描述符指定,以及 SuperSpeed 终结点的终结点配套描述符指定。 如果调用方提交多个读取请求以从设备流式传输数据,则传输大小应是WinUsb_QueryPipeEx) * 8 / 间隔返回的每个 间隔 (最大 字节数的倍数。

由于基础内核模式接口中使用的传输打包,应用程序或驱动程序的最低延迟通知间隔为 1 毫秒。

要求

   
最低受支持的客户端 Windows 8.1
最低受支持的服务器 Windows Server 2012 R2
目标平台 通用
标头 winusb.h (包括 Winusb.h)
Library Winusb.lib
DLL Winusb.dll

请参阅

发送来自 UWP 桌面应用的 USB 常时等量传输

WinUSB 函数