找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 9052|回复: 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下是不是可以获得对该设备的的完全控制呢?还望了解的高手给个解释啊
) M' [' d4 w- p  a$ b. H) K5 k7 s& N1 R1 Z
[ 本帖最后由 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 发表 7 U9 ], V, C7 D1 m7 C3 O. f. ^
之前追过EDK中的关于物理disk的访问,EDK source其实是通过win32 API进行访问的。现在有一个疑问:既然我们通过API可以将物理disk map到EDK中的NT32下,那么我们是不是可以map memory,IO,甚至于IRQ,如果这个可以的话,那是不是 ...

/ @, R2 X, c9 ~$ ^- k: }: \; k7 a. {* e2 N) D' |: \
不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,; j  y* u" M& `$ N8 ^( o9 R

2 o6 u2 G+ U# ~例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
2 E2 `. P1 O. w
. a% x' `* r# ]3 R6 t& D仿真器一般不会直接I/O去和设备交互的,那样设计复杂,还容易和原来的驱动冲突。
7 C6 t* ]" g0 ?' U
- w2 D+ G$ ]/ a6 f$ W至于内存,有专门的Section Manager来管理映射。
4 {4 |9 o% H& W8 e# Q; }' f  p
1 a7 ]1 n* L0 d[ 本帖最后由 qdk0901 于 2009-4-3 12:43 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-4-3 10:49:34 | 显示全部楼层
原帖由 qdk0901 于 2009-4-2 11:23 发表
- @5 a3 h8 s- `; n) t7 B; m% D3 F# b- R* {) K5 ]' Z
: g+ I$ j3 P; {4 ^7 B1 p: i5 S+ P
不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,
# A- N  N7 s; j& y+ n7 y你把设备都禁用了,所有的IRP自然传不到附加驱动上。
1 v( h1 P5 e$ z, r1 Y0 r
3 z: C! Y1 N+ B8 g. m+ W4 W例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
5 \* o) r! u0 Q2 C0 |; K; t6 j. M( P4 O8 O+ K0 D( Y
仿 ...
; }, u/ |$ i  |5 O# q5 O
多谢qdb0901解答,继续问下去啊
4 n9 Y/ q2 Q# B# Z4 g8 ^( N1、"是仿真器通过在原来的设备驱动栈上附加驱动实现的",你所说的"原来的设备驱动栈上"应该是windows下的驱动了?还有那个附加驱动应该是在NT32下的设备驱动了吧?& `3 b; X% {# P3 g7 a
2、你能讲一下上述工作的一个大致流程吗?8 J' [0 @3 N, m
3、那是不是我们可以通过这种方式去模拟所有的设备?譬如pci设备?
回复

使用道具 举报

发表于 2009-4-3 12:54:49 | 显示全部楼层
通常每个设备上都挂了不止一个驱动,这些驱动一起形成一个链栈。, H  M. M  t. ^: A
每当上面有IRP发下来(即用户要通过IRP请求驱动去操作设备),) P0 {5 B7 n: U1 P* V* E$ ]* u
总是最上面的那个驱动先得到处理权。
2 a2 p+ V& F1 j+ u) j0 Z! X# {该驱动可以按照自己的意愿去返回结果,也可以继续往下传送IRP,
, v  L6 Q" f2 |6 F让下面的驱动去处理。
+ D) g( ?$ Y" y2 ?. }* \" {1 T: s. n  X7 i0 g1 N
这个很类似于dos时代的hook中断服务程序(如果你做过的话会很熟悉)。3 `  u/ Q/ n7 z  g
而dos下面的虚拟磁盘,内存磁盘等等虚拟的设备,就是通过hook相应的中断服务实现的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-21 19:55 , Processed in 0.051261 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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