USBD_IsochUrbAllocate函数 (usbdlib.h)

USBD_IsochUrbAllocate 例程分配并格式化 URB 结构,用于异时序传输请求。

注意

对于 Windows 驱动程序框架(WDF)驱动程序 如果客户端驱动程序基于 WDF,则必须调用 WdfUsbTargetDeviceCreateIsochUrb 方法,而不是 USBD_IsochUrbAllocateURB 结构分配内存。

语法

NTSTATUS USBD_IsochUrbAllocate(
  [in]  USBD_HANDLE USBDHandle,
  [in]  ULONG       NumberOfIsochPackets,
  [out] PURB        *Urb
);

参数

[in] USBDHandle

客户端驱动程序在对 USBD_CreateHandle 例程的上一次调用中检索的 USBD 句柄。

[in] NumberOfIsochPackets

指定执行传输所需的最大时序数据包数。 传输缓冲区在 USBD_ISO_PACKET_DESCRIPTOR 结构的可变长度数组中描述,该数组存储有关每个数据包的信息,例如缓冲区中数据包的字节偏移量。 数组是在 _URB_ISOCH_TRANSFER 结构的 IsoPacket 成员中指定的,该成员用于定义异时态请求 URB 的格式。

[out] Urb

指向 URB 结构的指针,该结构接收由 USBD_IsochUrbAllocate分配的 URB。 URB 结构的所有成员都设置为零。 分配的 URB 足够大,足以容纳由 numberOfIsochPacket 指示的最大随机数据包数。

当驱动程序通过调用 USBD_UrbFree完成使用它时,客户端驱动程序必须释放 URB。

返回值

如果请求成功,则 USBD_IsochUrbAllocate 例程返回STATUS_SUCCESS。 否则,USBD_UrbAllocate 将 urb 设置为 NULL 并返回 NT 状态失败代码。

可能的值包括但不限于STATUS_INVALID_PARAMETER,这表示传入 NULLUSBDHandleUrb的调用方。

要求

要求 价值
最低支持的客户端 需要适用于 Windows 8 的 WDK。 面向 Windows Vista 和更高版本的 Windows作系统。
目标平台 桌面
标头 usbdlib.h
Usbdex.lib
IRQL <=DISPATCH_LEVEL

另请参阅