阅读:1865回复:6
usb只读过滤驱动问题
我根据 http://www.driverdevelop.com/forum/html_90057.html?1117634851 做了如下代码:
case IRP_MJ_INTERNAL_DEVICE_CONTROL: //case IRP_MJ_SCSI: // peter add CurSrb = ExAllocatePoolWithTag(NonPagedPool, sizeof(SCSI_REQUEST_BLOCK), DISK_TAG_SRB); if (CurSrb == NULL) { DBGOUT((\"no\")); }else{ DBGOUT((\"ok\")); } RtlZeroMemory(CurSrb, SCSI_REQUEST_BLOCK_SIZE); CurSrb=irpSp->Parameters.Scsi.Srb; cdb = (PCDB)CurSrb->Cdb; opCode=cdb->CDB6GENERIC.OperationCode; if(opCode==SCSIOP_MODE_SENSE && CurSrb->DataBuffer && CurSrb->DataTransferLength >= sizeof(MODE_PARAMETER_HEADER) ) { DBGOUT((\"test\")); modeData = (PMODE_PARAMETER_HEADER)CurSrb->DataBuffer; modeData->DeviceSpecificParameter|=MODE_DSP_WRITE_PROTECT; } DBGOUT((\"OperationCode1 (%x)\", cdb->CDB6GENERIC.OperationCode )); // peter add end 问题是 cdb->CDB6GENERIC.OperationCode 的植始终是 0,进不了if 里面,正确情况是1a ,请指点为什么? |
|
沙发#
发布于:2005-06-02 12:05
各位帮个忙,我在等待...
|
|
板凳#
发布于:2005-06-02 12:57
得到 opCode==EC 和 opCode==30,但是就是没有1A
郁闷,为什么? |
|
地板#
发布于:2005-06-02 13:38
出现的 opCode 值 (56) ,(30),(6C) ,每次出现的不确定,奇怪
|
|
地下室#
发布于:2005-07-16 13:11
RtlZeroMemory(CurSrb, SCSI_REQUEST_BLOCK_SIZE);
CurSrb=irpSp->Parameters.Scsi.Srb; cdb = (PCDB)CurSrb->Cdb; 这一段好像有问题吧,你只是改了CurSrb指针的指向而已,没有用你分配出来的内存啊。 至于值为什么是0还有奇怪的值,是你测试的问题吧。 |
|
5楼#
发布于:2005-08-08 16:43
cdb ,opCode的类型是什么喃?
|
|
6楼#
发布于:2005-08-08 19:11
PSCSI_REQUEST_BLOCK CurSrb=
pIrpStack->Parameters.Scsi.Srb; PCDB cdb = (PCDB)CurSrb->Cdb; UCHAR opCode=cdb->CDB6GENERIC.OperationCode; if(opCode==SCSIOP_MODE_SENSE && CurSrb->DataBuffer && CurSrb->DataTransferLength >= sizeof(MODE_PARAMETER_HEADER)) { PMODE_PARAMETER_HEADER modeData = (PMODE_PARAMETER_HEADER)CurSrb->DataBuffer; modeData->DeviceSpecificParameter|=MODE_DSP_WRITE_PROTECT; } |
|