wdm驱动程序开发文档

wdm驱动程序开发文档

ID:34577807

大小:264.09 KB

页数:21页

时间:2019-03-08

wdm驱动程序开发文档_第1页
wdm驱动程序开发文档_第2页
wdm驱动程序开发文档_第3页
wdm驱动程序开发文档_第4页
wdm驱动程序开发文档_第5页
资源描述:

《wdm驱动程序开发文档》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、WDM驱动程序开发文档WDM(WindowsDriverMode)是MS提供的98和NT5.0下的通用的驱动程序模型。相比起以前的KDM和VXD来说,它的性能更高、系统之间移植更加方便。所以,随着系统的升级(指MS的操作系统),WDM已经逐步取代KDM和VXD,成为MS系统下驱动程序开发的主流。(关于Windows下的驱动程序编写,查看参考文献1)第一部分从操作系统看驱动程序WindowsNT的系统结构决定了NT下访问设备的特殊性。NT是建立在Mach和Vax思想上的一种客户/服务器模型操作系统,由一个特权执行体以及一系列被称为保护子系统的非特权服务器组成。整个操作系统被分为用户态模式和核心

2、态模式。所谓特权,是指处理器的操作方式,大多数的处理器都有一种甚至若干种特权方式。在特权方式方式下,所有机器指令都可执行并且系统内存可存取。在非特权方式方式下,某些机器指令不能执行并且系统内存不可存取。在WindowsNT下,核心态就是指处于特权处理器方式下,而用户态总处于非特权处理器方式。核心态模式又被称为NT执行体,包括了系统服务和硬件描述层(HAL),它们运行于CPU的特权层Ring0(在驱动程序内部,在不同部分还分为不同权限层)。系统服务包含了一个操作系统的所有应有服务,文件系统,进程控制,内存管理,设备管理等等。NT中除了微内核外,另外还包含了一些独特的部分,如对象管理器,配置管理

3、器,执行体支持,本地过程调用,安全监视器,所有这些都建立在HAL之上。IO管理器实现对设备的管理,包含了文件系统,中间介质和设备驱动。通过HAL,NT可以防止内核和NT执行体的其它部分受硬件平台不同的影响。另外NT还将网络管理器加入了核心态模式。用户态模式包括了一些保护子系统,如OS/2子系统,POSIX子系统,安全子系统,当然还有最常用的Win32子系统,NT都称之为服务器。它们运行于CPU的用户层Ring3,建立在服务器上的各类应用程序被称为客户。从上图中,我们可以把和驱动程序相关的部分提取出来,就得到了下面简化的系统结构:图二:WIN2000的系统结构从这里我们可以看出驱动程序要处理的

4、就是从IOManager发送过来的IRP(IORequestPacker),根据不同的IRQ作出不同的相应(或者是通过调用系统提供的函数来读写端口),比方说,我们在最上层调用函数::ReadFile,系统就会发送一个IRP_MJ_READ给驱动程序。从这一点我们可以看出:驱动程序本质上可以看作是工作在系统底层的一个DLL。然后我们将要描述一个操作的典型过程。I/O管理器的主要工作是接收I/O请求(通常来自于用户模式的应用程序),创建I/O请求包,将IRP传递给合适的NT驱动。并且跟踪它们直到完成。并且为每个I/O操作的原始请求者返回状态。I/O管理器使用IRP和NT驱动通讯,并且允许NT驱动

5、互相之间通讯。要注意的是一些IRP将传递给不止一个NT驱动。例如,在磁盘中打开文件这个请求将将手先传到文件系统驱动,经过中间介质的镜像驱动最终传到物理磁盘驱动。因此每一个IRP有一个固定的部分,还有一个或多个I/O的位置栈。在固定的部分,I/O管理器保持原始请求信息,例如调用者参数,关于哪一个文件打开的设备对象地址,等等。另外在固定的部分还包含I/O状态块,其中包含了请求操作的驱动信息。在高级驱动的I/O本地栈中,I/O管理器设置特殊的参数。I/O管理器提供异步I/O,这样IRP的请求者能够继续执行,而不是等待IRP完成。NT驱动没有必要按照它们传递给I/O管理器的顺序处理I/O请求。I/O

6、管理器或高级驱动在接收时可以重新排列I/O请求或将大数据的传输请求分离为小的传输请求。于是我们就得到了下面的驱动程序处理IRQ的基本框架:”图三:IRP处理的典型流程NT保护子系统,例如WIN32子系统,通过I/O系统服务传递I/O请求到相应的核心态子系统。如上图所示。通过NT的I/O管理器提供的文件对象,子系统可以存取NT驱动设备或储存设备。在NT系统中,所有驱动对象以符号链接表示。1.子系统调用NT的IO系统服务打开命名文件。2.NT的IO管理器调用对象管理器,查询命名文件,并且帮助解决文件对象的符号连接。同时调用安全参照监视器,检查子系统是否具备打开文件句柄的正确权限。3.如果NT文件

7、系统不认识文件对象IO管理器挂起请求。调用多个文件系统直到识别出文件对象才继续请求。4.IO管理器负责为打开的请求分配内存和初始化IRP。对于NT驱动,打开请求等同于创建请求。5.IO管理器调用文件系统驱动,将IRP传递给它们。文件系统存取它们的IRP中本地IO栈,决定必须进行哪一种操作。检查参数,确定请求文件是否在缓存中。如果不是,设置下一个IRP中驱动的IO栈。6.无论是驱动处理IRP还是完成IO请求操作

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。