找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 10125|回复: 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下是不是可以获得对该设备的的完全控制呢?还望了解的高手给个解释啊
+ @, }1 H5 B* z" ?/ v
$ \2 e( ]5 b* d: M$ \, g[ 本帖最后由 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 发表 $ o* H4 P8 K) e* ~, J
之前追过EDK中的关于物理disk的访问,EDK source其实是通过win32 API进行访问的。现在有一个疑问:既然我们通过API可以将物理disk map到EDK中的NT32下,那么我们是不是可以map memory,IO,甚至于IRQ,如果这个可以的话,那是不是 ...
+ e+ b. h. u2 I. g% E4 p7 f# I

. x6 P+ m7 K1 Q4 x( h不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,
! S' J. Q5 R% W# l$ n+ I$ l/ [# T
: f6 p4 G  T- }. Q+ ?; i( b) S例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
- L" K+ u* J9 w; ^$ z" I8 l, |
# ^6 b* t' B* A! c5 e) X仿真器一般不会直接I/O去和设备交互的,那样设计复杂,还容易和原来的驱动冲突。
! q& Z+ G" ], q8 j, V; y- t8 p) |  ?; M  I9 P/ e/ D
至于内存,有专门的Section Manager来管理映射。
+ m# S& j; t2 ^3 |+ M+ d- P3 g
, s8 Q9 @6 ~1 _. B[ 本帖最后由 qdk0901 于 2009-4-3 12:43 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-4-3 10:49:34 | 显示全部楼层
原帖由 qdk0901 于 2009-4-2 11:23 发表 1 A; N: H1 _6 z/ y2 q: ?

/ W: a7 m0 ~. h7 C7 ?! k" j% p, `8 e' V3 ?! }9 K
不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,. V5 w4 d9 Z, b. d5 [0 y
你把设备都禁用了,所有的IRP自然传不到附加驱动上。
: ?5 Z- r) ^9 S3 ?; B1 k
$ e3 w+ [# W( A6 k例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。5 u, `7 G* n: x6 W' R
' L" e8 r6 w2 Z4 Y$ Q- u2 n) Y
仿 ...

' m$ C5 I$ q% E8 X3 n/ X& ^多谢qdb0901解答,继续问下去啊
: ]7 o4 j( P+ `8 D2 C2 [% h1 U1、"是仿真器通过在原来的设备驱动栈上附加驱动实现的",你所说的"原来的设备驱动栈上"应该是windows下的驱动了?还有那个附加驱动应该是在NT32下的设备驱动了吧?  j2 a* x( D& ?8 g' C' O
2、你能讲一下上述工作的一个大致流程吗?
' C7 `( F, ?( e0 E. u, z3、那是不是我们可以通过这种方式去模拟所有的设备?譬如pci设备?
回复

使用道具 举报

发表于 2009-4-3 12:54:49 | 显示全部楼层
通常每个设备上都挂了不止一个驱动,这些驱动一起形成一个链栈。
6 }9 Y2 P4 W" `5 J1 b  P每当上面有IRP发下来(即用户要通过IRP请求驱动去操作设备),
) Y9 f5 N9 a8 j3 S# p; y总是最上面的那个驱动先得到处理权。, T" @% d0 O' ~" t3 r& J8 n
该驱动可以按照自己的意愿去返回结果,也可以继续往下传送IRP,2 j, U* p& _$ {3 u5 `
让下面的驱动去处理。* @! {& I" `5 ?/ T8 j. a8 D" b. E4 v
2 d9 u- M2 A$ I9 w
这个很类似于dos时代的hook中断服务程序(如果你做过的话会很熟悉)。
7 J9 E6 Z! z+ a: K) Q而dos下面的虚拟磁盘,内存磁盘等等虚拟的设备,就是通过hook相应的中断服务实现的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-11-3 23:12 , Processed in 0.134082 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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