ATAPI(磁盘端口驱动)级文件保护简单实现

#define IoGetIrpStackLocation( Irp , Level) (\
    (Irp)->Tail.Overlay.CurrentStackLocation + Level )
BOOL IfIrpHasFobj(PIRP pIrp , LPCWSTR FileName)
{
ULONG i , j ;
PIO_STACK_LOCATION irpStack ;
PVOID NamePool ;

for ( i = 0 ; i < (ULONG)(pIrp->StackCount - pIrp->CurrentLocation + 1) ; i ++)
{
   irpStack = IoGetIrpStackLocation(pIrp , i );
   if (irpStack->FileObject)
   {
    if (irpStack->FileObject->FileName.Buffer)
    {
     NamePool = ExAllocatePool(NonPagedPool , irpStack->FileObject->FileName.Length + 2);
     if (NamePool)
     {
      KDMSG(("%ws" , irpStack->FileObject->FileName.Buffer));
      RtlCopyMemory(NamePool ,
       irpStack->FileObject->FileName.Buffer ,
       irpStack->FileObject->FileName.Length + 2);
      _wcsupr((wchar_t*)NamePool);
      if (wcsstr((wchar_t*)NamePool , FileName))
      {
       ExFreePool(NamePool);
       return TRUE ;
      }

      ExFreePool(NamePool);
     }

    }
   }

}
return FALSE ;
}

NTSTATUS ProxyAtapiScsi(PDEVICE_OBJECT devobj , PIRP pIrp)
{
NTSTATUS stat ;
if (IfIrpHasFobj(pIrp , L"123.TXT"))
{
   pIrp->IoStatus.Status = 0xc0000001;
   pIrp->IoStatus.Information = 0 ;
  
   IoCompleteRequest(pIrp , IO_NO_INCREMENT);
   return 0xc0000001;
}

__asm
{
   push pIrp
   push devobj
   call OldAtapiScsiDispatch
   mov   stat ,eax
}
return stat ;
}

http://hi.baidu.com/new/mj0011

ATAPI(磁盘端口驱动)级文件保护简单实现相关推荐

  1. Windows网络驱动、NDIS驱动(微端口驱动、中间层驱动、协议驱动)、TDI驱动(网络传输层过滤)、WFP(Windows Filtering Platfrom))

    catalog 0.引言 1.Windows 2000网络结构和OSI模型 2.NDIS驱动 3.NDIS微端口驱动编程实例 4.NDIS中间层驱动编程实例 5.TDI驱动 6.TDI驱动 7.TDI ...

  2. NDIS小端口驱动ndisEdge学习二——小端口驱动的初始化

    目录 1 首先进入DriverEntry检查版本号(可选) 2 WDF_NO_EVENT_CALLBACK初始化驱动标志 3 设置WdfDriverInitNoDispatchOverride表示框架 ...

  3. 为设计指定输入端口驱动强度:set_driving_cell、set_drive 和set_input_transition

    为设计指定输入端口驱动强度: 1. set_driving_cell命令: 2. set_drive命令: 3. set_input_transition命令: 这三个命令之间的关系与区别. 一.为设 ...

  4. 【Android取证篇】ADB端口驱动更新详细步骤

    [Android取证篇]ADB端口驱动更新详细步骤 更新ADB端口驱动,解决无法连接设备问题-[蘇小沐] 1.[记录VID]路径:设备管理器->便携设备->属性->(记录)VID 查 ...

  5. 台式计算机的速度,USB3.0有多快?平民级最简单测试告诉你

    [IT168 应用]说到USB3.0,估计大家已经很熟悉了.但是由于现在这项技术还没有被广泛应用,并且只有一小部分高端PC产品才使用它,所以它还是给了我们一种神秘的感觉.但是总是听说USB3.0的传输 ...

  6. linux下spi flash驱动程序,关于spi flash芯片m25p80驱动以及其简单的mtd驱动分析

    项目中用到了spi flash芯片MX25L25635E,之前在uboot下简单分析了驱动代码,调试该flash擦除的bug,一直没有时间分 析内核中关于该芯片的驱动,以下是对该芯片驱动的一个简单分析 ...

  7. linux 字符设备驱动测试,一个简单字符型设备驱动及其测试

    驱动对一些人来说很难,而对一些人来说很容易.窃以为,理解简单设备驱动模型不难,深入理解并与Linux内核设计联系到一起需要花费时间.对于移植者来说,如何将自己自定义的模块天衣无缝放到内核中,是比较重要 ...

  8. 电脑添加夏普(sharp)打印机 从磁盘安装驱动过程

    今天打算连实验室的打印机,是夏普的,但是我不知道具体的型号.不过有一个word文档说明怎么连,大概率需要自己下载驱动,下面就开始吧! 控制面板的操作 前面都是一样的,控制面板–>设备和打印机–& ...

  9. 操作系统实验:模拟电梯调度算法,实现对磁盘的驱动调度C++实现

            设计一个以电梯调度思想为主并考虑旋转优化的程序,对磁盘进行移臂和旋转调度,对磁盘进行移臂和旋转调度.         假定某个磁盘组共有 200 个柱面,由外向里顺序编号(0-199) ...

  10. 驱动及驱动开发的简单理解

    一直对驱动有着强烈的好奇心,怎奈工作始终与其无缘,且未来也不大可能接触驱动.因此,今天用了一些时间,去简单的了解了一下驱动及驱动开发.如果有错误的理解,请予以指正,不胜感激! 什么是驱动 在计算中,设 ...

最新文章

  1. xml文件上传服务器读取不了,本地读取服务器Xml文件及本地读本地的xml
  2. 常用解决方案技术一览
  3. IE6 CSS的一个bug
  4. Java实现算法导论中朴素字符串匹配算法
  5. 太原未来小使者英语大赛_哥伦比亚2020年中学生“汉语桥”大赛成功在线举办...
  6. python读取文本并且替换_lin如何读取和替换python行文件中的文本
  7. C++对C的函数扩展
  8. MacOS 系统使用命令安装软件包
  9. java提高篇四_(转)java提高篇(四)-----理解java的三大特性之多态
  10. html5录音怎么保存到本地,详解HTML5 录音遇到的坑
  11. Tcp keepalive详解
  12. DAY16-Django之model
  13. 配置Web.Config连接数据库
  14. hmcl启动器安装游戏版本失败_HMCL 启动器教程 #2 安装游戏版本、模组加载器与高清修复...
  15. javaweb学习笔记(XML基础)
  16. 区块链技术与应用(北大公开课,肖臻)- 课程总结
  17. 国家测绘局干部双向挂职锻炼管理暂行办法
  18. 芯片行业相关公司及就业岗位汇总
  19. 又一股份制银行,菊风「视频能力平台」承包了
  20. web仿微信发朋友圈选择位置

热门文章

  1. Kafka实战之整合Flume和Kafka完成实时数据采集
  2. 交换机cad图例_弱电施工CAD图例.pdf
  3. java职业教育考试题_云课堂智慧职教java职业证书题库答案
  4. 大数据背后的网络文学
  5. echar 数据显示在小圆点里
  6. 关于饿了么ui框架的使用之select的应用
  7. tpc1061ti使用说明_昆仑通态连打印机样例说明
  8. QQ群排名技术讲解、实战分析、核心要点 盗引结合篇
  9. springboot学习路径 转载子方志朋
  10. 分享一个电脑截动图的软件LICEcap