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 的头文件放置在单独的目录中。