阅读:1430回复:0
如何在U盘过滤驱动中读取U盘扇区?
最近在研究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以及其他的参数,在网上没找到相关的资料,有人知道怎么做吗? |
|