Windows 驱动程序工具包中的头文件

适用于 Windows 驱动程序工具包(WDK)的 API 参考文档 包含生成内核模式驱动程序和用户模式驱动程序所需的所有头文件(.h 文件)。 头文件位于 WDK 安装文件夹中的“包含”文件夹中。 示例: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 含 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 的头文件放置在单独的目录中。