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 |