首页
社区
课程
招聘
[求助]firadisk源码修改
发表于: 2012-11-4 22:35 4532

[求助]firadisk源码修改

2012-11-4 22:35
4532
firadisk可以识别grub生成的内存虚拟磁盘,提供给windows系统调用,从而可以由grub映射
内存虚拟磁盘,由firadisk在windows系统下识别,由此可以制作完全的ramos系统。ramos
系统由于完全运行在内存中,效率很高,可以拔掉所有的磁盘完全在内存中运行。
我想制作一个ramos ,但是使用firadisk的过程中,发现了问题,但目前个人无法解决,希望哪位
大牛能指点磁盘驱动程序的原理,我自己进行源码修改都可以。
问题就是,firadisk在识别内存磁盘的时候,我不清楚它识别磁盘以后获得磁盘驱动器盘符的算法,
感觉到它获得的磁盘驱动器盘符很混乱。比如启动盘是C盘,我有时候因为是vhd系统,也把启动
盘设置为V盘,而启动盘是不能变更的,否则系统加载其他的驱动程序,都是根据盘符来加载的,
比如加载c:\windows\system\ddd.sys,如果c:的盘符更改为了D:,那么系统启动的时候就会
找不到驱动程序,造成启动失败。firadisk的问题正是在此,我有时候系统的启动盘符为V:。但
firadisk识别出的内存虚拟盘识别成功了,但是它可能把这个虚拟盘设置为盘符为E:或者其他什么
盘符,造成我的系统从V:盘寻找启动文件寻找不到,因为此时没有V:盘,只有一个E:盘。所以造成
启动失败。这就是我使用firadisk的时候发现的问题。
现在问题是发现了,我找到了firadisk的源文件,可是我不太明白firadisk驱动程序的工作原理,
也不明白是哪个api获取系统盘符,如果知道了获取系统盘符的那一段源代码,就可以修改了,
使firadisk识别内存虚拟磁盘以后,使用我指定的盘符比如V:盘来正常工作,这样,整个的ramos
就可以正常启动了。
现在请哪位大牛指点我磁盘驱动程序的工作原理和相应的api,我好修改此源文件,非常感谢。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 468
活跃值: (52)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
磁盘驱动的工作原理是怎样的 ?主要是关心,如何初始化,以后,可能在windows注册成功有一个磁盘正常工作了,然后调用某个 api?windows分配一个盘符给这个驱动器?整个过程是怎样的,具体是什么 api?可以指定某个参数盘符为F:啊,或者V:啊,什么的,设置这个驱动器的盘符为指定值?整个过程是怎么样的呢?具体api是哪一个?百度也没找到啊。
2012-11-5 09:10
0
雪    币: 227
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这个驱动的很多参数都可以通过注册表设置,比如

详情参见 http://bbs.wuyou.com/viewthread.php?tid=187386
2012-11-5 17:06
0
雪    币: 468
活跃值: (52)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
你给的链接我是看过才在这里发帖的,源文件也是这个无忧启动论坛的帖子里面下载的。
关于firadisk的参数我已经都知道使用了,无非是设置disk,cdrom,floppy这几种,其中
有个boot参数可能有bug,但是没有专门设置虚拟出来的磁盘给它固定一个盘符的参数,
比如我要求固定盘符V:给vhd盘,固定盘符R:给ramos盘,但是没有这个参数,firadisk
可能会自动给这些虚拟盘分配C:的盘符,但是那样我的系统会出错的,会无法启动,因为
firadisk没有考虑到启动盘不是C:盘,而是F:盘,R:盘,V:盘的情况,所以我就想手动
修改firadisk的源代码,但可惜看不懂。
2012-11-5 18:23
0
游客
登录 | 注册 方可回帖
返回
//