共用方式為


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 之後,才會叫用回呼,通常是在 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 要求的支援。 如果支援此功能,則 TransferBufferMdlURB 成員 包含要求緩衝區。 如果不支援鏈結的 MDL,用戶端驅動程式就不會收到指向鏈結 MDL 的 TransferBufferMdl 值。

要求

要求 價值
最低支援的用戶端 Windows 10
支援的最低伺服器 Windows Server 2016
目標平臺 窗戶
最低 KMDF 版本 1.15
標頭 udecxwdfdevice.h (include Udecx.h)
IRQL PASSIVE_LEVEL

另請參閱

架構:USB 裝置模擬 (UDE)

寫入 UDE 用戶端驅動程式