1.首先,先从基础的东西说起,开发WINDOWS下的驱动程序,需要一个专门的开发包,如:开发JAVA程序,我们可能需要一个JDK,开发WINDOWS应用程序,我们需要WINDOWS的SDK,现在开发WINDOWS下的驱动程序,我们需要一个DDK/WDK。

  2.DDK(Driver Developer Kit)和WDK(Windows Driver Kit)的区别:

  这个要说说驱动相关的一些历史:

  1).95/98/ME下,驱动模型为:Vxd,相关资料可以看《编程高手箴言》的前几个章节,里面有很详细的介绍,虽然这个东西已经过时,但大概看看还是会增长见识的。

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

WDM驱动无非是微软在NT式驱动之上进行了扩充,过滤驱动也不例外 。

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

其实WDK可以看做是DDK的升级版本,现在一般的WDK是包含以前DDK相关的功能,现在XP下也可以用WDK开发驱动,WDK能编译出2000-2008的各种驱动。

  3.Vxd驱动文件扩展名为:.vxd。

     WDM和WDF驱动文件扩展名为:.sys。

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

Windows设备驱动程序,过去是WDM(Windows Driver Model)框架,编程复杂,初学者难以掌握其编程要领。为了解决这一问题,微软对WDM驱动程序的架构做了改进,形成了全新的WDF(Windows Driver Foundation)框架结构。它提供了面向对象和事件驱动的驱动程序开发框架,大大降低了开发难度。从现在开始,掌握Windows设备驱动程序的开发人员,由过去的“专业”人士,将变为“普通”大众。
 WDF驱动程序包括两个类型,一个是内核级的,称为KMDF(Kernel-Mode Driver Framework),为SYS文件;另一个是用户级的,称为UMDF(User-Mode Driver Framework),为DLL文件。

5、

ddk 和wdk

ddk是基于wdm驱动模型的,而wdk是基于WDF驱动模型的,wdm驱动模型和wdf驱动模型的最大的区别是:

1)wdf驱动框架对WDM进行了一次封装,WDF框架就好像C++中的基类一样,且这个基类中的model,IO model ,pnp和电源管理模型;且提供了一些与操作系统相关的处理函数,这些函数好像C++中的虚函数一样,WDF驱动中能够对这些函数进行override;特别是Pnp管理和电源管理!基本上都由WDF框架做了,而WDF的功能驱动几乎不要对它进行特殊的处理;

2)WDF驱动模型 与WDM驱动模型的另外一个主要区别是:

WDF 驱动采用队列进行IO处理,而WDM中将所有的IO操作都用默认的队列进行处理,如果要进行IRp同步,必须使用StartIO;

3)WDF是面向对象的,而WDM是面向过程的,WDF提供对象的封装,如将IRP封装成WDFREQUEST,对象提供方法和Event。

5)usb设备的读写;

当应用程序使用ReadFile或WriteFile进行读写时,首先将

UsbBuildInterruptOrBulkTransferRequest将构建urb请求,然后通过IoCallDriver发送给底层usb 总线驱动;

对于WDF来说,WdfUsbTargetPipeFormatRequestForRead 格式化读请求,然后使用WdfRequestSend  发送给底层Usb总线驱动;

对WDM和WDF的usb的读写都可以设置完成例程;

windows 驱动开发 DDK与WDK WDM的区别相关推荐

  1. 驱动开发DDK与WDK WDM的区别

    转自: http://www.cnblogs.com/hyddd/archive/2009/03/15/1412684.html 最近尝试去了解WINDOWS下的驱动开发,现在总结一下最近看到的资料. ...

  2. windows xp 驱动开发(三)DDK与WDK WDM的区别

    转自: http://www.cnblogs.com/hyddd/archive/2009/03/15/1412684.html 最近尝试去了解WINDOWS下的驱动开发,现在总结一下最近看到的资料. ...

  3. windows驱动开发5:WDK Demo:avstream avscamera

    1.相关信息 为了验证虚拟摄像头驱动,通过熟悉wdk本身的虚拟摄像头avscamera demo进行学习. wdk demo下载地址:https://github.com/microsoft/Wind ...

  4. Windows驱动开发(二)WDM/WDF的IOControl

    上一章大概介绍了WDM/WDF的驱动模型, 链接:https://blog.csdn.net/o0xwh_93150o/article/details/104213348 这一章我们主要来看一下驱动程 ...

  5. Windows驱动开发VXD/WDM/WDF/DDK/WDK的联系和区别

    背景介绍 首先,先从基础的东西说起,做任何程序的开发,你都需要一个配套的开发套件,专业术语叫做SDK(Software Development Kit,软件开发套件).比如:开发JAVA程序,我们可能 ...

  6. 客户端开发 Windows驱动开发(1)SDK WDK DDK WDM的关系

    尽管Windows平台的SDK.DDK与WDK都包含了WinDBG工具包,但是用户获取WinDBG工具包的最主要方式还是从微软网站自由下载,因为这样获得的版本最新. 最近因为工作需要,尝试去了解WIN ...

  7. Windows驱动开发WDM (1) - 基本结构

    陆陆续续做过一些驱动的开发,但是一直以来都没有系统的学习过.这次重新阅读<windows驱动开发技术详解>(张帆,史彩成等编著),写博客记录一下,用以加深自己对驱动的理解. 驱动对象(DR ...

  8. [Windows驱动开发](一)序言

    笔者学习驱动编程是从两本书入门的.它们分别是<寒江独钓--内核安全编程>和<Windows驱动开发技术详解>.两本书分别从不同的角度介绍了驱动程序的制作方法. 在我理解,驱动程 ...

  9. 《Windows驱动开发技术详解》学习笔记

    Abstract   如果推荐 Windows 驱动开发的入门书,我强烈推荐<Windows驱动开发技术详解>.但是由于成书的时间较早,该书中提到的很多工具和环境都已不可用或找不到,而本文 ...

  10. 转:Windows驱动开发(中间层)

    Windows驱动开发(中间层) - 慧由心生 - 博客园Windows驱动开发一.前言依据<Windows内核安全与驱动开发>及MSDN等网络质料进行学习开发.二.初步环境1.下载安装W ...

最新文章

  1. ASP.NET实现用户在线检测的类源码[转收藏]
  2. gis python 桌面,arc-utils-用于Esri ArcGIS桌面软件的Python实用程序-Grant Herbert
  3. 无聊的三月终于过去了
  4. 解决能上QQ不能上网页的批处理〖罗斌原创〗
  5. Tricks(二十三)—— Python 实现树这种数据结构
  6. java删除目录下符合条件的文件
  7. 开始使用Mac OS X
  8. java获取本机的ip地址
  9. 马哥教育的python课程到底好不好_马哥教育的网络授课怎么样?
  10. 360手机怎样更新系统版本android,360手机N5迎来安卓7.0稳定版升级
  11. 什么是ts(typeScript)
  12. 无人驾驶实践进阶——定位
  13. 帮助睡眠的产品有哪些?效果最好的睡眠产品推荐
  14. MSDN无法打开的解决办法
  15. 开关电源雷击浪涌整改_一种防雷击浪涌的开关电源电路设计
  16. iFixit:苹果AirTag拆解,内部结构紧凑
  17. linux pjsip 编译_PjSip编译 for android
  18. linux 查看即时网速 /流量
  19. ArcGIS中CGCS2000投影坐标数据转CGCS2000地理坐标数据
  20. Linux vi文本编辑器大总结

热门文章

  1. 哄女票超简单程序代码(日常小惊喜)
  2. 最简单代码,适合没学编程的人玩
  3. 课题申报书范文_课题优秀申报书 课题申报书范例
  4. 创新创业技术路线怎么写_2016如何撰写创新创业项目申请书.ppt
  5. 郑州市城市建成区20年时空变化特征提取与分析
  6. windows下的dig 命令和nslookup的用法及详例
  7. 【MySQL】简单易学的MySQL安装教程
  8. eNSP常用命令 华为模拟器eNSP常用命令
  9. xcode object c 函数注释
  10. MATLAB--基本绘图函数