找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 9585|回复: 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下是不是可以获得对该设备的的完全控制呢?还望了解的高手给个解释啊
2 o0 f4 X; j$ [9 p* U) R' f) ?: |2 k- p7 W3 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 发表
$ |; P& e* z; b  R' ~之前追过EDK中的关于物理disk的访问,EDK source其实是通过win32 API进行访问的。现在有一个疑问:既然我们通过API可以将物理disk map到EDK中的NT32下,那么我们是不是可以map memory,IO,甚至于IRQ,如果这个可以的话,那是不是 ...

/ j4 a8 |: L7 H) D8 k3 ]% P; k3 R2 z) V% x% K; C# ^; r
不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,' G6 j* ]9 ^* d0 v% f  G
: [: h9 R  x! i- a
例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。/ p- O0 P4 N8 f8 E  L

" Z* d" I; ?3 s* g仿真器一般不会直接I/O去和设备交互的,那样设计复杂,还容易和原来的驱动冲突。8 |+ a4 e( l6 x# u
3 {1 X1 N( D' T- o" F6 d
至于内存,有专门的Section Manager来管理映射。
: v" r$ l6 q, J% w$ \& x. \" w8 I
7 G* O: \' |+ |& R) |+ ^; X[ 本帖最后由 qdk0901 于 2009-4-3 12:43 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-4-3 10:49:34 | 显示全部楼层
原帖由 qdk0901 于 2009-4-2 11:23 发表 ' E. o9 F2 ?/ J0 U. }3 S" {) _! @

2 W% l4 {# ^8 R6 U( h- i  [8 t2 K: O- u. B- M
不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,
1 O3 s* j4 S. K; {9 o- k9 V0 ?' B你把设备都禁用了,所有的IRP自然传不到附加驱动上。
  I# x8 M* o" ^1 {8 A( b4 h' k
  a* |) d! Q4 G5 b* k+ Y9 }- L例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。3 z1 F0 C& }0 v) g( g: ?

" Q, o& m1 u( a2 f" c仿 ...

# q, g3 s. ~2 r" k7 l- v3 e多谢qdb0901解答,继续问下去啊8 I  V) l9 s' P$ K' w% {4 ~
1、"是仿真器通过在原来的设备驱动栈上附加驱动实现的",你所说的"原来的设备驱动栈上"应该是windows下的驱动了?还有那个附加驱动应该是在NT32下的设备驱动了吧?
0 i+ M  `2 y" X: p; |! m2、你能讲一下上述工作的一个大致流程吗?- j' k2 k. l$ p0 f$ j( s
3、那是不是我们可以通过这种方式去模拟所有的设备?譬如pci设备?
回复

使用道具 举报

发表于 2009-4-3 12:54:49 | 显示全部楼层
通常每个设备上都挂了不止一个驱动,这些驱动一起形成一个链栈。* {& t" L: q9 w
每当上面有IRP发下来(即用户要通过IRP请求驱动去操作设备),* S+ _5 H2 u; J- R( w
总是最上面的那个驱动先得到处理权。
7 ?* K( P8 M8 ?5 |5 m该驱动可以按照自己的意愿去返回结果,也可以继续往下传送IRP,* v# R- `8 I9 y3 G0 z
让下面的驱动去处理。
, q2 M9 \! F5 m$ h' W
, b% }( o0 ?6 p( b# s这个很类似于dos时代的hook中断服务程序(如果你做过的话会很熟悉)。
: j4 L( V: e& h+ X/ i而dos下面的虚拟磁盘,内存磁盘等等虚拟的设备,就是通过hook相应的中断服务实现的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-21 17:10 , Processed in 0.082844 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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