適用於 Windows 驅動程式套件 (WDK) 的 API 參考檔 包含建置內核模式和使用者模式驅動程式所需的所有頭檔 (.h 檔案)。 頭檔位於 WDK 安裝資料夾中的 Include 資料夾中。 範例:C:\Program Files (x86)\Windows Kits\10\Include。
頭檔包含版本資訊,因此不論您的驅動程式將執行哪個 Windows 版本,您都可以使用相同的頭檔集。
代表 Windows 版本的常數
WDK 中的頭檔包含條件語句,可指定只能在特定 Windows作系統版本中使用的程式設計元素。 被版本控制的元素包括函式、列舉、結構和結構成員。
若要指定每個作系統版本可用的程式設計專案,頭檔包含預處理器條件,這些條件會比較NTDDI_VERSION的值與 Sdkddkver.h 中定義的一組預先定義的常數值。
以下是預先定義的常數值,代表Microsoft Windows作系統的版本。
| Constant | 操作系統版本 |
|---|---|
NTDDI_WIN10 |
Windows 10 |
NTDDI_WINBLUE |
Windows 8.1 |
NTDDI_WIN8 |
Windows 8 |
NTDDI_WIN7 |
Windows 7 |
NTDDI_WS08SP4 |
Windows Server 2008 with SP4 |
NTDDI_WS08SP3 |
Windows Server 2008 with 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
In the example you can see that the KeSetTargetProcessorDpcEx function is available only in Windows 7 and later versions of Windows.
此條件式宣告會出現在 Winspool.h 中,這是使用者模式驅動程式可能包含的頭檔。
#if (NTDDI_VERSION >= NTDDI_WIN7)
...
BOOL
WINAPI
GetPrintExecutionData(
_Out_ PRINT_EXECUTION_DATA *pData
);
#endif // (NTDDI_VERSION >= NTDDI_WIN7)
In the example can see that the GetPrintExecutionData function is available only in Windows 7 and later versions of Windows.
核心模式驅動程式架構的頭檔
WDK 支援數個版本的 Windows,也支援數個版本的核心模式驅動程式架構 (KMDF) 和使用者模式驅動程式架構 (UMDF)。 WDK 頭檔中的版本控制資訊與 Windows 版本有關,但與 KMDF 或 UMDF 版本無關。 不同版本的 KMDF 和 UMDF 頭檔會放在不同的目錄中。