MSDN原文:https://msdn.microsoft.com/zh-cn/library/windows/hardware/ff554695(v=vs.85).aspx

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 中,该文件为可能由用户模式驱动程序包含的头文件。

 
#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 的头文件放置在不同的目录中。

Windows 驱动程序工具包中的头文件的更多相关文章

  1. C语言中的头文件

    1.头文件#include <> :表示引用标准库头文件,编译器会从系统配置的库环境中去寻找 2.头文件#include "":一般表示用户自己定义使用的头文件,编译器 ...

  2. MinGW中的头文件路径级环境变量设置

    整理自 MinGW中的头文件路径   C头文件目录%MINGW_PATH%/include下有头文件,里面有strcpy等c函数的声明. C++头文件目录%MINGW_PATH%/lib/gcc/mi ...

  3. 理解C++中的头文件和源文件的作用【转】

    一.C++编译模式通常,在一个C++程序中,只包含两类文件--.cpp文件和.h文件.其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码:而.h文件则被称作C++头文件,里面放的也是C+ ...

  4. C++的IO处理中的头文件以及类理解(2)<sstream>头文件

    C++的IO处理中的头文件以及类理解(2)<sstream>头文件 头文件<sstream>中定义的类型都继承iostream头文件中定义的类型.除了继承得来的操作,sstre ...

  5. VC中添加头文件以及库

    原文:http://blog.csdn.net/lwb102063/article/details/52068389   附加头文件包含 VC6.0中: VC6.0默认include包含路径:Tool ...

  6. Linux中常用头文件的作用--转

    http://blog.sina.com.cn/s/blog_5c93b2ab0100q62k.html 1. Linux中一些头文件的作用: <assert.h>:ANSI C.提供断言 ...

  7. 在.h和.cpp中包含头文件的区别

    1.在.h中包含头文件,是为了声明一系列这个头文件的变量等,可能会产生重复包含的问题: 2.在.cpp中包含头文件只是为了实现这个头文件或者使用其中的方法,不会有重复包含的问题,所以尽量在源文件中包含 ...

  8. 在Qt Creator的项目中添加头文件和库

    在Qt Creator中的工程中,工程通过.pro文件管理. 额外需要连接的连接库unix:LIBS += -L your_lib_path -lyour_libwin32:LIBS += your_ ...

  9. linux设备驱动程序该添加哪些头文件以及驱动常用头文件介绍(转)

    原文链接:http://blog.chinaunix.net/uid-22609852-id-3506475.html 驱动常用头文件介绍 #include <linux/***.h> 是 ...

随机推荐

  1. swf格式文件如何修改里面的动作路径或者动作脚本(没有源文件的情况)

    一.UrlActionEditor汉化版,这个工具是非常的简单和使用,直接把你需要需要修改的swf格式的flash文件在这里面打开 二.如果需要更加详细的修改可以下载一个SWFDecompiler4. ...

  2. 用python+selenium登录cnblog后新增文章后再次删除该文章

    目的:登录cnblog后新增文章后再次删除该文章并验证 代码如下: #coding: utf-8 from selenium import webdriver from time import sle ...

  3. Spring3.0之后->Spring MVC过滤器-HiddenHttpMethodFilter

    浏览器form表单只支持GET与POST请求,而DELETE.PUT等method并不支持,spring3.0添加了一个过滤器,可以将这些请求转换为标准的http方法,使得支持GET.POST.PUT ...

  4. The Docker学习记录[Doing]

    微服务 & Docker 译文:使用Java构建微服务 原文:Building Microservices With Java [编者的话]本文翻译自Dzone Guide to the Ja ...

  5. Apache常用配置项

    301是永久重定向 302是临时重定向 编辑虚拟主机的配置文件需要用到apache的rewrite模块 所以要用要先检查apache是否安装了rewrite模块 # ./bin/apachectl - ...

  6. 【转载】Chaotic Time-Series Prediction

    原文地址:https://cn.mathworks.com/help/fuzzy/examples/chaotic-time-series-prediction.html?requestedDomai ...

  7. imovie的快速入门

    iMovie 的边栏区域,可让您整理和选择资源库和事件. 在"资源库"列表中选择资源库或事件时,其媒体会显示在浏览器中. 浏览器 iMovie 中的区域,用于显示"资源库 ...

  8. Invert Binary Tree

    Invert a binary tree: 4 / \ 2 7 / \ / \ 1 3 6 9 to 4 / \ 7 2 / \ / \ 9 6 3 1 简单递归实现,调换左右子树,子树的所有子树结构 ...

  9. Nginx中文域名配置

    Nginx虚拟主机上绑定一个带中文域名,比如linuxeye.中国,浏览器不能跳转. why? 因为操作系统的核心都是英文组成,DNS服务器的解析也是由英文代码交换,所以DNS服务器上并不支持直接的中 ...

  10. 创建COM对象时遭遇 800702e4

    SolidEdge st5(x64) SDK /vs2012/win8.1 x64 西夏普创建SEApplication COM对象时遭遇800702e4.翻来覆去的调vs进程的权限,调se进程的权限 ...