当前位置:雨林木风xp技术xp

winxp 纯净版下载

减小字体 增大字体 作者:雨林木风官网  来源:www.2000xp.cn  发布时间:2015-04-29
win7 64纯净版下载
eate和Open文件的Create和Open可以通过发送IRP_MJ_CREATE给FSD 或者调用IoCreateFile函数来完成 Create和Open的区别实际上在于IoCreateFileIRP_MJ_CREATE的一个参数Disposition的取值 通过发送IRP_MJ_CREATE给FSD的方法与此类似 可以参考IFSDDKdocument的IRP_MJ_CREATE说明 不同于上面方法的是需要自己创建一个FILE_OBJECT 好于上面方法的是这种方法不需要一个HANDLE HANDLE是线程依赖的,FileObject则是线程无关 文件的Read和Write我们通过给FSD发送IRP_MJ_READ来读取文件 给FSD发送IRP_MJ_WRITE来改写文件 如果我们是通过一个HANDLE来执行如使用IoCreateFile打开的文件) 就要先用ObReferenceObjectByHandle函数来获得这个Handle对应的FileObject 我们只能给FileObject发送IRP 之后我们使用IoAllocateIrp分配一个IRP 根据FileObject> DeviceObject> Flags的值 我们判断目标文件系统使用什么样的IO方式 对每种不同的IO方式使用不同的地址传递方式 随后我们填充IRP内win7 64纯净版下载的各个参数域 就可以发送IRP了 接着要考虑如果IRP不能及时完成 会异步的返回的情况 我们安装一个CompletionRoutine 在CompletionRoutine里面设置一个事件为已激活 通知我们的主线程读取或者写入操作已经完成 现在可以发送IRP了 如果不采取特殊的措施的话 IRP发送目标是FileObject对应的DeviceObject 发送后 等待IRP的完成并且释放资源 返回 文件的DeleteDelete实际上是通过向FSD发送IRP_MJ_SET_INFORMATION的IRP 并把IrpSp> ParametersSetFileFileInformationClass设置为FileDispositionInformation 用一个FILE_DISPOSITION_INFORMATION结构填充buffer来执行的 文件的Rename类似于Delete Rename是向FSD发送IRP_MJ_SET_INFORMATION的IRP 把IrpSp> ParametersSetFileFileInformationClass设置为FileRenameInformation 填充buffer为FILE_RENAME_INFORMATION结构 综上 于是我们可以在驱动里面通过发送IRP来直接访问文件系统了

Tags:

作者:佚名
[] [返回上一页] [打 印]

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论

栏目导航

本类热门阅览

相关文章