Yanky
驱动牛犊
驱动牛犊
  • 注册日期2004-08-24
  • 最后登录2021-09-08
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望95点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:1534回复:1

usb 存储设备只读

楼主#
更多 发布于:2007-01-17 11:42
  我写了一个USB过滤驱动程序,想让USB存储设备只读但出现了问题。

从网上找到了一些代码就修改了一下。
我在IRP_MJ_SCSI命令处理函数上,写了下面的代码。

UCHAR uchOperationCode;
PSCSI_REQUEST_BLOCK pCurSrb;
PCDB pCdb;

PIO_STACK_LOCATION pIrpStack;
pIrpStack = IoGetCurrentIrpStackLocation( pIrp );

pCurSrb = pIrpStack->Parameters.Scsi.Srb;
pCdb = (PCDB)pCurSrb->Cdb;
uchOperationCode = pCdb->CDB6GENERIC.OperationCode;

if ( uchOperationCode == SCSIOP_MODE_SENSE
    && pCurSrb->DataBuffer
    && pCurSrb->DataTransferLength >= sizeof( MODE_PARAMETER_HEADER ) )
{
    PMODE_PARAMETER_HEADER pModeData =
              (PMODE_PARAMETER_HEADER)pCurSrb->DataBuffer;
    pModeData->DeviceSpecificParameter |= MODE_DSP_WRITE_PROTECT;
  }

下面要做的就是将irp传给下层驱动程序处理。

结果:没有实现只读,USB存储设备可以正常的读写。
    uchOperationCode 的值一直是0。

问题出在什么地方呢?
希望高手能帮忙解决一下,谢谢了!
xvenw
驱动牛犊
驱动牛犊
  • 注册日期2007-01-06
  • 最后登录2007-02-08
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望8点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-01-17 23:05
也想知道答案
游客

返回顶部