次の方法で共有


UMDF オブジェクトの表示

警告

UMDF 2 は UMDF の最新バージョンであり、UMDF 1 よりも優先されます。 すべての新しい UMDF ドライバーは、UMDF 2 を使用して記述する必要があります。 UMDF 1 には新機能が追加されておらず、Windows 10 の新しいバージョンでは UMDF 1 のサポートが制限されています。 ユニバーサル Windows ドライバーでは、UMDF 2 を使用する必要があります。

アーカイブされた UMDF 1 サンプルは、「Windows 11, バージョン 22H2 - 2022 年 5 月 ドライバーサンプルの更新」でご確認いただけます。

詳しくは、「UMDF の概要」をご覧ください。

このトピックでは、Wudfext.dll デバッガー拡張機能を使用して、ユーザー モード ドライバー フレームワーク (UMDF) バージョン 1 ドライバーによって使用されるオブジェクトに関する情報を表示する方法について説明します。

UMDF バージョン 2 以降では、代わりに Wdfkd.dll デバッガー拡張機能を使用する必要があります。 詳細については、 「Windows Driver Framework 拡張機能 (Wdfkd.dll)」をご参照ください。

UMDF バージョン 1 オブジェクトに関する情報を表示するには、次の手順を実行します。

  1. 次のいずれかの UMDF デバッガー拡張機能を使用して、ホスト プロセス内のデバイス スタックを表示します。

    • !wudfext.umdevstacks

    • !wudfext.umdevstack の例:

      !wudfext.umdevstack <dev-stack-addr>

      情報には、各ドライバーのドライバー オブジェクトとデバイス オブジェクトが含まれます。 現在、UMDF はホスト プロセスで 1 つのデバイス スタックのみを許可するため、これら 2 つの拡張機能の出力に違いはありません。

  2. 次の例のように、!wudfext.wudfobject UMDF デバッガー拡張機能を使用して、完全なオブジェクト ツリーを表示します。

    !wudfext.wudfobject <IWDFDriver*> 1

  3. 次の例に示すように、!wudfext.wudfdevice UMDF デバッガー拡張機能を使用して、デバイスのプラグ アンド プレイ (PnP) と電源管理の状態を確認します。

    !wudfext.wudfdevice <IWDFDevice*>

  4. デバイスに関連付けられているキューを確認するには、次の手順を実行します。

    1. !wudfext.wudfdevicequeues UMDF デバッガー拡張機能を使用して、デバイスに関連付けられているキューを表示します。 この拡張機能には、キューのプロパティ、キューの状態、ドライバー所有の要求が表示されます。

    2. 次の例に示すように、!wudfext.wudfqueue UMDF デバッガー拡張機能を使用して、各キューに関する情報を取得します。

      !wudfext.wudfqueue <IWDFIoQueue*>

  5. 特定の要求に関する情報を取得するには、!wudfext.wudfrequest UMDF デバッガー拡張機能を使用します。 この情報には、基になるユーザー モード I/O 要求パケット (IRP) が含まれます。 ユーザー モード IRP 情報から、要求がスタックで現在処理されている場所を決定できます。 また、!wudfext.umirp UMDF デバッガー拡張機能を使用して、このユーザー モード IRP 情報を取得することもできます。

  6. 次の方法ですべての I/O ターゲットを決定します。

    1. !wudfext.wudfobject UMDF デバッガー拡張機能を使用して、デバイス オブジェクトの子オブジェクトを表示します。 I/O ターゲット オブジェクトは、デバイス オブジェクトの子オブジェクトです。

    2. 次の例に示すように、!wudfext.wudfiotarget UMDF デバッガー拡張機能を使用して、各 I/O ターゲット オブジェクトに関する情報を表示します。

      !wudfext.wudfiotarget <IWDFTarget*>

      この拡張機能には、ターゲットの状態と送信された要求の一覧が表示されます。

    現在、すべての I/O ターゲットを表示できる UMDF デバッガー拡張機能はありません。

  7. 次の UMDF デバッガー拡張機能を使用して、ファイル オブジェクトに関する情報を表示します。

    !wudfext.wudfrequest または !wudfext.umirp
    !wudfext.wudfrequest または !wudfext.umirp UMDF デバッガー拡張機能を使用して、デバイス オブジェクトの子オブジェクトであるファイルを表示します。

    !wudfext.wudffile
    次の例に示すように、!wudfext.wudffile UMDF デバッガー拡張機能を使用して、フレームワーク ファイルに関する情報を表示します。

    !wudfext.wudffile <IWDFFile*>

    !wudfext.umfile
    次の例に示すように、!wudfext.umfile UMDF デバッガー拡張機能を使用して、UMDF スタック内ファイル (つまり、アプリケーションまたは別のスタック内のドライバーによって作成されたファイル オブジェクトとは対照的に、スタック内のドライバーが作成したファイル オブジェクト) に関する情報を表示します。

    !wudfext.umfile <addr>

    場合によっては、対応するフレームワーク ファイルが存在せず、ユーザー モード IRP 情報に UMDF スタック内ファイルが含まれている場合があります。

    !wudfext.umfile に表示される情報には、UMDF スタック内ファイルにキューに登録されている IRP が含まれます。 ドライバーによって作成されたファイルのみが、それらのファイルにキューに登録されているユーザー モード IRP を追跡します。 アプリケーションで作成されたファイルの場合、I/O マネージャーはカーネル モード IRP を追跡します。

    !wudfext.umdevstacks!wudfext.umdevstack
    ドライバーによって作成されたファイルに対応する未処理の UMDF スタック内ファイルを表示するには、!wudfext.umdevstacks!wudfext.umdevstack UMDF デバッガー拡張機能からの出力を使用します。