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

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

[out] ResultLength

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

返回值

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

言论

类扩展在类扩展收到确定模拟控制器功能的请求时,客户端驱动程序将调用此回调函数。 仅在返回 EvtDriverDeviceAdd 后调用回调,通常 EvtDevicePrepareHardwareEvtDeviceReleaseHardware 返回后,无法调用此回调。

类扩展报告这些功能 GUID,不受支持:

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

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

要求

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

另请参阅

体系结构:USB 设备仿真(UDE)

编写 UDE 客户端驱动程序