用户名  找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 9164|回复: 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下是不是可以获得对该设备的的完全控制呢?还望了解的高手给个解释啊9 }$ p; J3 B  [% N( z
# Z  [8 _. [" L' 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 发表
0 E( F) @, Y/ \& h- G之前追过EDK中的关于物理disk的访问,EDK source其实是通过win32 API进行访问的。现在有一个疑问:既然我们通过API可以将物理disk map到EDK中的NT32下,那么我们是不是可以map memory,IO,甚至于IRQ,如果这个可以的话,那是不是 ...

+ E. P5 d) p# Z
# E( \& f0 |! m不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,5 y  v) c! e$ [# h. [8 t. M1 I
4 p) A' }9 Z/ T2 ]' s% ]2 U  X: V$ J
例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
# u: C; f3 v& R5 X$ b* M% m
, c7 |+ i! B7 ?/ p  x5 o仿真器一般不会直接I/O去和设备交互的,那样设计复杂,还容易和原来的驱动冲突。' @, d1 g" Q# u( T; H

6 ~; h+ E. q1 q0 `7 t, @. G至于内存,有专门的Section Manager来管理映射。' M2 h$ G: J; c

: j2 K4 e" G4 ?" _' n3 e[ 本帖最后由 qdk0901 于 2009-4-3 12:43 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-4-3 10:49:34 | 显示全部楼层
原帖由 qdk0901 于 2009-4-2 11:23 发表
' ]# P) Y# f! |' {1 j' ?, p, c( _+ M5 \8 j/ f* o4 i) g

5 H# N. Z* d* Y! c* _不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,
* _5 G0 _0 B1 c$ `你把设备都禁用了,所有的IRP自然传不到附加驱动上。! ]/ X$ g; X4 t4 U/ x+ \

0 D! i/ i1 S( B4 G0 O例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
' W+ j1 S$ z8 M  T" p3 V
3 `- j& Y2 e, J+ N: }6 h8 W' ^仿 ...

( [" a/ U/ Z$ j$ [' x9 a* M多谢qdb0901解答,继续问下去啊0 i, Z, E+ ]& s  w& ^1 G
1、"是仿真器通过在原来的设备驱动栈上附加驱动实现的",你所说的"原来的设备驱动栈上"应该是windows下的驱动了?还有那个附加驱动应该是在NT32下的设备驱动了吧?
9 g0 z; K  Q7 j. ?0 Y& e) p2、你能讲一下上述工作的一个大致流程吗?
: V* x/ u' F# r! Y: e3、那是不是我们可以通过这种方式去模拟所有的设备?譬如pci设备?
回复

使用道具 举报

发表于 2009-4-3 12:54:49 | 显示全部楼层
通常每个设备上都挂了不止一个驱动,这些驱动一起形成一个链栈。
3 o& ^, ]& N3 _: q9 U. C- _. `每当上面有IRP发下来(即用户要通过IRP请求驱动去操作设备),! u* h2 F: _' L3 ?4 Z
总是最上面的那个驱动先得到处理权。3 k  s, ]: }; O4 Z8 x0 U
该驱动可以按照自己的意愿去返回结果,也可以继续往下传送IRP,
7 B9 T  I1 `; @; c/ K让下面的驱动去处理。
( r, n8 R4 g- d& U& ^+ i( p
. A3 e* o9 B9 j9 S- I, ~) ~这个很类似于dos时代的hook中断服务程序(如果你做过的话会很熟悉)。
2 ]( W- ?; G/ I6 [而dos下面的虚拟磁盘,内存磁盘等等虚拟的设备,就是通过hook相应的中断服务实现的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-14 10:02 , Processed in 0.050854 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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