Windows 驅動程式套件中的頭檔
Windows 驅動程式套件 (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 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
在範例中,您可以看到 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 版本的頭檔會放在不同的目錄中。