ltc603
驱动牛犊
驱动牛犊
  • 注册日期2005-03-24
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1696回复:3

请帮忙解释关于U盘只读过滤驱动中的部分代码!

楼主#
更多 发布于:2005-06-19 11:27
  if(opCode==SCSIOP_MODE_SENSE)
       {
              DbgPrint("SCSIOP_MODE_SENSE");
        IoCopyCurrentIrpStackLocationToNext(irp);
        IoSetCompletionRoutine(irp,
                               (PIO_COMPLETION_ROUTINE) FilterModeSenseCompletionRoutine,
                               &event,
                               TRUE,
                               TRUE,
                               TRUE);
              
deviceExtension = (PDEVICE_EXTENSION) Device_Object->DeviceExtension;
return IoCallDriver (deviceExtension->topDevObj, irp);//下层都做了什没?
。。。。。。。。。。
。。。。。。。。。
NTSTATUS
FilterModeSenseCompletionRoutine
{。。。。。。。。
if(opCode==SCSIOP_MODE_SENSE && CurSrb->DataBuffer && CurSrb-  >DataTransferLength >= sizeof(MODE_PARAMETER_HEADER))       //?
       {
       modeData = (PMODE_PARAMETER_HEADER)CurSrb->DataBuffer;  //?
      
       modeData->DeviceSpecificParameter|=MODE_DSP_WRITE_PROTECT; //?
 }
}
请帮忙解释这两段代码?
MODE_SENSE 身没作用?
如何实现的只读?对于(删除,剪切等操作如何处理的)?
谢谢回答。
很菜
ltc603
驱动牛犊
驱动牛犊
  • 注册日期2005-03-24
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-06-19 11:28
自己先顶一下
很菜
wanted999
驱动牛犊
驱动牛犊
  • 注册日期2006-03-28
  • 最后登录2012-08-13
  • 粉丝0
  • 关注0
  • 积分519分
  • 威望429点
  • 贡献值0点
  • 好评度48点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-07-21 16:58
代码是正确的,
偶试过了,可以用,
可是事情没这么简单啊!
M$留了一手......
ztf86781163
驱动牛犊
驱动牛犊
  • 注册日期2005-06-25
  • 最后登录2013-09-09
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望55点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-07-25 12:31
wanted999

能说一下,怎么样可以拦到SCSIOP_MODE_SENSE的命令吗?
inf文件注册自己的过滤器到哪里呢?
在usb类注册成自己的lower的过滤器,是拦不到SCSIOP_MODE_SENSE的~~
游客

返回顶部