フレームワークベースのドライバーのビルドと読み込み

カーネル モード ドライバー フレームワークを使用するドライバーをビルドするには、Windows Driver Kit (WDK) ビルド環境 (これによりコマンド プロンプト ウィンドウが作成される) を選択して、ビルド ユーティリティを実行する必要があります。ビルド環境を選択してビルド ユーティリティを使用する方法の詳細については、「ビルド ユーティリティの使用」(英語の可能性あり) を参照してください。

フレームワークベースのドライバーをビルドする前に、次の操作を行う必要があります。

  • いずれかのヘッダー ファイルに Ntddk.h および Wdf.h をインクルードします。

  • ドライバーの Sources ファイルに、KMDF_VERSION_MAJOR エントリ、および必要に応じて KMDF_VERSION_MINOR エントリを追加します。

    KMDF_VERSION_MAJOR エントリは、ドライバーを KMDF ライブラリにリンクする必要があることを、ビルド ユーティリティに対して通知します。ライブラリのバージョン (メジャー バージョン) を識別する数値を、次のように指定する必要があります。

      KMDF_VERSION_MAJOR=1
    

    必要に応じて、KMDF_VERSION_MINOR ディレクティブを含めることで、ライブラリのマイナー バージョンを指定できます。たとえば、KMDF ライブラリの Version 1.9 を指定するには、Sources ファイルに次のエントリを追加する必要があります。

      KMDF_VERSION_MAJOR=1
    KMDF_VERSION_MINOR=9
    

    KMDF_VERSION_MINOR エントリを省略すると、ビルド ユーティリティは最新のマイナー バージョンを使用します。ドライバーは最新バージョンのライブラリにリンクする必要があるため、通常、ドライバー作成者は KMDF_VERSION_MINOR エントリを指定しないでください**。

       Windows Server 2008 よりも前のバージョンの WDK では、Sources ファイルに "KMDF_VERSION_MAJOR=1" ではなく "KMDF_VERSION=1" が含まれていました。

    WDK には、サンプルのフレームワークベースのドライバーごとに、Sources ファイルの例が 1 つ含まれています。

ビルド ユーティリティは、Sources ファイル内に KMDF_VERSION_MAJOR エントリを検出すると、WDK に含まれるすべて、つまりKMDF ライブラリ、ライブラリのローダー、およびスタブ ファイルに、ドライバーをリンクします。ライブラリとローダーはフレームワークの共同インストーラーにも含まれているため、ドライバー パッケージと共に配布できます。

スタブ ファイルには、特殊なエントリ ポイント ルーチンである FxDriverEntry が含まれています。ビルド ユーティリティの Makefile.def ファイルは、スタブの FxDriverEntry ルーチンを、フレームワークベースのドライバーの初期エントリ ポイントとして設定します。

オペレーティング システムは、フレームワークベースのドライバーを読み込むときに、スタブ ファイルおよびライブラリのローダーも読み込みます。次に、スタブ ファイルの FxDriverEntry ルーチンを呼び出します。その後、このルーチンがローダーを呼び出します。ローダーは、ドライバーに必要なフレームワーク ライブラリのバージョンを判断し、正しいライブラリのバージョンをカーネル モード サービスとして読み込みます (まだ読み込まれていない場合)。最後に、ライブラリによってドライバーの DriverEntry ルーチンが呼び出されます。