找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 9035|回复: 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下是不是可以获得对该设备的的完全控制呢?还望了解的高手给个解释啊
# F. l: ]1 {2 u- e+ ~$ ~& q
; q! D  a$ V2 G[ 本帖最后由 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 发表
; O) J% p3 O4 U# E/ q# e之前追过EDK中的关于物理disk的访问,EDK source其实是通过win32 API进行访问的。现在有一个疑问:既然我们通过API可以将物理disk map到EDK中的NT32下,那么我们是不是可以map memory,IO,甚至于IRQ,如果这个可以的话,那是不是 ...
8 I1 t1 v6 s$ p0 T- h  I# C

5 Y2 ?/ c( x* D* |5 _2 |- e不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,
% l( U6 m2 x( M- ?7 w
. D2 L& `3 m* R% p2 E例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。) A! y6 h8 t5 I8 @9 r

- V" L- G; g* ~1 t仿真器一般不会直接I/O去和设备交互的,那样设计复杂,还容易和原来的驱动冲突。
- T4 o/ h7 P& R$ U. E4 s9 F$ S: d$ N$ q! _
至于内存,有专门的Section Manager来管理映射。' L% X8 O% D" r* h" K

( b) Q8 t: E. [/ |$ j5 W3 ^[ 本帖最后由 qdk0901 于 2009-4-3 12:43 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-4-3 10:49:34 | 显示全部楼层
原帖由 qdk0901 于 2009-4-2 11:23 发表 ( R; X# W' g, d4 @- N5 P- M  o
7 ]3 B! c2 s$ A

# g: ~1 n* t! I* h7 @3 `# G# \0 H不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,
3 M* i# N* ~$ o% K$ v; E5 I你把设备都禁用了,所有的IRP自然传不到附加驱动上。# P7 Q* G% |& Z$ R
2 r# b* X6 U$ x' m
例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。" Q( K! s2 H9 g% F" z) E0 w. G6 V
3 c# B4 m5 G) V4 H5 F( O  S
仿 ...
' z8 {/ v1 r# t( F+ ~8 e
多谢qdb0901解答,继续问下去啊
7 W1 ~2 {; l- C6 [$ l1 c+ k1、"是仿真器通过在原来的设备驱动栈上附加驱动实现的",你所说的"原来的设备驱动栈上"应该是windows下的驱动了?还有那个附加驱动应该是在NT32下的设备驱动了吧?
) Z1 ]8 A+ l6 e/ o7 [0 C3 J4 y2、你能讲一下上述工作的一个大致流程吗?9 a/ f! [$ K8 g$ Q( J
3、那是不是我们可以通过这种方式去模拟所有的设备?譬如pci设备?
回复

使用道具 举报

发表于 2009-4-3 12:54:49 | 显示全部楼层
通常每个设备上都挂了不止一个驱动,这些驱动一起形成一个链栈。$ {  v) e' y+ D
每当上面有IRP发下来(即用户要通过IRP请求驱动去操作设备),
. W6 ?2 v% \8 V. [0 C( X/ l总是最上面的那个驱动先得到处理权。
  h; t7 a+ T! v9 A该驱动可以按照自己的意愿去返回结果,也可以继续往下传送IRP,; {+ a/ ~5 O# ]: ~
让下面的驱动去处理。
* n9 V, W! ]/ h
- y4 K' \# D& \+ I这个很类似于dos时代的hook中断服务程序(如果你做过的话会很熟悉)。
( y; e' `* ~$ V. f. g2 p0 B1 Y) a而dos下面的虚拟磁盘,内存磁盘等等虚拟的设备,就是通过hook相应的中断服务实现的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-1 08:11 , Processed in 0.018212 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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