Windows的驱动模型概念新葡京32450网址:,开发人员在具备一定的驱动概念知识后

发布时间:2019-10-31  栏目:新葡京32450网址  评论:0 Comments

测试环境

通过VS集成开发环境创建 Driver
解决方案后会生成两个项目,右键属性打开 XXX Package,左侧选中
Driver Signing ,在右侧栏 Sign Mode 选择 Test Sign,在
Test Certificate选择
<Create test certificate...>,则在编译时会自动生成测试签名证书。

 

  在Windows的不同版本上开发的驱动程序
“模型”(模型这个词语应该来源于单词“Mode”。在Win
dowsNT上,驱动程序被称为KernelDriverMode驱动程序。
笔者认为这个Mode是指一种驱动程序的结构和
运作的规范),有过不同的名称。比如在Windows9x上的驱动程序,都叫做VXD,而在WindowsNT上的驱动
程序被称为KDM驱动程序,Windows98~2000这个时期出现的新模型叫做WDM。
  Windows的驱动模型概念,本来是就驱动程序的行为而言的。比如WDM驱动,必须要满足提供n种被要
求的特性(如电源管理、即插即用)才被称为”WDM驱动”。如果不提供这些功能,那么统一称为NT式驱动。
同样的,WDF驱动也有它的一系列规范。
  但是本书采用简单的区分方法。将一切在Windows2000~WindowsVista下能正常运作且未调用WDF相
关的内核API函数的驱动都称为传统型驱动(包括NT式和WDM)。如果调用了WDF相关的内核API则称为WD
F驱动。
  请注意:WDF驱动是可以调用传统型驱动所调用的内核API的,WDF可以视为传统型的升级版。
  模型的发展并不是和操作系统版本的升级齐步走的,而是有一个逐渐替代的过程。比如Windows98已
经支持部分的WDM驱动程序,但是又支持一部分的VXD驱动。而到了Windows2000,则VXD这种驱动程序完
全被淘汰了。KDM则是WDM的前身。WDM是在KDM的基础上增加了一些新的特性,制定了一些新的规范而造
就的。绝大部分函数调用都是通用的。当然,Windows9x系列的内核完全不同,所以VXD与之相比,就没
有一个内核API函数是一样的。
  故而随着Windows9x的失宠,VXD难逃彻底被淘汰的命运。WindowsNT则发展成了后来的Windows版本
,KDM也变成了WDM而存在下来。当然,微软不会闲着,现在又推出了新的WDF。读者又不得不担心:本书
是用WDM写的还是用WDF写的呢?会不会刚刚学完又被淘汰呢?
  和VXD不同,从KDM到WDM再到WDF是一脉相承的,基本上KDM程序员在学习WDM时已经占尽了便宜。到
WDF也不例外,WDF与其说是新的驱动开发模型,还不如说是在已有的内核API和数据结构的基础上,又封
装出一套让使用者觉得更简单、更易用的以Wdf-开头的一组API。因此,读者大可不必担心WDF的发展会
让前面学习传统型驱动的努力付之东流。一个典型的例子是:大约在1991年到1992年间发布首个版本的
硬盘上层过滤diskperf的代码,18年过去了,今天依然可以编译并正常在最新版本的Vista上运行。
  本书对于大部分无法找到WDF实例的章节,都采用了传统型驱动进行说明。比如磁盘过滤、文件系统
过滤和网络中间层驱动。此外为了从简单入手,对于入门级的两个例子(串口和键盘)也使用了传统型
驱动。但是虚拟磁盘和虚拟网卡(第5章和第11章),使用了WDF版本的例子,请读者注意识别。

总而言之,作为一名系统程序员,你需要洞悉目标操作系统中与你的软件打交道的各个部件,也要非常清楚地知道你所依赖的开发工具是如何帮助你做到这一点的。系统程序员往往面临着比应用程序员更长的学习曲线,但是,系统程序员从编写程序中获得的乐趣也是在应用层上难以体会得到的。我相信,当你发现自己编写的软件模块已经与操作系统内核融为一体时,那一刻你的感觉一定是手心里攥着一个操作系统——操作系统尽在你的掌控中了。

   
在Windows的不同版本上开发的驱动程序“模型”(模型这个词语应该来源于单词“Mode”。在Windows
NT上,驱动程序被称为Kernel Driver
Mode驱动程序。笔者认为这个Mode是指一种驱动程序的结构和运作的规范),有过不同的名称。比如在Windows
9x上的驱动程序,都叫做VXD,而在Windows
NT上的驱动程序被称为KDM驱动程序,Windows
98~2000这个时期出现的新模型叫做WDM。
   
Windows的驱动模型概念,本来是就驱动程序的行为而言的。比如WDM驱动,必须要满足提供n种被要求的特性(如电源管理、即插即用)才被称为WDM驱动。如果不提供这些功能,那么统一称为NT式驱动。同样的,WDF驱动也有它的一系列规范。
    但是本书采用简单的区分方法。将一切在Windows 2000~Windows
Vista下能正常运作且未调用WDF相关的内核API函数的驱动都称为传统型驱动(包括NT式和WDM)。如果调用了WDF相关的内核API则称为WDF驱动。
请注意:WDF驱动是可以调用传统型驱动所调用的内核API的,WDF可以视为传统型的升级版。
   
模型的发展并不是和操作系统版本的升级齐步走的,而是有一个逐渐替代的过程。比如Windows
98已经支持部分的WDM驱动程序,但是又支持一部分的VXD驱动。而到了Windows
2000,则VXD这种驱动程序完全被淘汰了。KDM则是WDM的前身。WDM是在KDM的基础上增加了一些新的特性,制定了一些新的规范而造就的。绝大部分函数调用都是通用的。当然,Windows
9x系列的内核完全不同,所以VXD与之相比,就没有一个内核API函数是一样的。
    故而随着Windows 9x的失宠,VXD难逃彻底被淘汰的命运。Windows
NT则发展成了后来的Windows版本,KDM也变成了WDM而存在下来。当然,微软不会闲着,现在又推出了新的WDF。读者又不得不担心:本书是用WDM写的还是用WDF写的呢?会不会刚刚学完又被淘汰呢?
   
和VXD不同,从KDM到WDM再到WDF是一脉相承的,基本上KDM程序员在学习WDM时已经占尽了便宜。到WDF也不例外,WDF与其说是新的驱动开发模型,还不如说是在已有的内核API和数据结构的基础上,又封装出一套让使用者觉得更简单、更易用的以Wdf-开头的一组API。因此,读者大可不必担心WDF的发展会让前面学习传统型驱动的努力付之东流。一个典型的例子是:大约在1991年到1992年间发布首个版本的硬盘上层过滤diskperf的代码,18年过去了,今天依然可以编译并正常在最新版本的Vista上运行。
   
本书对于大部分无法找到WDF实例的章节,都采用了传统型驱动进行说明。比如磁盘过滤、文件系统过滤和网络中间层驱动。此外为了从简单入手,对于入门级的两个例子(串口和键盘)也使用了传统型驱动。但是虚拟磁盘和虚拟网卡(第5章和第11章),使用了WDF版本的例子,请读者注意识别。

【作  者】谭文;杨潇;邵坚磊等
【丛 书 名】 驱网核心技术丛书 
【出 版 社】 电子工业出版社     【书 号】 9787121087967 
【上架时间】 2009-5-25 
【出版日期】 2009 年6月 【开 本】 16开 【页 码】 522

其中WDK需要自己手动下载安装

 

为了便于Windows驱动程序的开发,Microsoft定义了一个驱动程序框架,称为WDF(Windows
Driver Foundation),其中针对内核驱动程序的部分称为KMDF(Kernel-Mode
Driver
Framework)。KMDF实际上是一个库,它封装了WDM中一些基本的代码逻辑,从而使程序员可以更加方便地编写出WDM驱动程序。KMDF可以部分地简化Windows内核驱动程序的开发任务,但是本质上它并没有降低内核驱动程序的复杂性,甚至需要程序员付出额外的学习努力。

Windows的驱动开发模型

本书适合大专院校计算机系的学生、普通Windows程序员、Windows内核程序员、信息安全行业的程序员,以及希望了解Windows系统底层知识的计算机编程爱好者使用。阅读本书,需要读者有C语言、数据结构、操作系统和计算机网络的基础知识。

   3.  开发环境

windows服务在系统启动是加载,用户需在服务控制平台开启或者关闭服务
Driver Service是服务的一个特例,遵循windows服务的协议
加载和谐在NT驱动分为四个步骤:
1.为NT驱动创建新的服务
2.开启此项服务
3.关闭此项服务
4.删除NT驱动创建的服务
以上四个步骤都是通过SCM组建的服务来实现的。

定价:69.00元

 

寒江独钓:Windows内核安全编程(china-pub到货首发)

   4.  实现方式

WDM 是 Win32设备驱动程序体系结构

张佩 马勇 董鉴源 编著

【内容简介】
本书从Windows内核编程出发,全面系统地介绍了串口、键盘、磁盘、文件系统、网络等相关的Windows内核模块的编程技术,以及基于这些技术实现的输入密码保护、防毒引擎、文件加密、网络嗅探、网络防火墙等信息安全软件的核心组件的具体编程。主要知识重点包括:Windows串口与键盘过滤驱动、Windows虚拟存储设备与存储设备过滤驱动、Windows文件系统过滤驱动、文件系统透明加密/解密驱动、Windows各类网络驱动(包括TDI过滤驱动及3类NDIS驱动),以及最新的WDF驱动开发模型。有助于读者熟悉Windows内核驱动的体系结构,并精通信息安全类的内核编程技术。本书的大部分代码具有广泛的兼容性,适合从Windows
2000一直到目前最新的Windows 7 Beta版。.

Visual Studio +
WDK(Windows Driver Kit)

WDF驱动程序包括两个类型,一个是内核级的,称为KMDF(Kernel-Mode Driver
Framework),为SYS
文件;另一个是用户级的,称为UMDF(User-Mode
Driver Framework),为DLL文件。

那么,对于系统软件程序员,“内功”是什么呢?系统软件是指操作系统本身或者依附于操作系统上为应用软件提供服务的软件。系统软件可能有机会跟硬件直接打交道,这赋予了程序员更强的控制能力,他们有机会介入操作系统的行为逻辑,甚至改变操作系统的行为特性。但随之而来的是对系统软件代码的更高要求。现代操作系统为应用软件提供了很强的容错能力,应用程序的失败通常不会波及到操作系统自身的稳定性,但操作系统对系统软件的容错能力却比较有限,毕竟系统软件运行起来之后可能被融入到操作系统的执行逻辑中成为操作系统的一部分。因此,理解和掌握操作系统的运行机制成为系统程序员编写出正确、高效的系统软件的基本前提。所谓“内功”,便着落在此。

市场价 :¥75.00
会员价

¥56.25Windows的驱动模型概念新葡京32450网址:,开发人员在具备一定的驱动概念知识后。(75折)

生产环境

从Win10开始,驱动文件包不仅需要进行扩展验证
(EV)
代码签名,还需要提交到硬件开发中心仪表盘,具体操作指南可以参考此处,你可以在该文档上找到驱动签名所需的任何内容。

 

IRP(IO请求包)用于win32和驱动程序通讯,NT内核有一个组件叫做IO管理器。IO管理器负责IRP的分发
,驱动程序里创建好设备并且创建好符号链接后,Win32就可以加载驱动了。而要让一个驱动可以处理I
RP,必需给驱动添加IRP处理例程。

这个观点既适用于应用软件程序员,也适用于系统软件程序员。对于应用软件程序员,低层的应用开发平台是支撑应用开发的基础,譬如,基于Windows
SDK来开发Windows应用程序。那么,程序员有必要理解Windows
SDK中的基本要素,诸如消息分发机制、各种图形功能等。在这种情况下,阅读一些典型的例子程序代码往往能起到快速引领入门的效果。同样地,C/C++程序员如果局限于C/C++语言本身,很难编写出高质量的实用程序。他们不仅要掌握C/C++运行库中函数和类型的用法,甚至还要理解这些函数和类型的实现机理。即使源代码层面上的库,例如STL(C++的标准模板库),也需要理解其代码实现才能灵活自如地用好这些库(比如STL中的各种容器数据结构、迭代器或算法)。

新葡京32450网址 1

相关文章

留下评论

网站地图xml地图