windows设备驱动开发-总结篇

随着USB系列、NDIS系列和WDM、WDF等框架的完成,整个开发算是已经完全讲解完了,下面就是整体的总结和一些问题的回答:

windows 驱动使用哪种开发框架

如果看windows 驱动开发的整个体系,就会发现它很复杂,也很容易让人迷惑,所以下面会讲解一下:

如果需要开发windows 设备驱动,那么首先需要解决的是开发环境,目前的主流平台是 Microsoft Visual Studio系列,它从2012版本开始就将驱动开发整合到IDE环境中了,所以用最好使用比较新的版本+WDK版本的集合:

VS版本下载: VS2022社区版

SDK版本下载: windows SDK

WDK下载: WDK

更为具体的安装和描述可以参考: MSDN: 驱动开发环境搭建

WDM和WDF是两套框架下的一套东西,WDM是整个windows 内核架构的基石,WDF则是利用这个基石封装的面向对象的开发框架,使用哪种开发框架本身不会影响驱动在内核中的实例化。

如果需要更细微的粒度控制可以选择WDM,但在工程师们不断地努力下,WDF的细节正在变得越来越丰富,故相对WDM大量的开发工作来说WDF更加合适。

驱动的调试技术

当Microsoft Visual Studio将WDK集成后,windbg也被集成到其中,故此时调试已经相对简单了,不过,调试部分后续还是单独做一个系列吧。

windows 驱动开发和设备驱动开发

很多人可能没有注意到,windows设备驱动开发和windows驱动开发并不是一回事,设备驱动更加偏向于外设,windows可能是目前支持外设最为广泛和灵活的操作系统之一,这得益于它强大的驱动程序框架,不但让驱动开发变得更加容易,还能方便的进行拓展。

将外设纳入硬件体系,这其实是Linux更加擅长的事情,但是Linux的开发难度和使用难度是一个巨大的门槛,而windows在更大时间和空间尺度上完美的解决了这个问题!2000系统支持的硬件到了win11仍然可以支持,时间可能已经过去了二十年,并在未来二十年内也是如此。

这得益于windows内核精巧的设计,win 10之后的内核是对NT内核的改写,相当于重新用新技术将内核编写了一次,但它在二进制上看起来和二十年前没什么不同,除了更高的并发数目、更大的内存使用、更快的运算。

所以在内核开发中,驱动开发和设备驱动开发完全是两个概念,非设备驱动程序是为软件使用的,而设备驱动则是为设备准备的,所以二者的侧重点是不一样的。

设备开发需要让设备的性能尽可能的发挥出来,而驱动则是泛指在内核中运行的任务,而后者更加接近操作系统的运行本质。

内核的两个主要功能: 充分发挥外设的性能和向应用层提供服务,例如一个U盘,它的性能就是USB设备驱动程序+USB总线驱动决定的,在windows 7上可能只能达到2.0的速度,但是同样的引荐下换成支持USB 3.0扩展驱动的软件,速度就能达到3.0的速度,硬件的设计会存在冗余和兼容的情况,此时软件系统优劣就是是否能将它的性能发挥出来。

计算机的性能和日常认知的不一样,例如,即使在xp的时候,PCIE也有5Gb/s的速度,内部总线的速度就更不用说了,DDR3-1600MHz意味着12GB/s,到PCI的时候降低一个数量级,到硬盘又降低一个数量级,已经是100MB/s了,到局域网也是这个速度。

在非设备的驱动程序中,目前最常见的就是杀毒软件,集中于文件、网络、硬盘这些模块,这其实并不奇怪,一般很少有需要程序员去处理内核本身的流程,那需要极其专业的人员才能胜任。

后续的创作

我其实没想到我可以完整的将这几个系列写完,它们的内容来源于MSDN和对英文原文的理解,但很多人看完估计很难知道怎么进行开发,于是后续我想着是两个方向。

第一个方向是对windows C++编程技术的讲解没这部分其实类似于基础知识吧。

另外一个则是对一些实际项目的分享。目前正在准备游戏辅助、USB驱动、网卡驱动三个系列的分享,另外还有一些自己的DIY的小硬件项目。

另外我会持续对这几个系列的文章进行校对和增删改。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值