cidentifier
驱动牛犊
驱动牛犊
  • 注册日期2003-11-13
  • 最后登录2009-09-20
  • 粉丝1
  • 关注0
  • 积分1分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
阅读:2399回复:11

如何让网络虚拟磁盘成为可引导的设备?

楼主#
更多 发布于:2005-03-28 17:02
我利用Scsi Miniport和TDI做了一个网络虚拟磁盘驱动,当把该驱动安装到一个有硬盘的机器上时,从物理硬盘引导一切正常,可以在资源浏览器中看到我的虚拟磁盘(F盘)。

现在我希望在一个没有硬盘的机器上利用虚拟磁盘引导windows2000,我把windows2000的所有系统文件复制到了虚拟磁盘上,并能够利用pxe加载了windows的ntldr,然后ntldr利用int13h加载了所有的boot driver(start type = 0 的驱动),但是当需要使用虚拟磁盘驱动进行下面的引导时,出现了BugCheck如下:
0x0000007B(0xF782384C,0xC0000034,0x0,0x0)
INACCESSIBLE_BOOT_DEVICE

谁能帮助我解释一下这是怎么回事?

关键的boot driver加载次序为(已经过检验):
NDIS.sys
RTL8139.sys (网卡驱动)
tcpip.sys (网络协议栈)
tdi.sys
vdisk.sys (我的虚拟磁盘驱动)
scsiport.sys
我觉得以上驱动加载次序应该没问题。

我的boot.ini中指定的引导设备为:
multi(0)disk(0)rdisk(0)partition(1)\\WINNT=\"...\"

terrychen曾经在一个帖子中说道利用虚拟磁盘引导需要在arcname目录下建symboliclink,请问这需要在我的虚拟磁盘驱动中编程实现吗?我觉得这好像不是磁盘驱动的任务。

windows2000在引导时在涉及磁盘驱动这块究竟发生了什么?

多谢?

最新喜欢:

wangzaiwangza... hongsinghongsi...
control it, or forget it
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-03-28 21:54
我利用Scsi Miniport和TDI做了一个网络虚拟磁盘驱动,当把该驱动安装到一个有硬盘的机器上时,从物理硬盘引导一切正常,可以在资源浏览器中看到我的虚拟磁盘(F盘)。

现在我希望在一个没有硬盘的机器上利用虚拟磁盘引导windows2000,我把windows2000的所有系统文件复制到了虚拟磁盘上,并能够利用pxe加载了windows的ntldr,然后ntldr利用int13h加载了所有的boot driver(start type = 0 的驱动),但是当需要使用虚拟磁盘驱动进行下面的引导时,出现了BugCheck如下:
0x0000007B(0xF782384C,0xC0000034,0x0,0x0)
INACCESSIBLE_BOOT_DEVICE

谁能帮助我解释一下这是怎么回事?

关键的boot driver加载次序为(已经过检验):
NDIS.sys
RTL8139.sys (网卡驱动)
tcpip.sys (网络协议栈)
tdi.sys
vdisk.sys (我的虚拟磁盘驱动)
scsiport.sys
我觉得以上驱动加载次序应该没问题。

我的boot.ini中指定的引导设备为:
multi(0)disk(0)rdisk(0)partition(1)\\WINNT=\"...\"

terrychen曾经在一个帖子中说道利用虚拟磁盘引导需要在arcname目录下建symboliclink,请问这需要在我的虚拟磁盘驱动中编程实现吗?我觉得这好像不是磁盘驱动的任务。

windows2000在引导时在涉及磁盘驱动这块究竟发生了什么?

多谢?

对,就是要创建symboliclink
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
cidentifier
驱动牛犊
驱动牛犊
  • 注册日期2003-11-13
  • 最后登录2009-09-20
  • 粉丝1
  • 关注0
  • 积分1分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-03-28 22:56
多谢AllenZh

再确认一下,是在磁盘驱动初始化时使用

IoAssignArcName(
    L\"multi(0)disk(0)rdisk(0)\",
    L\"\\\\Device\\\\Harddisk0\\\\Partition0\"
);

IoAssignArcName(
    L\"multi(0)disk(0)rdisk(0)partition(1)\",
    L\"\\\\Device\\\\Harddisk0\\\\Partition1\"
);

就可以了吧?
control it, or forget it
cidentifier
驱动牛犊
驱动牛犊
  • 注册日期2003-11-13
  • 最后登录2009-09-20
  • 粉丝1
  • 关注0
  • 积分1分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-03-28 22:58
今天来不及了,我明天试试,行就散分。
control it, or forget it
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
地下室#
发布于:2005-03-28 23:01
结果如何???
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
snowStart
驱动老牛
驱动老牛
  • 注册日期2004-04-06
  • 最后登录2011-06-02
  • 粉丝0
  • 关注0
  • 积分95分
  • 威望19点
  • 贡献值177点
  • 好评度1点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-03-29 08:09
结果如何???

关注中...
学习,关注,交流中... [email=fengyu@163.com]Email:snowstarth@163.com[/email] [url]http://bbs.zndev.com/?a=snowStart[/url]
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-03-29 09:24
楼主的错误,在Win2k没打pack下常出,建议打到Pack4下再试一下
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
cidentifier
驱动牛犊
驱动牛犊
  • 注册日期2003-11-13
  • 最后登录2009-09-20
  • 粉丝1
  • 关注0
  • 积分1分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-03-29 10:28
感谢各位大虾

我在vdisk的系统线程中加入了如下代码后可引导

UNICODE_STRING ArcName, DeviceName;

// create symbolic link
RtlInitUnicodeString(&ArcName, L\"\\\\ArcName\\\\multi(0)disk(0)rdisk(0)\");
RtlInitUnicodeString(&DeviceName, L\"\\\\Device\\\\Harddisk0\\\\Partition0\");
IoAssignArcName(&ArcName, &DeviceName);

RtlInitUnicodeString(&ArcName, L\"\\\\ArcName\\\\multi(0)disk(0)rdisk(0)partition(1)\");
RtlInitUnicodeString(&DeviceName, L\"\\\\Device\\\\Harddisk0\\\\Partition1\");
IoAssignArcName(&ArcName, &DeviceName);

但是登录后,报告无页面文件(我想pagefile吧),我明明在拷贝系统文件时把C:\\pagefile.sys拷贝到了虚拟磁盘映象中,为什么不能用呢?还请各位给说个道理出来。另,我想知道为什么需要建立上面的符号链接,好像如果是物理硬盘的话,windows会自动在arcname目录下建立链接,为什么虚拟磁盘需要自己建立,是我没写虚拟总线的缘故吗?

但无论如何,感谢各位,我决定散分了。

control it, or forget it
cidentifier
驱动牛犊
驱动牛犊
  • 注册日期2003-11-13
  • 最后登录2009-09-20
  • 粉丝1
  • 关注0
  • 积分1分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-03-29 10:32
分给了,有没收到哇
control it, or forget it
zhangshengyu
驱动老牛
驱动老牛
  • 注册日期2003-10-03
  • 最后登录2016-07-26
  • 粉丝0
  • 关注0
  • 积分792分
  • 威望696点
  • 贡献值41点
  • 好评度499点
  • 原创分0分
  • 专家分0分
  • 社区居民
9楼#
发布于:2005-03-29 12:30
分给了,有没收到哇

哎呀 来晚了
---内核开发合作或提供基础技术服务QQ:22863668 ---
SkyBuilder
驱动牛犊
驱动牛犊
  • 注册日期2003-03-04
  • 最后登录2009-04-24
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望6点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2005-07-19 16:44
修改HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices中的
\dosdevice\?????
把所有值去掉后,应该就不会出现pagefile文件错误的现象了。
withinlove
驱动牛犊
驱动牛犊
  • 注册日期2005-05-26
  • 最后登录2011-03-24
  • 粉丝1
  • 关注0
  • 积分89分
  • 威望47点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2005-07-21 11:51
晕,我以前做过无盘,M$好像到了WinMe就不支持网络启动了,如果你这么牛,能实现的话......................
游客

返回顶部