matrix2009
驱动牛犊
驱动牛犊
  • 注册日期2009-09-01
  • 最后登录2011-07-25
  • 粉丝0
  • 关注1
  • 积分20分
  • 威望151点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1430回复:0

如何在U盘过滤驱动中读取U盘扇区?

楼主#
更多 发布于:2009-09-30 09:33
最近在研究U盘过滤驱动,想在SCSI派遣函数里读取U盘扇区,如果没有我们写入的标识,则禁用U盘。

现在禁用实现了,但是不知道怎么读取U盘扇区,请大家指点

过滤驱动过载在注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{36FC9E60-C465-11CF-8056-444553540000}下,

在网上找了一段机器狗的读取扇区的代码,
加到我的代码里试了试,发现反复的进入读扇区的代码,但是扇区却始终没有读到,后来系统崩溃了。
我意识到好像是所谓的“重路”了。
有段代码如下:
isl=IoGetNextIrpStackLocation(irp);
isl->DeviceObject=dev_object;
isl->MajorFunction=IRP_MJ_SCSI;
isl->Parameters.Scsi.Srb=srb;
isl->CompletionRoutine=IrpCompletionRoutine_0;
isl->Context=srb;
isl->Control=SL_INVOKE_ON_CANCEL|SL_INVOKE_ON_SUCCESS|SL_INVOKE_ON_ERROR;
status=MyIoCallDriver(dev_object,irp);

我是在SCSI的派遣函数里调用读取扇区的代码的,但是代码中isl->MajorFunction=IRP_MJ_SCSI;又是进入SCSI派遣函数,所以重路了。不能读取U盘扇区。

我想我需要在SCSI派遣函数里自己写一个IRP,是读取扇区代码在经过SCSI派遣函数进入下层设备站的IRP以及其他的参数,在网上没找到相关的资料,有人知道怎么做吗?
游客

返回顶部