【Windows驱动】DDK与WDK

1.What

  DDK和WDK是Windows驱动程序的开发包,就像开发Windows应用程序,我们需要Windows的SDK一样。

2.Difference

  2000/XP/2003下,Windows采用WDM驱动模型(Windows Driver Model),对应开发包为:DDK。

  Vista及以后版本,采用了WDF驱动模型(Windows Driver Foudation),对应的开发包:WDK。

  WDK可以看做是DDK的升级版本。

3.WDM or WDF

  自Windows 2000开始,开发驱动程序是以WDM为基础,开发难度比较大。为改善这种局面,微软推出了新的驱动开发模型,以WDM为基础进行了建模和封装,显著特点是降低了开发难度。

4.New Features in WDF

  1、将原来普通程序设计中基于对象的技术应用到了驱动开发中。WDM中虽也有对象模型,但与真正的基于对象技术根本就不是一回事。为了实现基于对象的技术,微软精心设计了对象模型并进行了封装。属性、方法、事件等等“一个都不能少”。

  

2、无论内核模式的驱动程序或者用户模式的驱动程序,都采用同一套对象模型构建,采用同一个基础承载。这个基础就是WDF。WDF虽然已经是经过封装和定义的对象模型,但对内核模式和用户模式对象来说,WDF又是两者的父对象。换言之两者都是继承了WDF才得到的,或者都是从WDF派生而来的。相对于内核模式,派生出的对象称为“KMD框架”即KMDF;相对于用户模式,派生出的模型称为“UMD框架”即UMDF。无论何种模式的框架,其内部封装的方法、执行的行为其实还是用WDM完成的。

3、更重要的,也是微软反复炫耀的是封装了驱动程序中的某些共同行为:例如即插即用和电源管理就属于这种共同行为。因为大多数驱动程序中都需要处理即插即用和电源管理问题,据说这大概要上千行的代码,况且,没有相当水平还不一定能处理好。为了一劳永逸,WDF干脆将即插即用和电源管理封装了进了对象之内,一举成了对象的缺省(默认)行为。

4、改变了操作系统内核与驱动程序之间的关系,WDM驱动程序中,一方面要处理硬件,另一方面要处理驱动程序与操作系统内核的交互。现在WDF则将驱动程序与操作系统内核之间进行了分离,驱动程序与操作系统交互工作交给框架内封装的方法(函数)完成,这样驱动开发者只需专注处理硬件的行为即可。这不仅避免了顾此失彼两面不周的弊端,也由于双方的分离,对操作系统内的某些改动,硬件制造商配套驱动程序的开发都有莫大的好处。

5、两种模式的驱动程序(KMDF、UMDF)都使用同一环境进行构建,这一环境称为WDK。即KMDF,UMDF的开发环境为WDK。 把测试套件(test suites)集成进来,DDK 就成了WDK。WDK是针对微软操作系统系列的驱动器集成开发系统。它组合了Windows DDK和Hardware Compatibility Test (HCT) kits(硬件兼容性测试工具),同时提供了微软内部用来测试Windows操作系统稳定性和可靠性的测试套件。

6、虽然经过封装并引入基于对象的技术,所开发的驱动程序在执行效率上并不比原来逊色。WDF和WDM的关系有点类似于MFC和Windows SDK的关系。WDF只是在WDM上面加了一层,来简化driver的开发,特别是PNP,power和IO
cancellation 等几个方面有很大改进。

5.Codes

  Windows Driver Kit (WDK) 8.1 Samples

时间: 2025-01-08 00:46:33

【Windows驱动】DDK与WDK的相关文章

Windows驱动开发(中间层)

Windows驱动开发 一.前言 依据<Windows内核安全与驱动开发>及MSDN等网络质料进行学习开发. 二.初步环境 1.下载安装WDK7.1.0(WinDDK\7600.16385.1) 地址:https://msdn.microsoft.com/en-us/windows/hardware/hh852365 2.下载InstDrv软件(用于安装.启动.停止.卸载驱动) 界面如下: 注:srvinstw.exe 也可以安装.卸载sys文件,但需要手动开启.关闭,即在cmd命令窗口下执行

windows驱动开发推荐书籍

[作者] 猪头三 个人网站 :http://www.x86asm.com/ [序言] 很多人都对驱动开发有兴趣,但往往找不到正确的学习方式.当然这跟驱动开发的本土化资料少有关系.大多学的驱动开发资料都以英文为主,这样让很多驱动初学者很头疼.本人从事驱动开发时间不长也不短,大概也就3~4年时间.大多数人都认为会驱动开发的都是牛人,高手之类的.其实高手,牛人不是这样定义的.我们在学习驱动开发之前,一定要明白一个道理:术业有专攻,不要盲目跟风. [贡献者] 1> defddr 看雪学院 2> Stu

Windows驱动开发(一)

笔者学习驱动编程是从两本书入门的.它们分别是<寒江独钓--内核安全编程>和<Windows驱动开发技术详解>.两本书分别从不同的角度介绍了驱动程序的制作方法. 在我理解,驱动程序可分为两类三种: 第一类:传统型驱动 传统型驱动的特点就是所有的IRP都需要自己去处理,自己实现针对不同IRP的派发函数.其可以分为以下两种: 1. Nt式驱动:此驱动通过注册系统服务来加载,并且不支持即插即用功能(即没有处理IRP_MJ_PNP这个IRP). 2. WDM驱动:此驱动不通过注册系统服务来加

【转】Windows驱动开发如何入门

1.http://blog.csdn.net/charlessimonyi/article/details/50904854 (2016年03月16日 14:55:36) 2. 搞Windows驱动开发是一件痛苦的事情,特别是初学Windows驱动开发.有的人觉得Windows驱动开发就是把开发包WDK下载下来,然后只要掌握了C/C++语言,接下来无非就是类库调来调去,像调用MFC.QT之类的库那样,看着书和MSDN上的文档来就行了.等真正接触以后才发现根本不是那么一回事,痛苦源于以下几点: 痛

Windows 驱动模型的发展历史

引用 http://blog.chinaunix.net/uid-223060-id-2127514.html Windows 驱动模型的发展历史 分类: WINDOWS 2009-12-28 10:56:28 1.最先开始使用的是VXD(早废弃了) 2.自Windows 2000开始,开发驱动程序必以WDM为基础的,意为Windows Driver Model,是一个标准的驱动模型,意思是说你可以在这个模型上有所改动,WDM是Vista以前平台的驱动模型.(vista支持大部分的WDM驱动)

ddk,wdk版本

2600 -- XpDDK 2600.1106 -- XP sp1 3790 -- 2003 DDK 6000 -- WDK Windows 2003 SP1 DDK 支持以下Windows版本驱动程序开发 ? Windows Server 2003, SP1 (Standard, Enterprise, and DataCenter) ? Windows XP Professional and Home Edition, SP1 ? Windows 2000 (Professional, Se

(转)Windows驱动编程基础教程

版权声明 本书是免费电子书. 作者保留一切权利.但在保证本书完整性(包括版权声明.前言.正文内容.后记.以及作者的信息),并不增删.改变其中任何文字内容的前提下,欢迎任何读者 以任何形式(包括各种格式的文档)复制和转载本书.同时不限制利用此书赢利的行为(如收费注册下载,或者出售光盘或打印版本).不满足此前提的任何转载. 复制.赢利行为则是侵犯版权的行为. 发现本书的错漏之处,请联系作者.请不要修改本文中任何内容,不经过作者的同意发布修改后的版本. 作者信息 作者网名楚狂人.真名谭文.在上海从事W

Windows驱动开发(二)

本节主要介绍驱动开发的一些基础知识. 1. 驱动程序的基本组成 1.1. 最经常见到的数据结构 a. DRIVER_OBJECT驱动对象 [cpp] view plaincopy // WDK中对驱动对象的定义 // 每个驱动程序都会有一个唯一的驱动对象与之对应 // 它是在驱动加载时被内核对象管理程序创建的 typedef struct _DRIVER_OBJECT { CSHORT Type; CSHORT Size; // // The following links all of the

Windows驱动开发基础(八)内存管理

Windows驱动开发基础系列,转载请标明出处:http://blog.csdn.net/ikerpeng/article/details/38826159 就32位的计算机来说,他有4G的真实的物理内存.但是这样是不够的,于是引入了虚拟内存的概念.使得每一个进程都有4G的虚拟内存. 虚拟内存实际上就是采用了一种映射的方式.4G的内存实际上被分页.一般来说一个页的大小是4K.也是说它被分为了1M个页.在这么多的页里面,有一部分是对应于物理内存的(可以是多对一的):有一部分是对应于磁盘上的空间,但