新しいソフトウェア ドライバーの作成
このトピックでは、Visual Studio を使用して新しいソフトウェア ドライバーの作成を開始する方法について説明します。 ソフトウェア ドライバーは、他のトピックで説明するデバイス機能ドライバー、フィルター ドライバー、およびファイル システム ドライバーとは異なります。 ソフトウェア ドライバーの詳細と、他の種類のドライバーとの違いについては、「ドライバーとは何ですか?」を参照してください。ドライバーモデルの選択。
まず、どのドライバー モデルがソフトウェア ドライバーに適しているかを判断します。 3 つのオプションは、カーネル モード ドライバー フレームワーク (KMDF)、レガシー NT ドライバー モデル、および Windows ドライバー モデル (WDM) です。 どのモデルが最適かを判断するには、「ドライバー モデルの選択」を参照してください。
ケース 1: KMDF を使用したい
- [ファイル]メニューから [新しいプロジェクト] を選択して、Visual Studio でドライバー パッケージを手動で作成できます。
- [新しいプロジェクト] ダイアログ ボックスの左側のペインで、WDFを見つけて選択します。
- 中央のペインで、「カーネル モード ドライバー (KMDF)」を選択します。
- [名前] および [場所] ボックスに入力し、[OK] を選びます。 詳細については、「テンプレートに基づいた KMDF ドライバーの作成」を参照してください。
Note
新しい KMDF ドライバーを作成する場合、32 文字以下のドライバー名を選ぶ必要があります。 この長さの制限は wdfglobals.h で定義されています。
- この時点で、ほとんどの KMDF ドライバーに必要な一般的なコードを実装するドライバー プロジェクトが完成しました。 これで、ソフトウェア ドライバーに固有のコードを提供できるようになりました。
ケース 2: レガシー NT モデルを使用したい
[ファイル]メニューから [新しいプロジェクト] を選択して、Visual Studio でドライバー パッケージを手動で作成できます。
Visual Studio の [新しいプロジェクト] ダイアログ ボックスの [Windows ドライバー] で、[WDM] | [WDM] を選択します。空の WDM ドライバー。
Note
作成するのは WDM ドライバーではありませんが、[Empty WDM Driver]\(空の WDM ドライバー\) テンプレートが必要です。
[名前] および [場所] ボックスに入力し、[OK] を選びます。
この時点で、空の WDM ドライバー プロジェクトが完成しました。 ソリューション エクスプローラー ウィンドウでドライバー プロジェクトを長押し (または右クリック) し、[追加]、[新しい項目] の順に選びます。
[新しい項目の追加] ダイアログ ボックスで [C++ ファイル (.cpp)] を選び、ファイルの名前を入力して [OK] を選びます。
Note
.cpp ファイルでなく .c ファイルを作成する場合は、拡張子が .c の名前を入力します。
ntddk.h をインクルードします。
ソフトウェアドライバーに必要な機能を実装します。 関数を実装して整理するときに、ヘッダー ファイルと追加の .cpp または .c ファイルを追加することを決定する場合があります。
ケース 3: WDMを使用したい
ソフトウェア ドライバーに WDM を使用する可能性はほとんどありません。 ただし、その場合は、次の手順に従ってください。
[ファイル]メニューから [新しいプロジェクト] を選択して、Visual Studio でドライバー パッケージを手動で作成できます。
Visual Studio の [新しいプロジェクト] ダイアログ ボックスの [Windows ドライバー] で [WDM] を選択します。
[名前] および [場所] ボックスに入力し、[OK] を選びます。
この時点で、空の WDM ドライバー プロジェクトが完成しました。 ソリューション エクスプローラー ウィンドウでドライバー プロジェクトを長押し (または右クリック) し、[追加]、[新しい項目] の順に選びます。
[新しい項目の追加] ダイアログ ボックスで [C++ ファイル (.cpp)] を選び、ファイルの名前を入力して [OK] を選びます。
Note
.cpp ファイルでなく .c ファイルを作成する場合は、拡張子が .c の名前を入力します。
wdm.h を含めます。
ソフトウェアドライバーに必要な機能を実装します。 関数を実装して整理するときに、ヘッダー ファイルと追加の .cpp または .c ファイルを追加することを決定する場合があります。