WdfUsbTargetDeviceQueryUsbCapability 函数 (wdfusb.h)

[适用于 KMDF 和 UMDF]

WdfUsbTargetDeviceQueryUsbCapability 方法确定主机控制器和 USB 驱动程序堆栈是否支持特定功能。

语法

NTSTATUS WdfUsbTargetDeviceQueryUsbCapability(
  [in]            WDFUSBDEVICE UsbDevice,
  [in]            const GUID   *CapabilityType,
  [in]            ULONG        CapabilityBufferLength,
  [out, optional] PVOID        CapabilityBuffer,
  [out, optional] PULONG       ResultLength
);

参数

[in] UsbDevice

USB 设备对象的句柄。

[in] CapabilityType

指向 GUID 的指针,表示客户端驱动程序要检索信息的功能。 PGUID 值的可能 如下所示:

  • GUID_USB_CAPABILITY_CHAINED_MDLS
  • GUID_USB_CAPABILITY_STATIC_STREAMS
  • GUID_USB_CAPABILITY_SELECTIVE_SUSPEND
  • GUID_USB_CAPABILITY_FUNCTION_SUSPEND
  • GUID_USB_CAPABILITY_DEVICE_CONNECTION_HIGH_SPEED_COMPATIBLE
  • GUID_USB_CAPABILITY_DEVICE_CONNECTION_SUPER_SPEED_COMPATIBLE
有关详细信息,请参阅“备注”。

[in] CapabilityBufferLength

CapabilityBuffer指向的缓冲区的长度(以字节为单位)。

[out, optional] CapabilityBuffer

指向调用方分配的缓冲区的指针,用于接收请求的 USB 功能。 此参数是可选的。 如果 CapabilityBufferLength 为零,则此参数必须为 NULL。 同样,如果 CapabilityBufferLength 为非零,则必须提供此参数。 此参数对应于 USBD_QueryUsbCapability 例程的 OutputBuffer 参数。

[out, optional] ResultLength

指向包含返回功能的大小(以字节为单位)的位置的指针。 此参数是可选的。

返回值

如果作成功,WdfUsbTargetDeviceQueryUsbCapability 返回STATUS_SUCCESS。 否则,此方法可以返回以下值之一:

返回代码 描述
STATUS_INVALID_DEVICE_STATE
USB 设备对象句柄无效。
STATUS_INSUFFICIENT_RESOURCES
内存不足。
STATUS_INVALID_PARAMETER
调用方传递的参数值无效。
  • UsbDeviceCapabilityType 为 NULL。
  • CapabilityBuffer 为 NULL,但 CapabilityBufferLength 包含非零值。 相反,调用方提供了 CapabilityBuffer,但 CapabilityBufferLength 为零。
STATUS_NOT_IMPLEMENTED
基础 USB 驱动程序堆栈不支持指定的功能。
STATUS_NOT_SUPPORTED
主机控制器硬件不支持指定的功能。
 

此方法还可以 返回其他NTSTATUS 值。

言论

在调用 WdfUsbTargetDeviceQueryUsbCapability之前,驱动程序必须调用 WdfUsbTargetDeviceCreateWithParameters 才能注册到基础 USB 驱动程序堆栈。

在调用驱动程序 EvtDevicePrepareHardware 回调函数后,必须调用 WdfUsbTargetDeviceQueryUsbCapability

下表描述了基于 KMDF 的 USB 客户端驱动程序可以通过 WdfUsbTargetDeviceQueryUsbCapability 调用查询的特定于 USB 的功能。

功能 GUID 描述
GUID_USB_CAPABILITY_CHAINED_MDLS Windows 8 中的新 USB 驱动程序堆栈能够接受基于 KMDF 的 USB 客户端驱动程序的链式 MDL(请参阅 MDL)。

有关 USB 驱动程序堆栈中链接的 MDL 功能的详细信息,请参阅 如何发送链式 MDL

此 GUID 仅适用于 KMDF 驱动程序。

GUID_USB_CAPABILITY_STATIC_STREAMS 虽然 USB 2.0 及更早版本仅支持通过批量终结点发送单个数据流,但 USB 3.0 允许通过批量终结点发送和接收多个数据流。

有关打开流的详细信息,请参阅 如何在 USB 批量终结点中打开和关闭静态流

此 GUID 仅适用于 KMDF 驱动程序。

GUID_USB_CAPABILITY_FUNCTION_SUSPEND 通用串行总线 (USB) 3.0 规范定义了名为函数挂起的新功能。 此功能使复合设备的各个功能能够独立于其他功能进入低功率状态。

有关函数挂起的详细信息,请参阅 如何在复合驱动程序中实现函数挂起。

此 GUID 仅适用于 KMDF 驱动程序。

GUID_USB_CAPABILITY_SELECTIVE_SUSPEND 有关选择性挂起的信息,请参阅 USB 选择性挂起

此 GUID 仅适用于 KMDF 驱动程序。

GUID_USB_CAPABILITY_DEVICE_CONNECTION_HIGH_SPEED_COMPATIBLE 确定总线是以高速还是更高速度运行。

此 GUID 适用于 KMDF 和 UMDF 驱动程序。

GUID_USB_CAPABILITY_DEVICE_CONNECTION_SUPER_SPEED_COMPATIBLE 确定总线是在 SuperSpeed 还是更高版本上运行。

此 GUID 适用于 KMDF 和 UMDF 驱动程序。

要求

要求 价值
最低支持的客户端 Windows Vista
目标平台 普遍
最低 KMDF 版本 1.11
最低 UMDF 版本 2.0
标头 wdfusb.h (包括 Wdfusb.h)
Wdf01000.sys(KMDF):WUDFx02000.dll (UMDF)
IRQL PASSIVE_LEVEL
DDI 符合性规则 DriverCreate(kmdf)

另请参阅

USBD_QueryUsbCapability

WdfUsbTargetDeviceRetrieveInformation