找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 9430|回复: 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下是不是可以获得对该设备的的完全控制呢?还望了解的高手给个解释啊! Q' w( T- w: a4 ]/ E
/ I; n9 J9 ]6 Y$ b6 b4 }  o1 p
[ 本帖最后由 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 发表
1 r0 C$ ]/ \  G之前追过EDK中的关于物理disk的访问,EDK source其实是通过win32 API进行访问的。现在有一个疑问:既然我们通过API可以将物理disk map到EDK中的NT32下,那么我们是不是可以map memory,IO,甚至于IRQ,如果这个可以的话,那是不是 ...

2 t7 {) i" R6 e8 e- k" C, |
8 }$ K- o- c2 K- c不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,+ Y5 K; m) u5 C! ]0 y# ]8 p3 S5 D( P/ @

& l/ b& j$ y7 K6 D% K6 t8 k7 R$ J例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。  t% y1 M6 k2 k; m0 ~0 c
% e  b/ H8 |! b% ?! D8 w* e" @" H
仿真器一般不会直接I/O去和设备交互的,那样设计复杂,还容易和原来的驱动冲突。# g4 X2 l1 C* w) ^4 y9 O

' m! c8 y4 u% `, C% b: g. A至于内存,有专门的Section Manager来管理映射。
, v: B3 K7 {$ S/ a4 x( l3 m
* t/ e3 u: h, q% n6 l& `( Z6 t[ 本帖最后由 qdk0901 于 2009-4-3 12:43 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-4-3 10:49:34 | 显示全部楼层
原帖由 qdk0901 于 2009-4-2 11:23 发表
# I0 t* c+ M4 A0 D7 O% N' k3 ^0 v( W6 x  S7 {+ ]

7 g& m8 W6 C- m& t3 u" ~! A不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,) i; s+ \, ]! A
你把设备都禁用了,所有的IRP自然传不到附加驱动上。( F: b+ T7 K5 f# }5 p

* g( s, M2 W; Y, b, D例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
6 t1 h( u2 j$ N+ ]5 N
1 Q9 O6 R1 l8 U1 R4 s- w# Y2 j* ^仿 ...
, l( \* r9 K3 @3 V- _5 s4 ^. Z
多谢qdb0901解答,继续问下去啊0 L3 a1 w  _4 w0 f. N1 b. Y* w/ r5 X
1、"是仿真器通过在原来的设备驱动栈上附加驱动实现的",你所说的"原来的设备驱动栈上"应该是windows下的驱动了?还有那个附加驱动应该是在NT32下的设备驱动了吧?
; a3 Z" R2 T# M7 B2 S2、你能讲一下上述工作的一个大致流程吗?, t5 G" g  V+ h2 ]
3、那是不是我们可以通过这种方式去模拟所有的设备?譬如pci设备?
回复

使用道具 举报

发表于 2009-4-3 12:54:49 | 显示全部楼层
通常每个设备上都挂了不止一个驱动,这些驱动一起形成一个链栈。
1 y: ?! N* y  b4 t. X0 C每当上面有IRP发下来(即用户要通过IRP请求驱动去操作设备),
# t8 c2 E) U. Q2 u总是最上面的那个驱动先得到处理权。
9 L5 s, M& c" l" [3 @该驱动可以按照自己的意愿去返回结果,也可以继续往下传送IRP,# |; g! u+ P: h8 R
让下面的驱动去处理。" U+ ~) W8 R6 i" X
! X8 ^3 u/ w  F1 E" k
这个很类似于dos时代的hook中断服务程序(如果你做过的话会很熟悉)。
+ @4 Z! C1 p& q  n( @# x4 j' c- O而dos下面的虚拟磁盘,内存磁盘等等虚拟的设备,就是通过hook相应的中断服务实现的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-14 21:31 , Processed in 0.029266 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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