找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 9264|回复: 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下是不是可以获得对该设备的的完全控制呢?还望了解的高手给个解释啊6 Z0 u$ S1 k& M* h
" u- D/ ?- o4 y5 N
[ 本帖最后由 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 发表
: I3 N6 [$ b# ~7 x/ S# S之前追过EDK中的关于物理disk的访问,EDK source其实是通过win32 API进行访问的。现在有一个疑问:既然我们通过API可以将物理disk map到EDK中的NT32下,那么我们是不是可以map memory,IO,甚至于IRQ,如果这个可以的话,那是不是 ...
, w+ M0 N3 ^, F0 r
1 F4 X- J* ]) |
不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的," n& X# j( ^/ O/ ~; P8 ]  q: w

/ a4 [* W. |( h! T* F, ~" o4 J1 @例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。1 N+ Q! g2 @/ j& f# h% E5 j
& f. `) Q; w) j6 F) g1 f* c
仿真器一般不会直接I/O去和设备交互的,那样设计复杂,还容易和原来的驱动冲突。& y$ [: n- n- N5 ]1 n7 S" T" I) b" }

4 z. o: W3 k$ S( T3 Q至于内存,有专门的Section Manager来管理映射。; Z- o, p6 d$ r+ L6 `

5 g2 N' j0 u8 f- X5 U  ?[ 本帖最后由 qdk0901 于 2009-4-3 12:43 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-4-3 10:49:34 | 显示全部楼层
原帖由 qdk0901 于 2009-4-2 11:23 发表 ( Q9 `$ n: @* o& g- i, e
. {2 q' i+ s4 M$ L. X

/ f& `4 |; f. J不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,
3 U3 ^5 M" j5 T6 R9 v1 P& `你把设备都禁用了,所有的IRP自然传不到附加驱动上。
& _3 G' F4 C/ G0 Y: V% m( L, H5 U1 v
例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。# K# x0 M+ J( `& F3 O7 o
( V0 S2 |* b' k; t* ~. J" k
仿 ...
. ^% E* [% m3 m. M/ k5 F. |$ s& J
多谢qdb0901解答,继续问下去啊  Y6 H4 M1 U: i2 h
1、"是仿真器通过在原来的设备驱动栈上附加驱动实现的",你所说的"原来的设备驱动栈上"应该是windows下的驱动了?还有那个附加驱动应该是在NT32下的设备驱动了吧?# h) z$ M9 s7 k* P0 @
2、你能讲一下上述工作的一个大致流程吗?
* L' r/ W. }6 m$ Y) Y1 J1 K# f3、那是不是我们可以通过这种方式去模拟所有的设备?譬如pci设备?
回复

使用道具 举报

发表于 2009-4-3 12:54:49 | 显示全部楼层
通常每个设备上都挂了不止一个驱动,这些驱动一起形成一个链栈。" V% s. ~( u$ ?: P
每当上面有IRP发下来(即用户要通过IRP请求驱动去操作设备),
# b. {6 v4 h- i5 n% x% B总是最上面的那个驱动先得到处理权。
: M) ?! Z, R* w该驱动可以按照自己的意愿去返回结果,也可以继续往下传送IRP,
& J  R' A( k9 @让下面的驱动去处理。. _( b; b7 D4 D+ @6 b7 x
! q& j* I8 w% C2 J8 F
这个很类似于dos时代的hook中断服务程序(如果你做过的话会很熟悉)。
/ T) E4 S$ a0 X$ m( C. `而dos下面的虚拟磁盘,内存磁盘等等虚拟的设备,就是通过hook相应的中断服务实现的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-3-11 12:54 , Processed in 0.043690 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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