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 の異なるバージョン用のヘッダー ファイルは、個別のディレクトリに配置されます。