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 版本的頭檔會放在不同的目錄中。