コールバック関数EVT_UDECX_WDF_DEVICE_QUERY_USB_CAPABILITY (udecxwdfdevice.h)

エミュレートされた USB ホスト コントローラーでサポートされている機能を決定するための UDE クライアント ドライバーの実装。

構文

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 に等しい別の状態値を返す必要があります。 機能がサポートされていない場合、クライアント ドライバーは、STATUS_UNSUCCESSFULなど、NT_SUCCESS(状態) と等しい FALSE を返すことができます。

注釈

クラス拡張機能は、エミュレートされたコントローラーの機能を決定する要求をクラス拡張機能が受信したときに、クライアント ドライバーによって実装されたこのコールバック関数を呼び出します。 コールバックは、通常は EvtDevicePrepareHardware で EvtDriverDeviceAdd が返された後にのみ呼び出されます。 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
Header udecxwdfdevice.h (Udecx.h を含む)
IRQL PASSIVE_LEVEL

こちらもご覧ください

アーキテクチャ:USB デバイス エミュレーション (UDE)

UDE クライアント ドライバーを記述する