麦洛克菲内核驱动开发第六课.ppt_第1页
麦洛克菲内核驱动开发第六课.ppt_第2页
麦洛克菲内核驱动开发第六课.ppt_第3页
麦洛克菲内核驱动开发第六课.ppt_第4页
麦洛克菲内核驱动开发第六课.ppt_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、麦乐菲内核开发第5课过滤过滤过滤过滤文件系统、麦洛菲、朱阳英、麦洛菲、概述、文件系统驱动绑定和过滤过滤过滤过滤过滤基本框架档案阻塞生成修改名称操作、麦洛菲、过滤、档案过滤驱动器、档案卷设备、磁盘设备、IRP过滤通过设备绑定完成。绑定,设备堆栈绑定格式。驱动自行创建的设备(过滤器设备),并通过调用系统提供的绑定API绑定到目标设备。在解除绑定之前返回目标设备所在的设备堆栈中的顶层设备。发送到下层的IRP或上层的数据都被过滤设备阻止。绑定API:ioattachdevice()ioattachdevicetodevicestacksafe(2000 sp 4或更高版本)ioattachdevice

2、todevicestack(),io atte P devicestack(文件系统设备绑定)SfFsControl(绑定卷设备)查看多个文件系统设备,查看多个卷设备,为每个设备创建相应的设备连接,然后相应地进行处理。ioregisterfsregistrationchange,filemon的方法:枚举26个字符,打开文件,获取FileObjectDeviceObject,然后通过自行驱动创建过滤设备。Attach筛选设备-DeviceObject动态加载的IoRegisterFsRegistrationChange动态获取(如USB磁盘)、fastio、档案系统除了处理正常IRP外,还处理

3、所谓的FastIo。无法处理FastIo。Cache Management。这意味着除了正常的Dispatch Functions外,还必须为DriverObject创建另一组Fast Io Functions。指向牙齿函数组的指针位于driver-FastIoDispatch,Sfilter代码读取分析中。过滤器驱动和IRP处理方法;a . Pending完成例程iocopycurrentirpstacklocationtonext b .忽略直接发布的IoSkipCurrentIrpStackLocation下层设备与现在一样c .结束IRP不发行PIO _ Stack _ Locatio

4、n IRP Stack=IOgetcurrentirpstacklocation(IRP)。IRP-io status . status=status _ success;Irp-IoStatus。information=0;Iocompleterequest (IRP,io _ no _ increment);d . IRP ioallocateIRP iogetnextirpstacklocation手动部署、IRP注意事项、驱动程序将IRP传递给以下驱动程序后,它将不再拥有IRP,不能再尝试访问。否则,可能会发生系统崩溃。该IRP将被其他驱动程序或线程释放或完成。如果驱动程序需要访问已经

5、传递到堆栈的IRP,牙齿驱动程序必须实施和设置IoCompletion例程。I/o管理器调用IoCompletion例程时,牙齿驱动程序可以在运行IoCompletion例程的同时重新获取牙齿IRP的所有权。这样可以使IoCompletion例程访问IRP的域。如果驱动部署例程也需要IRP在后续驱动处理完成后处理,则IoCompletion例程应返回status _ more _ processing _ required,将IRP所有权返回给部署例程。这将阻止I/O管理器处理IRP,并将最终完成IRP的任务留在部署例程中。部署例程可以稍后调用ICompleteRequest以完成牙齿IRP,

6、或将牙齿IRP标记为等待进一步处理。,Pending完成例程,事件;Keinitializeevent(,nt status comp routine(in p device _ object device object,in pirp IRP,in p void context)IRPKesetevent (IRP-userevent,io _ no _ increment,false);/io freeirp(Irp);return status _ more _ processing _ required;当忽略直接发布,并且对IRP没有更改(例如P device _ extension

7、 device extension)时;ioskipcurrentirpstacklocation(IRP);/设备扩展中存储的子设备device extension=(p device _ extension)device object-device extension导入/return iocalldriver/send the IRP down status=iocall driver(next device,IRP);/the following is an error because this driver/no longer owns the Irp . if(状态=status

8、_ pending) iomarks /,自行实施IRP发布,ioallocate IRP/iobuilddeviceiocontrolrequest iogetnextirpstacklocation示例:强制删除档案Sfilter中的查询档案名称,未筛选驱动器的默认公共磁盘nt status control requestReturn STATUS _ SUCCESS,过滤器驱动的CommonDispatch写入,nt status SF pass through(in p device _ object device object,in pirp IRP) Pio _ stack _ l

9、oughIs _ my _ control _ device _ object(设备对象);资产(is _ my _ device _ object(device object);If(!is _ my _ device _ object(device object)| | is _ my _ control _ device _ object(device object)Return statusioskipcurrentirpstacklocation(IRP);return iocall driver(PS filter _ device _ extension)device objec

10、t-device extension)-nlextheader . a,筛选器函数io _ stack _ location * lpirpstack=iogetcurrentirpstacklocation(pirp);如果需要与if(is _ my _ control _ device _ object(device object)/R3交互,则必须返回成功的pirp-iostatus.statusIocompleterequest (LP IRP,io _ no _ increment);Else if(!is _ my _ device _ object(device object)/

11、无效的参数PIrp-io status . status=status=status _ invinvinginformation=0;Iocompleterequest (pirp,io _ no _ increment);Else /这是我们要筛选的作业ioskipcurrentirpstacklocation(pirp)。Status=iocall driver(PS filter _ device _ extension)-device extension)device object-nlextheader reture,重要问题:档案路径分析和保存,Namelookup.c(配置IRP,不能使用obquery namestring)nlgetfullpath name()nlpqueryfilesystemforfilent其他过滤器存放在哪里?List_Entry HASH TREE,测试Sfilter安装,原始Sf

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论