找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 9435|回复: 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下是不是可以获得对该设备的的完全控制呢?还望了解的高手给个解释啊- ~3 [5 a" J/ N! a8 Q

( w0 L: e" w# l- ^# L/ i[ 本帖最后由 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 发表
& w" K, e5 }) x1 @4 Z3 W9 E7 R之前追过EDK中的关于物理disk的访问,EDK source其实是通过win32 API进行访问的。现在有一个疑问:既然我们通过API可以将物理disk map到EDK中的NT32下,那么我们是不是可以map memory,IO,甚至于IRQ,如果这个可以的话,那是不是 ...

: r! m+ d: C0 w9 d: \, Y" h
) L& D2 ~' Q  A. S. T7 N$ O不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,8 E( L3 P; ?" O* ^

3 H: x$ M& T: z/ T! T3 t: p例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。9 |1 ^& g' `9 z  i! a
5 f% e6 Z. N3 Y+ Z6 j* u
仿真器一般不会直接I/O去和设备交互的,那样设计复杂,还容易和原来的驱动冲突。
- G: H( N) h% r! a# S& g# f& o. V1 v1 s9 Y' G( t* t, A$ O8 ~) ]
至于内存,有专门的Section Manager来管理映射。
1 i: C9 b" N6 I
5 Q. y5 z9 L. x[ 本帖最后由 qdk0901 于 2009-4-3 12:43 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-4-3 10:49:34 | 显示全部楼层
原帖由 qdk0901 于 2009-4-2 11:23 发表
4 I$ P/ y) J% u  [$ H) j' |* W8 W( W* W3 G) D1 X
% [2 U' Q% W6 N. a0 Y3 b7 V
不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,5 H2 b6 M0 k+ T5 ?4 C( v1 ?7 W
你把设备都禁用了,所有的IRP自然传不到附加驱动上。; z* W" @9 V8 W& q
* Y, U3 R" k9 ~# x" g0 U" H+ i8 V" f
例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
0 i- X) f. b; k6 j) d* D5 ^/ L; @2 h
仿 ...
+ Y3 m# A, }) r7 J3 L6 j) b4 ^+ B
多谢qdb0901解答,继续问下去啊
$ n* w; s/ n. R5 b: y  q1、"是仿真器通过在原来的设备驱动栈上附加驱动实现的",你所说的"原来的设备驱动栈上"应该是windows下的驱动了?还有那个附加驱动应该是在NT32下的设备驱动了吧?
0 A% ^7 |6 s+ G) Q# X0 K4 n2、你能讲一下上述工作的一个大致流程吗?/ Q+ z8 Z1 _: o8 J7 E
3、那是不是我们可以通过这种方式去模拟所有的设备?譬如pci设备?
回复

使用道具 举报

发表于 2009-4-3 12:54:49 | 显示全部楼层
通常每个设备上都挂了不止一个驱动,这些驱动一起形成一个链栈。
* `( N* I% Q" }每当上面有IRP发下来(即用户要通过IRP请求驱动去操作设备),
9 r. ^5 K- K1 m$ h; V! D8 h4 j. E总是最上面的那个驱动先得到处理权。
2 t  O& t4 R% e, v: q+ L该驱动可以按照自己的意愿去返回结果,也可以继续往下传送IRP,9 Y$ e1 N6 x! J0 I* x
让下面的驱动去处理。6 G5 R( _; J  P9 W8 |' c7 w
, Z: n7 `+ A7 a' X( K$ P
这个很类似于dos时代的hook中断服务程序(如果你做过的话会很熟悉)。
/ J8 D6 A. f& u1 g7 F' J" K8 I而dos下面的虚拟磁盘,内存磁盘等等虚拟的设备,就是通过hook相应的中断服务实现的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-16 19:08 , Processed in 0.075483 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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