读写磁盘:请问在已经进入ring0的XP下是否就可以直接调用BIOS中断进行磁盘读写呢?如果不行还需要进行什么操作呢?(WIN32)

臭你个臭臭 2008-11-26 03:03:43
能否提示一下操作步骤,谢谢
...全文
191 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
gyk120 2008-11-26
  • 打赏
  • 举报
回复
不能,LZ要分清R0和保护模式的区别,两者是不同的
不过可以直接调用驱动对每个扇区分别进行读写
cnzdgs 2008-11-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 svenshu 的回复:]
我做的是个编辑器,win32实现,包括编辑file和disk,是个作业。
1,如果用VxD方式,非要通过DeviceIoControl的途径吗?
2,这是个windows程式,好像不怎么好在v86 mode下执行;可能是我理解有误,请指点。
3,我看有资料写可以直接invoke CreateFile,xx,xx,......,就在ring3下读写......
[/Quote]
如果你做的只是一个编辑器的应用程序,要访问磁盘直接CreateFile、ReadFile、WriteFile就可以了,用BIOS就扯的太远了。
sz_redtide 2008-11-26
  • 打赏
  • 举报
回复
不可以用中断,可以用I/O看ATAPI的协议在 WWW.T13.ORG上有
qdk0901 2008-11-26
  • 打赏
  • 举报
回复
楼主,你有大大的误区。
WinXP下哪里还有什么BIOS调用,调用BIOS调用的程序,都被扔到NTVDM里面执行去了,
NTVDM就是一个模拟16程序位执行环境的虚拟机。WOW16,哈哈哈。

然后就是到了ring0下,你就不能随便的用INT n指令了,否则把你蓝傻了。

然后,就是楼主你是不是想实现穿透还原软件的功能啊?

那可以到网上下个机器狗的源码么!这个不是很难,看看些驱动的书就明白了。

想爽快一点,就直接去和硬盘交互吧。

几百页的Spec算什么,里面需要你关注的内容不会很多的。
臭你个臭臭 2008-11-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sz_redtide 的回复:]
不可以用中断,可以用I/O看ATAPI的协议在 WWW.T13.ORG上有
[/Quote]
我晕你,R/W Disk你还要我去啃SATA SPEC,几百页呢!
臭你个臭臭 2008-11-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 gyk120 的回复:]
不能,LZ要分清R0和保护模式的区别,两者是不同的
不过可以直接调用驱动对每个扇区分别进行读写
[/Quote]
那个方法...我有看过资料,但说实话我觉得还不是我现在能掌握的- -#
在x86下那样多好噢。。。
臭你个臭臭 2008-11-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cnzdgs 的回复:]
如果要调用BIOS程序,需要开一个V86任务,不能直接调中断。不知道你具体是什么程序,XP系统很复杂,如果要读磁盘,应该用正规的途径。
[/Quote]
我做的是个编辑器,win32实现,包括编辑file和disk,是个作业。
1,如果用VxD方式,非要通过DeviceIoControl的途径吗?
2,这是个windows程式,好像不怎么好在v86 mode下执行;可能是我理解有误,请指点。
3,我看有资料写可以直接invoke CreateFile,xx,xx,......,就在ring3下读写......
cnzdgs 2008-11-26
  • 打赏
  • 举报
回复
如果要调用BIOS程序,需要开一个V86任务,不能直接调中断。不知道你具体是什么程序,XP系统很复杂,如果要读磁盘,应该用正规的途径。

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧