fslife
驱动大牛
驱动大牛
  • 注册日期2004-06-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望49点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
阅读:3568回复:4

如何应用IOCTL_SCSI_PASS_THROUGH向USB设备发送控制命令???

楼主#
更多 发布于:2004-07-27 09:16
现在要求采用IOCTL_SCSI_PASS_THROUGH方式向存储类设备发送控制命令,但是USB设备的命令请求老是出错,还望高手给予指点,谢谢!!
我的spt结构如下:
    sptwb.Spt.Length = sizeof(SCSI_PASS_THROUGH);
    sptwb.Spt.PathId = 0;
    sptwb.Spt.TargetId = 1;
    sptwb.Spt.Lun = 0;
    sptwb.Spt.CdbLength = CDB6GENERIC_LENGTH;
    sptwb.Spt.SenseInfoLength = 24;
    sptwb.Spt.DataIn = SCSI_IOCTL_DATA_IN;
    sptwb.Spt.DataTransferLength = 192;
    sptwb.Spt.TimeOutValue = 2;
    sptwb.Spt.DataBufferOffset =
offsetof(SCSI_PASS_THROUGH_WITH_BUFFERS,DataBuf);
    sptwb.Spt.SenseInfoOffset =
offsetof(SCSI_PASS_THROUGH_WITH_BUFFERS,SenseBuf);
    sptwb.Spt.Cdb[0] = SCSIOP_INQUIRY;
    sptwb.Spt.Cdb[1] = 0x08;                  
    sptwb.Spt.Cdb[2] = MODE_PAGE_CAPABILITIES;
    sptwb.Spt.Cdb[4] = 192;
    length = offsetof(SCSI_PASS_THROUGH_WITH_BUFFERS,DataBuf) +
sptwb.Spt.DataTransferLength;

    status = DeviceIoControl(hDevice,
IOCTL_SCSI_PASS_THROUGH,
&sptwb,
sizeof(SCSI_PASS_THROUGH),
&sptwb,
length,
&returned,
FALSE);
在交流中学习。。。
ruyili9803
驱动牛犊
驱动牛犊
  • 注册日期2004-06-07
  • 最后登录2005-09-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-08-07 12:00
你的问题解决了吗?我试过好像应用程序没什么题,USB设备也正常回复,但我不知道如果我想在驱动程序里下发这种SCSI命令,因该怎么做,我在驱动程序里用IoBuildDeviceIoControlRequest想向设备发送
Inquiry命令,设备返回数据全为0,bus hound报错,说我参数错
roseyyj
驱动牛犊
驱动牛犊
  • 注册日期2004-08-12
  • 最后登录2005-11-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-08-12 20:45
请问存诸类的GUID是什么呀?郁闷
ruyili9803
驱动牛犊
驱动牛犊
  • 注册日期2004-06-07
  • 最后登录2005-09-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-08-13 08:42
介绍你一篇文章

http://dev.csdn.net/develop/article/17/17209.shtm
fslife
驱动大牛
驱动大牛
  • 注册日期2004-06-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望49点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-08-13 11:10
感谢 ruyili9803!!

我用MS的一个例子EnumCD(http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q305184),想通过IOCTL_SCSI_PASS_THROUGH获得设备的更详细的信息,包括CDROM的只读&可写属性,但是USB设备一直不能成功,我估计可能是MS说的,USB设备不符合SCSI-3 MMC specification。
在交流中学习。。。
游客

返回顶部