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
[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,类扩展会调用客户端驱动程序的实现,例如 GUID_USB_CAPABILITY_CHAINED_MDLS。 客户端驱动程序应确定对使用链接 MDL 的 I/O 请求的支持。 如果支持此功能,则 URB 的 TransferBufferMdl 成员包含请求缓冲区。 如果不支持链接 MDL,则客户端驱动程序不会收到指向链接 MDL 的 TransferBufferMdl 值。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 10 |
最低受支持的服务器 | Windows Server 2016 |
目标平台 | Windows |
最低 KMDF 版本 | 1.15 |
标头 | udecxwdfdevice.h (包括 Udecx.h) |
IRQL | PASSIVE_LEVEL |