首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

保护模式下获取硬盘的信息解决方法

2012-02-21 
保护模式下获取硬盘的信息今年学习汇编语言,要做课程设计,我选择了做个“获取分区(FAT32或NTFS)的大小和剩

保护模式下获取硬盘的信息
今年学习汇编语言,要做课程设计,我选择了做个“获取分区(FAT32或NTFS)的大小和剩余空间”的程序,考虑了很久,目前我的基本的一个思路是,利用BIOS   13H   扩展中断来获得磁盘的第一扇区的信息(之前我开始时是用DOS的1CH中断,发现我的硬盘都大于8G的,所以放弃了),网上查了一些资料,发现在XP下的保护模式要调用BIOS中断是不行的,而且还要搞个进入RING   0     的权限。
   
        现在我认为我需要解决的问题是:
            1。如何进入RING   0
            2。如何调用BIOS中断

应该是我学得还很浅,所以现在只能是有这个思路,我网上找了很多资料,却没能得到一个解决问题的方法,所以在这里希望大家能不吝指教!!

            如果有一些例子的,希望能给一个(仅做参考之用!选择这个题目的目的就是为了学到更多,希望高手们指教啊!!),或是有更好的思路的麻烦给我提个思路,或是我还应该看哪些书,参考哪些资料,去哪个网站学习,给小弟指点一二,小弟在此感激不尽。



[解决办法]
"获取分区(FAT32或NTFS)的大小和剩余空间 ", 可以直接调用 GetDiskFreeSpace() 系统函数来实现的. 如果是自己读取磁盘的扇区, 可以参考 CreateFile() 系统函数关于这方面的说明
[解决办法]
如果是纯dos下编程的话,直接使用bios服务。
[解决办法]
windows提供了很多硬件相关API,可以获得硬件(包括硬盘)的信息。
[解决办法]
呵呵,涉及到ring切换,24位段偏移与32位平面寻址方式切换,很多东东呢.
[解决办法]
记得在WindowsXP下是可以调用BIOS中断的,不过我只用过绘图中断,LZ说的有空我去做一下实验。
另外不赞成进入ring 0的想法,Windows2000以后的系统对其内核做了严格的保护,进入ring 0远没有Win9x时来得方便,在NT环境下进入ring 0最现实的一个方法是编写驱动,但这涉及到大量操作系统内核以及ring 0级调试知识,短期内实在难以精通。更何况在内核进行操作很大程度上会影响稳定性与兼容性,故不到万不得已不要尝试此举。

热点排行