找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 9549|回复: 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下是不是可以获得对该设备的的完全控制呢?还望了解的高手给个解释啊
' g9 t5 j; i( ?; M% Y% n9 g. C( K# L. g  q6 N) U
[ 本帖最后由 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 发表
3 _( `6 J* J  c, b- l" s. w/ ~) _' m* p. Z之前追过EDK中的关于物理disk的访问,EDK source其实是通过win32 API进行访问的。现在有一个疑问:既然我们通过API可以将物理disk map到EDK中的NT32下,那么我们是不是可以map memory,IO,甚至于IRQ,如果这个可以的话,那是不是 ...

3 o: f1 Q  X: G+ R8 a( |
% L+ y2 F6 n* A2 t7 m, W不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,; B1 R0 S4 D: A2 {: @+ f' P: h' }

7 c, Z$ H6 S2 F' T+ n例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。, h4 O* F' q1 m2 T' q& g

( r4 q7 ?+ S7 V8 A- c  e% E7 \仿真器一般不会直接I/O去和设备交互的,那样设计复杂,还容易和原来的驱动冲突。
, T- i/ e5 g8 }* ?. v5 N( W  \, w" W
% K: w6 L& \+ W* _至于内存,有专门的Section Manager来管理映射。+ V( G* g; j# T( Y
; s' S" z; \6 M$ c! i
[ 本帖最后由 qdk0901 于 2009-4-3 12:43 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-4-3 10:49:34 | 显示全部楼层
原帖由 qdk0901 于 2009-4-2 11:23 发表 " z# S9 W! I  E$ t

# ?1 f: a8 o+ K3 D
5 R3 k& q7 e# V不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,8 S' K9 t% c# T- [9 Q( A
你把设备都禁用了,所有的IRP自然传不到附加驱动上。/ K  z/ \8 s: f2 ?; I& R' {9 y3 }+ v+ K
' s' J" ]- ^6 s' S) X' d
例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
/ y. M% n5 o! S4 b4 o
1 V: t; J9 f. y/ W2 c; F  [! ]仿 ...

8 V; i- @+ j- c2 E: @多谢qdb0901解答,继续问下去啊
- }0 }8 n$ s9 F: ~1、"是仿真器通过在原来的设备驱动栈上附加驱动实现的",你所说的"原来的设备驱动栈上"应该是windows下的驱动了?还有那个附加驱动应该是在NT32下的设备驱动了吧?% B/ t$ H- q  k/ g) B4 F& P5 N
2、你能讲一下上述工作的一个大致流程吗?
$ X& D6 ?. H: y* K" B/ X9 ?: P3、那是不是我们可以通过这种方式去模拟所有的设备?譬如pci设备?
回复

使用道具 举报

发表于 2009-4-3 12:54:49 | 显示全部楼层
通常每个设备上都挂了不止一个驱动,这些驱动一起形成一个链栈。6 v2 E. X0 S, Y% }3 s1 o
每当上面有IRP发下来(即用户要通过IRP请求驱动去操作设备),# b' ^: V$ H' k4 N1 @/ ~6 T
总是最上面的那个驱动先得到处理权。" a/ B$ J) x5 F( r
该驱动可以按照自己的意愿去返回结果,也可以继续往下传送IRP,' a3 I6 N+ F1 m
让下面的驱动去处理。' w2 G6 `4 @& L7 J0 ]' N. V

# {. H" X8 \* c这个很类似于dos时代的hook中断服务程序(如果你做过的话会很熟悉)。
  i! u" G# j5 ?5 q+ ~1 c7 H( v2 y  e0 O而dos下面的虚拟磁盘,内存磁盘等等虚拟的设备,就是通过hook相应的中断服务实现的
回复

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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