找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 9646|回复: 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下是不是可以获得对该设备的的完全控制呢?还望了解的高手给个解释啊) R1 R& f/ x4 l7 c9 r# w  i2 P9 s

1 o4 v$ p# Q. ?; V: 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 发表 ' h% X1 H8 U, ~+ G( [
之前追过EDK中的关于物理disk的访问,EDK source其实是通过win32 API进行访问的。现在有一个疑问:既然我们通过API可以将物理disk map到EDK中的NT32下,那么我们是不是可以map memory,IO,甚至于IRQ,如果这个可以的话,那是不是 ...

( B1 A/ N/ N; @& e2 P8 p6 P
2 ^( u- a) `3 m$ I8 c不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,; ^( `) _1 W6 E8 Z! z' q' |

3 T# V+ f: K- I. o2 D& u. z) I例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
# U3 M" _) g6 v$ g6 ^7 `9 ~+ t2 _2 q9 e8 Y% V; j# J- W" t8 F/ B
仿真器一般不会直接I/O去和设备交互的,那样设计复杂,还容易和原来的驱动冲突。4 L( H& f  S! [  }* N+ y1 `7 q

: T1 C4 `0 @" t, O- q/ Q至于内存,有专门的Section Manager来管理映射。- ~- X9 K$ A1 [( ~' a4 s0 x
( G9 X; z7 j* o" e. ^
[ 本帖最后由 qdk0901 于 2009-4-3 12:43 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-4-3 10:49:34 | 显示全部楼层
原帖由 qdk0901 于 2009-4-2 11:23 发表
# ]& n4 p4 d) ~% l( i' u/ r' j+ r1 N2 w5 C9 x" G
% G+ B3 b& X; ]" X$ M$ p, I
不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,
$ O+ o7 b) h0 I3 ^; t1 N1 d2 |你把设备都禁用了,所有的IRP自然传不到附加驱动上。: Q# R; ?- h; `: Q2 s2 h2 ]
7 Y) @9 Y5 M/ A# _6 ~, _/ n
例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
, f2 X% Y( e/ [: a
8 S" V$ ?: u* q8 g% K4 S1 j仿 ...
; Q# O; `# b& F( G8 @
多谢qdb0901解答,继续问下去啊: R5 t1 k: l' ^
1、"是仿真器通过在原来的设备驱动栈上附加驱动实现的",你所说的"原来的设备驱动栈上"应该是windows下的驱动了?还有那个附加驱动应该是在NT32下的设备驱动了吧?
4 P) q- b: h- K& L7 W+ H6 q  Y& t2、你能讲一下上述工作的一个大致流程吗?! m( ^3 d$ Z3 d: L8 b! m5 R
3、那是不是我们可以通过这种方式去模拟所有的设备?譬如pci设备?
回复

使用道具 举报

发表于 2009-4-3 12:54:49 | 显示全部楼层
通常每个设备上都挂了不止一个驱动,这些驱动一起形成一个链栈。
$ Q2 [1 V/ o  N& u每当上面有IRP发下来(即用户要通过IRP请求驱动去操作设备),# C- D. b; H& x  m9 P" O% D
总是最上面的那个驱动先得到处理权。
9 O" q( j( t+ Z该驱动可以按照自己的意愿去返回结果,也可以继续往下传送IRP,- S! W$ w* ?$ e6 \1 G
让下面的驱动去处理。
  D  P6 M% y$ O& U
" l8 t1 B: q# h5 b这个很类似于dos时代的hook中断服务程序(如果你做过的话会很熟悉)。3 f' r, h& v* {9 K
而dos下面的虚拟磁盘,内存磁盘等等虚拟的设备,就是通过hook相应的中断服务实现的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-19 00:26 , Processed in 0.057934 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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