找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 9548|回复: 5

由EDK对物理disk的访问引起的疑问

[复制链接]
发表于 2009-3-31 20:30:12 | 显示全部楼层 |阅读模式
之前追过EDK中的关于物理disk的访问,EDK source其实是通过win32 API进行访问的。现在有一个疑问:既然我们通过API可以将物理disk map到EDK中的NT32下,那么我们是不是可以map memory,IO,甚至于IRQ,如果这个可以的话,那是不是在windows下disable某个设备,然后在EDK NT32下是不是可以获得对该设备的的完全控制呢?还望了解的高手给个解释啊
# w) r5 }$ Y/ E- x( n8 T* R+ ^3 v; K: i3 D* a% e3 c& `
[ 本帖最后由 libeili 于 2009-3-31 20:40 编辑 ]
发表于 2009-3-31 21:11:59 | 显示全部楼层
你是在讨论仿真器吗?
回复

使用道具 举报

 楼主| 发表于 2009-3-31 21:15:15 | 显示全部楼层
对啊,就是在EDK的NT32环境下
回复

使用道具 举报

发表于 2009-4-2 11:23:29 | 显示全部楼层
原帖由 libeili 于 2009-3-31 20:30 发表 " F0 f7 ~/ v2 C: a2 f0 i/ m. C
之前追过EDK中的关于物理disk的访问,EDK source其实是通过win32 API进行访问的。现在有一个疑问:既然我们通过API可以将物理disk map到EDK中的NT32下,那么我们是不是可以map memory,IO,甚至于IRQ,如果这个可以的话,那是不是 ...

% [% K3 r: w- ^: m* ~/ D7 ?+ b7 j* G+ I
不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,) z. N" v" W. i

8 F1 h# v4 F: e/ H& R- n4 p例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
' `+ X& Z$ k- B0 E$ i/ @& F: ?- |0 v
仿真器一般不会直接I/O去和设备交互的,那样设计复杂,还容易和原来的驱动冲突。3 C% r; N6 L- {0 ]3 d

: P% v; D7 z$ x" z至于内存,有专门的Section Manager来管理映射。* O5 q. B4 G+ n; z$ t

- I% m5 G, G( M) ~[ 本帖最后由 qdk0901 于 2009-4-3 12:43 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-4-3 10:49:34 | 显示全部楼层
原帖由 qdk0901 于 2009-4-2 11:23 发表 ! g% F& _3 _' k$ z' I; q
' c# v" Z7 N, e2 ]6 [
5 _; h: y- }# P8 }0 Y
不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,! e  O3 I1 ^) H- K; C" W) z+ ~# U7 z
你把设备都禁用了,所有的IRP自然传不到附加驱动上。
( s! h! V7 Q& g' N4 |" }  ]. N
5 ^1 M  r$ B) o: f8 ?5 Q例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。# g4 c$ {5 U* s0 _; Z4 L  j' P
4 K  p& |, [" Z5 M" Q: Y
仿 ...
4 h$ k3 j0 R! T! [) H" V
多谢qdb0901解答,继续问下去啊& `* f- e% t* {% T( ?1 o
1、"是仿真器通过在原来的设备驱动栈上附加驱动实现的",你所说的"原来的设备驱动栈上"应该是windows下的驱动了?还有那个附加驱动应该是在NT32下的设备驱动了吧?
# p/ }. u9 p) k1 f, s9 F' s6 Y2、你能讲一下上述工作的一个大致流程吗?9 j0 Q; y9 x. l1 i
3、那是不是我们可以通过这种方式去模拟所有的设备?譬如pci设备?
回复

使用道具 举报

发表于 2009-4-3 12:54:49 | 显示全部楼层
通常每个设备上都挂了不止一个驱动,这些驱动一起形成一个链栈。. S( h/ h2 w6 ?# b& X: C7 d& z: O
每当上面有IRP发下来(即用户要通过IRP请求驱动去操作设备),
9 y3 f5 e! n  G. ]3 `总是最上面的那个驱动先得到处理权。
$ Z9 p' a' ]* G该驱动可以按照自己的意愿去返回结果,也可以继续往下传送IRP,
" S  d" z+ P" F1 j% @8 o让下面的驱动去处理。
) N) l+ w, I+ N! V, O
$ ?4 s% m# C7 `8 @; y这个很类似于dos时代的hook中断服务程序(如果你做过的话会很熟悉)。
1 x2 x+ R# B# N" z而dos下面的虚拟磁盘,内存磁盘等等虚拟的设备,就是通过hook相应的中断服务实现的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

Archiver|手机版|小黑屋|计匠网

GMT+8, 2025-12-1 02:17 , Processed in 0.070844 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表