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
接收緩衝區位址之位置的指標。 某些功能可能需要在此緩衝區中提供其他資訊給 USB 裝置模擬類別延伸模組 (UdeCx) 。
[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 |