下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于Windows2000开发WDM设备驱动程序的方法
摘要:本文介绍了Windows2000WDM驱动程序结构及其原理,给出一个驱动程序的例子关键词:WDM驱动程序1.概述引入了全新的WDM(Win32DriverModel)的驱动程序架构,说是新技术,其实早在1997年Microsoft就提出了该项技术并在Windows98中得到了充分的应用,换句话说,Windows98也支持WDM。这样WDM就成为了一个跨平台的驱动程序模型不仅如此WDM驱动程序还可以在不修改源代码的情况下经过重新编译后在非Intel平台上运行。2.WDM设备驱动程序的特点和原理2.1通用驱动程序对基本上一样的硬件,因为他们共享一个总线或完成类似的任务,设备驱动程序可以使用这些标准的驱动程序功能,使公共总线的共享容易,且更容易写出新的驱动程序,总线驱动程序,如USB、1394,和类驱动程序。(1)Win32程序接口:可以使用Win32函数像访问文件那样访问设备CreateFile()、Closehandle()、ReadFile()、WriteFile()、DeviceIoControl()用于发出特殊请求,可发送数据给驱动和从驱动得到数据,IOCTL代码可以是预先定义的也可是自己定义的。(2)创建设备大多数WDM设备对象都是在PnP管理器中调用AddDevice入口时创建,这个PnP例程在插入新设备和安装Inf文件时被调用,此后一系列的PnPIRP被发送到驱动程序,指示设备应如何启动和查询它的功能2.2WDM-的工作原理WDM是在NT4.0驱动程序结构上发展起来的,所以它与NT4.0驱动程序极为相似,但是它却有了本质上的提高,比如它支持USB、IEEE1394、ACPI等全新的硬件标准。虽然Windows98与Windows2000都支持WDM,可是并不意味着Windows98下的VxD可以在Windows2000下运行,而NT下的WDM却可以在Windows98下运行。不过原先准备在两个平台上同时运行需要编写两个截然不同的驱动程序,而现在只需要编写一个WDM驱动程序就可以了。同NT4.0驱动程序一样,WDM驱动程序也是分层的,即不同层上的驱动程序有着不同的优先权,而Windows9x下的VxD则没有此结构。另外,WDM还引入了功能设备对象FDO(functionaldeviceobject)与物理设备对象PDO(physicaldeviceobject)两个新概念来描述硬件,一个PDO代表一个真实硬件,在驱动程序看来则是一个FDO。
另外值得注意的是,一个硬件只允许有一个PDO,但却可以拥有多个FDO,而在驱动程序中我们不是直接操作硬件而是操作相应的PDO与FDO。在Ring-3与Ring-0通讯方面,操作系统为每一个用户请求打包成一个IRP(IORequestPacket)结构,将其发送至驱动程序并通过识别IRP中的PDO来识别是发送给哪一个设备的。另外,在驱动程序的加载方面WDM既不靠驱动程序名称也不靠一个具有某种特殊意义的ID,而是依靠一个128位的GUID来识别驱动程序(Windows下许多东西都是靠此进行识别的)。2.3IRP处理I/O请求包IRP是驱动程序操作的中心,IRP是一个内核对象,它是预先定义好的数据结构,带有一组对它进行操作的I/O管理器例程,I/O管理器接受一个I/O请求,然后将它传送到合适的驱动程序栈中的最高驱动程序之前,分配并处始化一个IRP,每个I/O请求有主功能代码2.4IRP参数比如一个写的I/O请求转换成一个IRP时,I/O管理器填写主要的IRP首部,并构造第一个个栈单元,对写请求来讲,首部包含用户缓冲区信息,而栈单元则包含写的具体参数。如果调用另一个驱动则必须创建下一个栈单元。一个IRP到栈顶时,使用PIO_STACK_LOCATIONIoGetCurrentIrpStackLocation(
INPIRPIrp
);IoGetCurrentIrpStackLocationreturnsapointertothecaller'sstacklocationinthegivenIRP。如决定需要把这个IRP沿设备栈向下传递,使用IoCopyCurrentIrpStackLocationToNextorIoSkipCurrentIrpStackLocation简单的将内容复制到下一个单元,如果要更改下一个栈单元,要使用LOCATIONIoGetNextIrpStackLocation(INPIRPIrp);IoGetNextIrpStackLocationgivesahigherleveldriveraccesstothenext-lowerdriver'sI/OstacklocationinanIRPsothecallercansetitupforthelowerdriver.可使用IoCallDriver调用下一个驱动程序,当最低一层的驱动处理玩后调用IoCompleteRequest,IRP再向上传递返回用户,当IRP向上传递时也可以每个驱动有机会再处理它,每个驱动要设置IoSetCompletionRoutine挂接一个例程,一个驱动不一定要沿着设备栈向下传递IRP,如果自己能处理就就使用IoCompleteRequest完成IrP2.5设备接口用户态使用Win32CreateFile访问驱动程序,dwShareMode为0时来请求独占内核对象在设备对象DEVICE_OBJECT结构中存储设备的信息,对于与设备的每个交互,相关的DEVICE_OBJECT被传递给驱动的回调例程。,但是开发者可以扩展设备结构,称为设备扩展在PnPIRP中我们加载设备NTSTATUSWdm1AddDevice(
INPDRIVER_OBJECTDriverObject,指向驱动程序的指针
INPDEVICE_OBJECTpdo指向物理设备的指针){
DebugPrint("AddDevice");status=IoCreateDevice(DriverObject,创建设备sizeof(WDM1_DEVICE_EXTENSION),NULL,
//NoNameFILE_DEVICE_UNKNOWN,0,FALSE,
//Notexclusive,TRUE为独占&fdo返回的新设备对象);
if(!NT_SUCCESS(status)returnstatus;IoAttachDeviceToDeviceStack(fdo,pdo);与设备栈挂接2.6删除设备NTSTATUSWdm1Pnp(
INPDEVICE_OBJECTfdo,
INPIRPIrp)PIO_STACK_LOCATIONIrpStack=IoGetCurrentIrpStackLocation(Irp);
ULONGMinorFunction=IrpStack->MinorFunction;
if(MinorFunction==IRP_MN_REMOVE_DEVICE)
{DebugPrint("PnPRemoveDevice");
//disabledeviceinterfaceIoSetDeviceInterfaceState(&dx->ifSymLinkName,FALSE);RtlFreeUnicodeString(&dx->ifSymLinkName);//unattachfromstack从设备栈脱离if(dx->NextStackDevice)IoDetachDevice(dx->NextStackDevice);//deleteourfdo删除设备IoDeleteDevice(fdo);
}CreateFileIRP_MJ_CreateWriteFileMJ_WRITECloseHandleMJ_CLOSE
DeviceIoControlMJ_DEVICEIOCONTROLReadFileMJ_CLOSE所有的分发例程都有相同的函数原型,均需传递一个设备对象的指针和IRP,IRP由IRP首部和一系列的栈单元组成,每个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教育设施改造投标说明书
- 矿山防蚊施工协议
- 企业购房二手房交易合同范本
- 医疗行业安全监控与预警
- 花卉植物租赁协议模板
- 外语培训中心讲师聘用合同
- 山东省烟台市芝罘区烟台二中2025届高一物理第一学期期中综合测试试题含解析
- 2025届辽宁省朝阳市建平县二中高三物理第一学期期中复习检测试题含解析
- 2025届四川省乐山十校高一物理第一学期期中学业质量监测试题含解析
- 福建省福州教育学院附属中学2025届物理高三第一学期期末复习检测模拟试题含解析
- 泰国投资指导手册
- 2024年新华社招聘笔试参考题库附带答案详解
- 全国初中数学青年教师优质课一等奖《反比例函数的图象和性质》课件
- (高清版)DZT 0265-2014 遥感影像地图制作规范(1:50000、1:250000)
- 汽车直播活动策划方案范文
- 2024中考复习必背初中英语单词词汇表(苏教译林版)
- 锁骨下动脉 (1)讲解
- 退役军人就业培训课件
- TCLPA 002.1-2023 静脉用药调配中心评估规范 第1部分:标准化文件框架及编写规则
- 20世纪时尚流行文化智慧树知到期末考试答案2024年
- 第四章-国防动员
评论
0/150
提交评论