Windows Driver Kit (WDK) のヘッダー ファイル
Windows Driver Kit (WDK) には、カーネル モード ドライバーとユーザー モード ドライバーをビルドする際に必要となるすべてのヘッダー ファイル (.h ファイル) が含まれています。ヘッダー ファイルは WDK インストール フォルダー内の Includeフォルダーにあります (例: C:\Program Files (x86)\Windows Kits\10\Include)。
ヘッダー ファイルには、バージョン情報も含まれているため、ドライバーを実行する Windows のバージョンには関係なく、同じヘッダー ファイル セットを使用できます。
Windows バージョンを表す定数
WDK 中のヘッダー ファイルには、Windows オペレーティング システムの特定のバージョンでのみ利用できるプログラミング要素を指定する条件ステートメントが含まれています。バージョン付きの要素には、関数、列挙、構造体と構造体メンバーがあります。
オペレーティング システムの各バージョンで利用可能なプログラミング要素を指定するために、ヘッダー ファイルには、NTDDI_VERSION の値と、Sdkddkver.h で事前に定義された一連の定数値を比較するプリプロセッサの条件が記述されています。
以下に Microsoft Windows オペレーティング システムのバージョンを表す定義済みの定数値を示します。
定数 | オペレーティング システムのバージョン |
---|---|
NTDDI_WIN10 |
Windows 10 |
NTDDI_WINBLUE |
Windows 8.1 |
NTDDI_WIN8 |
Windows 8 |
NTDDI_WIN7 |
Windows 7 |
NTDDI_WS08SP4 |
Windows Server 2008 SP4 |
NTDDI_WS08SP3 |
Windows Server 2008 SP3 |
NTDDI_WS08SP2 |
Windows Server 2008 SP2 |
NTDDI_WS08 |
Windows Server 2008 |
WDK ヘッダー ファイルには、バージョン固有の DDI 要素の例が数多く記述されています。この条件付き宣言は、Wdm.h ヘッダー ファイルにあります。このヘッダー ファイルは、カーネル モード ドライバーに含まれることがあります。
#if (NTDDI_VERSION >= NTDDI_WIN7)
_Must_inspect_result_
NTKERNELAPI
NTSTATUS
KeSetTargetProcessorDpcEx (
_Inout_ PKDPC Dpc,
_In_ PPROCESSOR_NUMBER ProcNumber
);
#endif
この例で、KeSetTargetProcessorDpcEx 関数は Windows 7 とそれ以降の Windows バージョンでのみ利用できることがわかります。
この条件付き宣言は、Winspool.h ヘッダー ファイルにあります。このヘッダー ファイルは、ユーザー モード ドライバーに含まれることがあります。
#if (NTDDI_VERSION >= NTDDI_WIN7)
...
BOOL
WINAPI
GetPrintExecutionData(
_Out_ PRINT_EXECUTION_DATA *pData
);
#endif // (NTDDI_VERSION >= NTDDI_WIN7)
この例で、GetPrintExecutionData 関数は Windows 7 とそれ以降の Windows バージョンでのみ利用できることがわかります。
カーネル モード ドライバー フレームワークのヘッダー ファイル
WDK では、複数のバージョンの Windows がサポートされており、カーネル モード ドライバー フレームワーク (KMDF) とユーザー モード ドライバー フレームワーク (UMDF) も複数のバージョンがサポートされています。WDK ヘッダー ファイルのバージョン情報は、Windows バージョンに関するものであり、KMDF や UMDF のバージョンに関する情報ではありません。KMDF と UMDF の異なるバージョンのヘッダー ファイルは、別のディレクトリに格納されています。