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

时间:2021-08-16 05:17:04

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 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

在该示例中,你可以看到仅在 Windows 7 和更高版本的 Windows 中才提供 KeSetTargetProcessorDpcEx 函数。

此条件声明出现在 Winspool.h 中,该文件为可能由用户模式驱动程序包含的头文件。

C++

 

#if (NTDDI_VERSION >= NTDDI_WIN7) ... BOOL WINAPI GetPrintExecutionData( _Out_ PRINT_EXECUTION_DATA *pData ); #endif // (NTDDI_VERSION >= NTDDI_WIN7)

在该示例中,你可以看到仅在 Windows 7 和更高版本的 Windows 中才提供 GetPrintExecutionData 函数。

用于内核模式驱动程序框架的头文件

WDK 支持多种版本的 Windows,并且它还支持多种版本的内核模式驱动程序框架 (KMDF) 和用户模式驱动程序框架 (UMDF)。WDK 头文件中的版本信息与 Windows 版本有关,但与 KMDF 或 UMDF 版本无关。用于不同版本的 KMDF 和 UMDF 的头文件放置在不同的目录中。