テンプレートを使ったユニバーサル Windows ドライバー (UMDF 2) の作成

このトピックでは、ユーザーモード ドライバー フレームワーク (UMDF) 2 を使ってユニバーサル Windows ドライバーを作成する方法について説明します。 Microsoft Visual Studio テンプレートを使って開始し、別のコンピューターにドライバーを展開してインストールします。

最初に、最新バージョンの Microsoft Visual Studio と Windows Driver Kit (WDK) があることを確認します。 ダウンロード リンクについては、「Windows Driver Kit (WDK) のダウンロード」をご覧ください。

Windows 用デバッグ ツールは、WDK をインストールするときに組み込まれます。

ドライバーの作成とビルド

Note

新しい KMDF ドライバーか UMDF ドライバーを作成する場合、32 文字以下のドライバー名を選ぶ必要があります。 この長さの制限は wdfglobals.h で定義されています。

  1. Visual Studio を開きます。 [ファイル] メニューで [新規] > [プロジェクト] を選択します。

  2. [新しいプロジェクトの作成] ダイアログ ボックスの左側のドロップダウンで [C++] を選択し、中央のドロップダウンで [Windows] を選択し、右側のドロップダウンで [ドライバー] を選択します。

  3. プロジェクトの種類の一覧から [ユーザー モード ドライバー (UMDF V2)] を選択します。 [次へ] を選択します。

    Screen shot of the new project dialog box, showing user mode driver selected.

  4. [新しいプロジェクトの構成] ダイアログ ボックスで、[プロジェクト名] フィールドに「UmdfDriver」と入力します。

    Note

    新しい KMDF ドライバーか UMDF ドライバーを作成する場合、32 文字以下のドライバー名を選ぶ必要があります。 この長さの制限は wdfglobals.h で定義されています。  

  5. [場所] フィールドに、新しいプロジェクトを作成するディレクトリを入力します。

  6. [ソリューションとプロジェクトを同じディレクトリに配置する] をオンにし、[作成] を選択します。

    Screen shot of the project configuration dialog box.

    Visual Studio により、1 つのプロジェクトと 1 つのソリューションが作成されます。 これらはソリューション エクスプローラー ウィンドウで確認できます。 ([ソリューション エクスプローラー] ウィンドウが表示されない場合は、[表示] メニューの [ソリューション エクスプローラー] を選択します)。このソリューションには、UmdfDriver という名前のドライバー プロジェクトがあります。 ドライバーのソース コードを表示するには、[ソース ファイル] の下にあるファイルのいずれかを開きます。 Driver.c と Device.c から始めることをお勧めします。

    Screen shot of solution explorer showing the files in the driver project.

  7. [ソリューション エクスプローラー] ウィンドウで、[ソリューション 'UmdfDriver' (1 件中 1 件のプロジェクト)] を選択して長押し (または右クリック) し、[構成マネージャー] をクリックします。 ドライバー プロジェクトに対する構成とプラットフォームを選びます。 たとえば、Debugx64 を選びます。

  8. [ソリューション エクスプローラー] ウィンドウで、[UmdfDriver] を選択して長押し (または右クリック) し、[プロパティ] をクリックします。 [構成プロパティ] > [Driver Settings] (ドライバーの設定) > [全般] の順に移動します。[ターゲット プラットフォーム] が既定で [ユニバーサル] に設定されていることに注意してください。

  9. ドライバーをビルドするには、[ビルド] メニューの [ソリューションのビルド] を選びます。 Microsoft Visual Studio の [出力] ウィンドウにビルドの進行状況が表示されます。 ([出力] ウィンドウが表示されていない場合は、[表示] メニューの [出力] を選択します)。

    ビルド出力に次のものが含まれていることを確認します。

    >    Driver is 'Universal'.
    

    ソリューションが正常にビルドされたことを確認したら、Visual Studio を閉じることができます。

  10. ビルドされたドライバーを確認するには、エクスプローラーで [UmdfDriver] フォルダーに移動し、x64\Debug\UmdfDriver に移動します。 ディレクトリには、次のファイルが含まれています。

    • UmdfDriver.dll -- ユーザーモード ドライバー ファイル
    • UmdfDriver.inf -- ドライバーのインストール時に Windows が使用する情報ファイル

ユニバーサル Windows ドライバーの展開とインストール

ドライバーをテストしてデバッグする場合、通常はデバッガーとドライバーを別個のコンピューターで実行します。 デバッガーを実行するコンピューターはホスト コンピューターと呼ばれ、ドライバーを実行するコンピューターはターゲット コンピューターと呼ばれます。 ターゲット コンピューターはテスト コンピューターとも呼ばれます。

ここまでは、Visual Studio を使用してホスト コンピューター上でドライバーをビルドしました。 次に、ターゲット コンピューターを構成する必要があります。 「ドライバーの展開およびテストのためのコンピューターのプロビジョニング (WDK 10)」の手順に従ってください。 そうすると、ドライバーの展開、インストール、読み込み、デバッグを行う準備が整います。

  1. ホスト コンピューターで、Visual Studio でソリューションを開きます。 UmdfDriver フォルダー内のソリューション ファイル (UmdfDriver.sln) をダブルクリックできます。

  2. [ソリューション エクスプローラー] ウィンドウで、[UmdfDriver] を選択して長押し (または右クリック) し、[プロパティ] をクリックします。

  3. 次に示すように、[UmdfDriver のプロパティ ページ] ウィンドウで、[構成プロパティ] > [Driver Install] (ドライバーのインストール) > [Deployment] (展開) の順に移動します。

  4. [デプロイ前に以前のドライバー バージョンを削除する] にチェックを入れます。

  5. [Target Device Name] (ターゲット デバイス名) で、テストとデバッグ用に構成したコンピューターの名前を選択します。

  6. [Hardware ID Driver Update] (ハードウェア ID のドライバーの更新) を選択し、ドライバーのハードウェア ID を入力します。 この作業のハードウェア ID は Root\UmdfDriver です。 [OK] を選択します。

    screen shot of the umdfdriver property pages, showing deployment driver install selected

    この作業のハードウェア ID は特定のハードウェアを識別するものではありません。 これは、ルート ノードの子としてデバイス ツリー内の場所が与えられる架空のデバイスを識別します。 実際のハードウェアの場合は、[Hardware ID Driver Update] (ハードウェア ID のドライバーの更新) を選択しないでください。代わりに、[インストールと検証] を選択します。 ハードウェア ID は、ドライバーの情報 (INF) ファイルで確認できます。 [ソリューション エクスプローラー] ウィンドウで、[UmdfDriver] > [Driver Files] (ドライバー ファイル) の順に移動し、UmdfDriver.inf をダブルクリックします。 ハードウェア ID は [Standard.NT$ARCH$] の下に記載されています。

    [Standard.NT$ARCH$]
    %DeviceName%=MyDevice_Install,Root\UmdfDriver
    
  7. [デバッグ] メニューの [デバッグの開始] を選択するか、キーボードの F5 キーを押します。

  8. ドライバーがターゲット コンピューターに展開およびインストールされ、読み込まれるまで待機します。 この処理には数分かかる場合があります。

Driver Module Framework (DMF) の使用

Driver Module Framework (DMF) は、WDF ドライバー開発者向けの追加機能が有効になる WDF の拡張機能です。 開発者は、どのような種類の WDF ドライバーでも適切にに短時間で作成できるようになります。

フレームワークとしての DMF によって、DMF モジュールという WDF オブジェクトを作成できます。 これらの DMF モジュールのコードは、異なるドライバー間で共有できます。 さらに、DMF は、ドライバー用に開発された DMF モジュールのライブラリをバンドルしており、他のドライバー開発者にも役立ちます。

DMF は WDF に置き換わるものではありません。 DMF は WDF と共に使用される 2 つ目のフレームワークです。 DMF を利用している開発者は引き続き WDF とそのすべてのプリミティブを使用してデバイス ドライバーを作成します。

詳細については、Driver Module Framework (DMF)を参照してください。

ドライバーの開発、テスト、および展開

Windows 用デバッグ ツール

初めてのドライバーの作成