社区
驱动开发/核心开发
帖子详情
关于SCSIOP_READ命令的一些疑问.
zhangvbcs
2007-12-05 08:59:11
在我对U盘做过滤的时候,得到当我在访问U盘的时候,
用到的是SCSIOP_READ命令,也就是说我是通过他来
访问U盘的,但是我U盘是通过什么方式或者说是哪个
命令把我要访问的内容返回给我的呀.???
请大家给解释一下.^_^
...全文
362
8
打赏
收藏
关于SCSIOP_READ命令的一些疑问.
在我对U盘做过滤的时候,得到当我在访问U盘的时候, 用到的是SCSIOP_READ命令,也就是说我是通过他来 访问U盘的,但是我U盘是通过什么方式或者说是哪个 命令把我要访问的内容返回给我的呀.??? 请大家给解释一下.^_^
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zhangvbcs
2007-12-13
打赏
举报
回复
我做了一下条件判断.
但是还是有时候蓝屏!
也不知道是什么时候.
rayyang2000
2007-12-13
打赏
举报
回复
有看过psrb->DataTransferLength吗?估计是超过IoInfo的buffer size了
zhangvbcs
2007-12-12
打赏
举报
回复
谢谢楼上各位的指点.
我感觉所读取的数据是不是放到了SCSI_REQUEST_BLOCK中的DataBuffer里面了.
我就用下面的方式把里面的数据放到一个内存区域中:
PSCSI_REQUEST_BLOCK psrb;
UCHAR IoInfo[512*0x80];
RtlZeroMemory(IoInfo,512*0x80);
RtlCopyMemory(IoInfo,psrb->DataBuffer,psrb->DataTransferLength);//执行到这一句出现蓝屏.IRQL的问题.
而这个错误也不是每次都蓝屏,有的时候就能成功.
请各位再给指点一下这是怎么回事.
谢谢.
井底蛙
2007-12-12
打赏
举报
回复
你下SCSI指令是会有BUFFER, DATA放在BUFFER内.
请参考.
#include "ntddscsi.h"
#include "Winioctl.h"
UCHAR szBuffer[512*0x80]; //64k/////////////////////// DATA BUFFER
SCSI_PASS_THROUGH_WITH_BUFFERS sptwb;
bool CSCSICommand::SCSI_READ_10(DWORD ucAddress, WORD wBlock, UINT uiBlockSize )
{
PreCMD();
sptwb.Spt.DataIn = SCSI_IOCTL_DATA_IN;
sptwb.Spt.DataTransferLength = wBlock * uiBlockSize;
sptwb.Spt.Cdb[0] = 0x28;
sptwb.Spt.Cdb[1] = 0x00;
sptwb.Spt.Cdb[2] = (ucAddress & 0xFF000000) >> 24;
sptwb.Spt.Cdb[3] = (ucAddress & 0x00FF0000) >> 16;
sptwb.Spt.Cdb[4] = (ucAddress & 0x0000FF00) >> 8;
sptwb.Spt.Cdb[5] = (ucAddress & 0x000000FF) >> 0;
sptwb.Spt.Cdb[6] = 0x00;
sptwb.Spt.Cdb[7] = (wBlock & 0xFF00) >> 8;
sptwb.Spt.Cdb[8] = (wBlock & 0x00FF) >> 0;
sptwb.Spt.Cdb[9] = 0x00;
sptwb.Spt.Cdb[10] = 0x00;
sptwb.Spt.Cdb[11] = 0x00;
return SedCMD();
}
void CSCSICommand::PreCMD(void)
{
ZeroMemory(&sptwb, sizeof(SCSI_PASS_THROUGH_WITH_BUFFERS));
sptwb.Spt.Length = sizeof(SCSI_PASS_THROUGH);
sptwb.Spt.PathId = 0;
sptwb.Spt.TargetId = 1;
sptwb.Spt.Lun = 0;
sptwb.Spt.CdbLength = 12;
sptwb.Spt.SenseInfoLength = sizeof(sptwb.SenseBuf);
sptwb.Spt.TimeOutValue = TIME_OUT;
sptwb.Spt.DataBufferOffset = offsetof(SCSI_PASS_THROUGH_WITH_BUFFERS,DataBuf);
sptwb.Spt.SenseInfoOffset = offsetof(SCSI_PASS_THROUGH_WITH_BUFFERS,SenseBuf);
}
bool CSCSICommand::SedCMD(void)
{
ULONG returned;
ULONG length = sizeof(SCSI_PASS_THROUGH_WITH_BUFFERS);
if (sptwb.Spt.DataIn == SCSI_IOCTL_DATA_IN)
ZeroMemory(szBuffer, sptwb.Spt.DataTransferLength);
if (sptwb.Spt.DataIn == SCSI_IOCTL_DATA_OUT)
memcpy(&sptwb.DataBuf[0],&szBuffer[0],sptwb.Spt.DataTransferLength);
//QueryPerformanceCounter(&Lstart_time1);
BOOL status = DeviceIoControl(hDevice,
IOCTL_SCSI_PASS_THROUGH,
&sptwb,
length,
&sptwb,
length,
&returned,
FALSE);
//QueryPerformanceCounter(&Lend_time1);
//Ldiff_time1.QuadPart = (Lend_time1.QuadPart - Lstart_time1.QuadPart);
if ((! status) || (sptwb.Spt.ScsiStatus))
{
memcpy(ucSenseKey, sptwb.SenseBuf,sizeof(sptwb.SenseBuf));
return false;
}
else
{
if (sptwb.Spt.DataIn == SCSI_IOCTL_DATA_IN)
memcpy(&szBuffer[0],&sptwb.DataBuf[0],sptwb.Spt.DataTransferLength);
return true;
}
}
fantasyofwind
2007-12-11
打赏
举报
回复
我的qq是110315652
fantasyofwind
2007-12-11
打赏
举报
回复
你加我的qq了吗?
流水时间
2007-12-10
打赏
举报
回复
建议看DDK的书! 我只知道关心了一下网络过滤没有关心U盘过滤,你可以看一下!
zhangvbcs
2007-12-09
打赏
举报
回复
这么多天了,还是没有人回.自己顶一下.
Linux 系统常用内置
命令
内置
命令
read
交互式赋值变量;type 判断
命令
类型 09. 内置
命令
ulimit 修改系统资源使用限制;unset 清空变量 本人在教学和实战过程中发现,即便是有一定运维经验的人,可能已经能够搭建...
oracle19c_oca_ocp_ocm实战
2.5关于xtts的迁移方法的使用 3-恢复部分 3.1单实例本地恢复 3.2rac本地恢复 4-数据库升级部分 4.1 19.3升级到19.13 4.2 12.1.0.2升级到19.3 ...
一次性搞定数据库事务
第三部分:彻底搞清楚4种事务隔离级别:
READ
_UNCOMMITTED 读未提交隔离级别、
READ
_COMMITTED 读已提交隔离级别、REPEATABLE_
READ
可重复度隔离级别、SERIALIZABLE 序列化隔离级别 第四部分:彻底搞清楚MySQL...
MMM 集群部署实现 MySQL 高可用和读写分离
其原理是将真实数据库节点的IP(RIP)映射为虚拟IP(VIP)集,在这个虚拟的IP集中,有一个专用于write的IP,多个用于
read
的IP,这个用于Write的VIP映射着数据库集群中的两台master的真实IP(RIP),以此来实现...
3D图示Python标准自学教程基础篇(4)_文件处理
首先讲解Python文件的概念以及常用读写函数open()、
Read
()、write()、close()以及文件读写访问标志。 其次讲解文件的典型应用文件的复制算法,以及with as 关键字简化资源关闭。本课程末尾讲解文件与目录的创建、...
驱动开发/核心开发
21,597
社区成员
21,709
社区内容
发帖
与我相关
我的任务
驱动开发/核心开发
硬件/嵌入开发 驱动开发/核心开发
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章