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 with SP2 |
NTDDI_WS08 |
Windows サーバー 2008 |
バージョン固有の DDI 要素の多数の例を、WDK ヘッダー ファイルで見ることができます。 この条件付き宣言は、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 の異なるバージョン用のヘッダー ファイルは、個別のディレクトリに配置されます。