Windows 2000内核模式驱动程序设计
时间:05-15
来源:互联网
点击:
,并且初始化请求队列,获得完成DMA传输的DMA适配器对象,挂接中断处理对象等功能。
在AddDevice函数调用IoCreateDevice函数中创建一个设备对象,并通过调用IoAttachDe-viceToDeviceStack把它联接到以PDO为底的设备堆栈中。
在PnP例程中对IRP-MN-START-DEVICE的处理代码如下。
在处理中断资源时给出的IoConnectInterrupt函数挂接了中断处理函数AtmHandlerInter-rupt。
其他函数实现不再一一介绍。在具体实现的数据的传输、工作模式的设置等功能与所使用的硬件的寄存器的工作模式有关。在设计的过程中,应该注意每个例程的运行中断级。在处理I/O请求时,应根据硬件的特性和API的要求决定IRP队列的方式及取消IRP的例程的编写。
在编写驱动程序前,应该尽量了解硬件本身。这包括硬件的总线结构、控制寄存器的访问方式、中断行为、数据传输机制和设备内存等。
5小结
驱动程序的编写是较复杂的过程,因驱动程序是操作系统信任的组件,任何细小的错误可能引起操作系统的崩溃,在驱动程序编写过程中,应该反复测试所写的代码,并遵循驱动程序的规则。总之,开发驱动程序的工作与开发Windows应用程序开发是完全不同的,且与驱动程序紧密相连的硬件都有自己的硬件和软件规范,本文从一般驱动程序概念出发,给出了驱动程序的总体描述和组成部分,并以部分例程代码为例给出了驱动程序的基本组成结构和注意问题。要想能够很好掌握驱动程序开发,最根本是阅读DDK文档并实践编写驱动程序。
- MCS-51系列单片机结构化程序设计探讨(04-20)
- 状态机在单片机程序设计中的应用(05-01)
- ARM处理器的位置无关程序设计(09-19)
- 基于分布式处理技术的物联网数据库设计(05-21)
- 模块化管理和设计(12-01)
- 马踏棋盘的实现(12-01)