见闻百科,有趣实用的生活常识!

手机版

有趣实用的生活常识!

当前位置:首页 > 办公百科

如何进行windows驱动程序开发

时间:2022-04-03人气:作者: 未知

如何进行windows驱动程序开发

  在国内使用Windows操作系统的电脑占绝大多数,Windows驱动和内核程序开发自从Windows诞生的时刻起,就保持着神秘的面纱,一直被认为是开发领域中比较高深的技术。它需要程序员对Windows操作系统底层有很深刻的理解,同时又需要有丰富的调试经验。但同时,计算机很多领域又需要大量的驱动和内核开发人员,如PCI、USB设备的驱动程序开发。同时,随着计算机病毒和木马的广泛传播,大量的安全方面软件需要内核开发这方面的技术,如进程和线程的监视、文件和注册表的过滤,以及诸如此类的防范Rootkit技术。由于驱动和内核方面人才的短缺,它也一直被别人看成是待遇不错的黄金职业。

  windows驱动程序可分为两类三种:


  第一类:传统型驱动


  传统型驱动的特点就是所有的IRP都需要自己去处理,自己实现针对不同IRP的派发函数。其可以分为以下两种:


  1.Nt式驱动:此驱动通过注册系统服务来加载,并且不支持即插即用功能(即没有处理IRP_MJ_PNP这个IRP)。


  2.WDM驱动:此驱动不通过注册系统服务来加载,需要自己编写inf文件。同时,它与NT式驱动相比最大的特点就是支持即插即用功能。


  第二类:微过滤驱动


  微过滤驱动是微软推出的一个驱动框架。它将驱动程序内创建设备对象之类的操作全部封装了,让用户无需理会此部分繁杂的工作。用户只需要针对不同的IRP处理好他们响应的前-后操作还有用户态与内核态的通信即可,即可以理解为微过滤驱动对IRP的处理类似于用户态的API HOOK。下面一品威客网给您介绍windows驱动程序开发的步骤流程,希望对您有所帮助。


  1、理解驱动程序和操作系统的基础知识


  开始设计驱动程序之前,应该理解驱动程序在Windows操作系统中的基本工作原理。了解这些基本原理可以帮助开发人员作出正确的开发决定,选择正确的开发流程。


  2、弄清楚与具体设备相关的驱动程序需求


  每个Windows设备类都有具体的软硬件需求。设备和驱动程序应该遵循这些需求,以便能够与其它系统组件配合工作。在软硬件开发过程中,理解并遵循这些需求可以节约开发时间和资金投入。


  3、做出各种驱动程序开发决定


  在编写代码之前,需要作出一些基本的驱动程序设计决定。比如,决定驱动程序要在哪些Windows操作系统和硬件平台上运行,是否可以通过修改已有的示例驱动程序或以前的驱动程序达到目标,避免从零开始。


  4、编译、测试及调试驱动程序


  编译驱动程序与编译用户模式的应用程序并不相同。WDK文档给出了使用"free"和"checked"操作系统编译的技巧,以及配置驱动程序编译环境的提示。需要对尽可能多的硬件配置反复进行测试和调试,以确保驱动程序能够正确地工作。


  5、提供驱动程序安装包


  一个驱动程序必须安装哪些东西,这与驱动程序和设备的类型相关。WDK文档列出了必须提供的设备安装组件,以及设备安装过程中Windows所期望提供的东西。


  6、发布驱动程序


  这是驱动程序开发的最后一步。如果驱动程序符合微软Windows程序的质量标准,那么可以通过微软的Windows更新程序将其发布。


  驱动开发的主要工具:DDK(Device Development Kit),WinDriver,DriverStudio,NIVISA。这几种开发工具各有优缺点。用WinDriver和DriverStudio开发驱动比DDK简单容易上手,但WinDriver开发驱动没法脱离WinDriver环境不好发布,所以还是用DriverStudio比较好。而NI-VISA主要用于仪器驱动程序开发,在仪器控制方面用得较多。需要指出的是,不管哪种开发方式,都离不开VC++开发环境。