kangzh
驱动小牛
驱动小牛
  • 注册日期2004-03-09
  • 最后登录2012-08-06
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望22点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1279回复:6

scsi大虾看过来

楼主#
更多 发布于:2004-06-08 11:16
我写的虚拟网络硬盘在电脑启动时不能以"本地磁盘"显示出来,只能进入到“磁盘管理器”中重新媒举后才可以,所以我想如果在scsi启动起来后向操作系统发送总线枚举命令,重新查找磁盘,请问这个方案可行吗?我该怎么做呢
slwqw
驱动大牛
驱动大牛
  • 注册日期2002-07-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望197点
  • 贡献值0点
  • 好评度147点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-06-08 12:06
IOCTL_SCSI_RESCAN_BUS
kangzh
驱动小牛
驱动小牛
  • 注册日期2004-03-09
  • 最后登录2012-08-06
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望22点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-06-08 16:33
to slwqw老大:
   有没有办法在scsi驱动中的得到自身设备对象指针呢,我现在使用这个方法,但无法知道自身设备,请问这个办法可行吗?

VOID CVRamDisk::SendIrp(PIRP pIrp,IN PDEVICE_OBJECT pTargetDevObj)
{
PIRP pFIrp=NULL;
KEVENT keIoctlComplete;
IO_STATUS_BLOCK ioSb;
NTSTATUS status;
char buffer[20]="i love you!";
int ilen=20;

KeInitializeEvent(&keIoctlComplete,NotificationEvent,FALSE);

pFIrp=IoBuildDeviceIoControlRequest(
IOCTL_SCSI_RESCAN_BUS,
pTargetDevObj,
buffer,
ilen,
buffer,
ilen,
FALSE,
&keIoctlComplete,
&ioSb);

// PrintIRP(pFIrp);
// PrintDevObj(pTargetDevObj);

DbgPrint("kangzh:pFIrp=%x\n",pFIrp);
if(pFIrp)
{
status=IoCallDriver(pTargetDevObj,pFIrp);
if (status == STATUS_PENDING)
{
KeWaitForSingleObject(&keIoctlComplete,Executive,KernelMode,TRUE,NULL);
}
status = pFIrp->IoStatus.Status;

DbgPrint("Send Success,return status=%x\n",status);
}
else
{
DbgPrint("kangzh:Create pIrp error~\n");
}

}
slwqw
驱动大牛
驱动大牛
  • 注册日期2002-07-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望197点
  • 贡献值0点
  • 好评度147点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-06-08 20:34
你在干嘛?哪有这样在SCSI Miniport驱动中发出IOCTL_SCSI_RESCAN_BUS请求的。要这样做:

HANDLE hDevice;

hDevice = CreateFile("ScsiX:",...); // X = 0,1,2,3....

DeviceIoControl(hDevice,IOCTL_SCSI_RESCAN_BUS,...);
kangzh
驱动小牛
驱动小牛
  • 注册日期2004-03-09
  • 最后登录2012-08-06
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望22点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-06-09 08:51
呵呵,我昨天这么做了,是可以扫描,但我希望在驱动中完成这件事情,当然我也可以在另外一个驱动中去做,但一定是在驱动中去完成的,但我不知道scsi的虚拟硬盘的设备名称(通过softice的符号链接查看器看到的设备名称好像每次重装之后就会发生变化)和符号联接,我可以在scsi驱动中再次通过IoCreateDevice的方式创建设备吗?谢谢
slwqw
驱动大牛
驱动大牛
  • 注册日期2002-07-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望197点
  • 贡献值0点
  • 好评度147点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-06-09 09:30
呵呵,你希望过痛苦的生活,你就慢慢过吧,没有人愿意跟你一起过。:D:D:D

祝你好运!
kangzh
驱动小牛
驱动小牛
  • 注册日期2004-03-09
  • 最后登录2012-08-06
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望22点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-06-09 10:30
呵呵,早上过来就已经搞定,谢谢你的帮忙!希望以后多多指教亚
游客

返回顶部