EVT_UDECX_WDF_DEVICE_QUERY_USB_CAPABILITY回调函数 (udecxwdfdevice.h)

UDE 客户端驱动程序的实现,用于确定模拟 USB 主控制器支持的功能。

语法

EVT_UDECX_WDF_DEVICE_QUERY_USB_CAPABILITY EvtUdecxWdfDeviceQueryUsbCapability;

NTSTATUS EvtUdecxWdfDeviceQueryUsbCapability(
  [in]            WDFDEVICE UdecxWdfDevice,
  [in]            PGUID CapabilityType,
  [in]            ULONG OutputBufferLength,
  [out, optional] PVOID OutputBuffer,
  [out]           PULONG ResultLength
)
{...}

参数

[in] UdecxWdfDevice

表示控制器的框架设备对象的句柄。 客户端驱动程序在上一次调用 UdecxWdfDeviceAddUsbDeviceEmulation 中初始化了此对象。

[in] CapabilityType

指向指定所请求功能的 GUID 的指针。 可能的 PGUID 值如下所示:

  • GUID_USB_CAPABILITY_CHAINED_MDLS
  • 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
有关功能的信息,请参阅 USBD_QueryUsbCapability的“备注”部分。

[in] OutputBufferLength

如果输出缓冲区可用,则为请求的输出缓冲区的长度(以字节为单位)。

[out, optional] OutputBuffer

指向接收缓冲区地址的位置的指针。 某些功能可能需要为此缓冲区中的 UdeCx) (USB 设备仿真类扩展提供其他信息。

[out] ResultLength

返回时包含回调函数存储在 OutputBuffer 中的信息的大小(以字节为单位)的位置。

返回值

如果操作成功,回调函数必须返回STATUS_SUCCESS,或NT_SUCCESS (状态) 等于 TRUE 的另一个状态值。 如果不支持某个功能,客户端驱动程序可以返回NT_SUCCESS (状态) 等于 FALSE,例如STATUS_UNSUCCESSFUL。

注解

当类扩展收到确定仿真控制器的功能的请求时,类扩展会调用客户端驱动程序实现的此回调函数。 只有在返回 EvtDriverDeviceAdd 后才会调用回调,通常在 EvtDevicePrepareHardware 中。 在 EvtDeviceReleaseHardware 返回后,无法调用此回调。

类扩展报告以下功能 GUID,但不受支持:

  • GUID_USB_CAPABILITY_STATIC_STREAMS
  • GUID_USB_CAPABILITY_CLEAR_TT_BUFFER_ON_ASYNC_TRANSFER_CANCEL
类扩展报告GUID_USB_CAPABILITY_SELECTIVE_SUSPEND功能 GUID 是否受支持,甚至无需调用回调函数。

对于其他 GUID,类扩展会调用客户端驱动程序的实现,例如 GUID_USB_CAPABILITY_CHAINED_MDLS。 客户端驱动程序应确定对使用链接 MDL 的 I/O 请求的支持。 如果支持此功能,则 URBTransferBufferMdl 成员包含请求缓冲区。 如果不支持链接 MDL,则客户端驱动程序不会收到指向链接 MDL 的 TransferBufferMdl 值。

要求

要求
最低受支持的客户端 Windows 10
最低受支持的服务器 Windows Server 2016
目标平台 Windows
最低 KMDF 版本 1.15
标头 udecxwdfdevice.h (包括 Udecx.h)
IRQL PASSIVE_LEVEL

另请参阅

体系结构:USB 设备模拟 (UDE)

编写 UDE 客户端驱动程序