找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 8764|回复: 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下是不是可以获得对该设备的的完全控制呢?还望了解的高手给个解释啊
, @) s9 M- w) c4 ?0 L! _, J: a; M7 S' z1 {/ o, l9 d6 ~6 L) T0 ?3 O
[ 本帖最后由 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 发表 : R/ ^4 ~- R3 d- g/ a5 E
之前追过EDK中的关于物理disk的访问,EDK source其实是通过win32 API进行访问的。现在有一个疑问:既然我们通过API可以将物理disk map到EDK中的NT32下,那么我们是不是可以map memory,IO,甚至于IRQ,如果这个可以的话,那是不是 ...

4 P( |( c. g6 n1 p3 C" p3 X- p& W/ D- O5 W  S
不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,
5 y7 e5 \2 d: C, ?$ P4 c# K; b+ Q
6 f3 c) ~3 E! s7 ^" E1 O1 Y6 u例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。4 C: @" n, L% i& \& h
3 b# M+ P9 ]6 K% v
仿真器一般不会直接I/O去和设备交互的,那样设计复杂,还容易和原来的驱动冲突。* ^- q# V9 F: _' N; I  ~

/ h2 L  E7 a4 S6 S: l8 M7 u1 x至于内存,有专门的Section Manager来管理映射。- X0 ^$ Q2 F( v% p" K7 f
; o! g1 \3 B; ^' j
[ 本帖最后由 qdk0901 于 2009-4-3 12:43 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-4-3 10:49:34 | 显示全部楼层
原帖由 qdk0901 于 2009-4-2 11:23 发表 * ?8 |8 @/ E; _$ L' [

0 G1 Y( k2 M* q
& K0 Q- F% @( C: J4 _. m. ~不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,' k3 s- h9 o' s7 T! m2 a- g
你把设备都禁用了,所有的IRP自然传不到附加驱动上。
7 I7 z$ p1 ]+ i8 L6 T' W: }9 q: v. I2 o- N, S. b( }3 A
例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
; v( t. h; _8 @5 y9 e' O
( O; ^) B0 v$ B1 D+ i+ a仿 ...
# S; l0 _& b8 ~0 I9 V% F
多谢qdb0901解答,继续问下去啊  s4 v7 E4 I+ D+ {% q  g' Z
1、"是仿真器通过在原来的设备驱动栈上附加驱动实现的",你所说的"原来的设备驱动栈上"应该是windows下的驱动了?还有那个附加驱动应该是在NT32下的设备驱动了吧?
# }" E. a/ ?  j% Q8 W" c2、你能讲一下上述工作的一个大致流程吗?& |0 X: l$ C4 ~. m$ u9 h1 d7 _. F1 R
3、那是不是我们可以通过这种方式去模拟所有的设备?譬如pci设备?
回复

使用道具 举报

发表于 2009-4-3 12:54:49 | 显示全部楼层
通常每个设备上都挂了不止一个驱动,这些驱动一起形成一个链栈。
5 X$ i! {6 H! X3 i每当上面有IRP发下来(即用户要通过IRP请求驱动去操作设备),  d  x1 C% W6 D8 W7 L* h; B8 c5 K& N
总是最上面的那个驱动先得到处理权。
3 |* M# l' R% o2 c  j该驱动可以按照自己的意愿去返回结果,也可以继续往下传送IRP,' j# {9 l+ d  J4 [' W
让下面的驱动去处理。
$ ~# q5 B7 Z: I0 @2 `# ~, H/ `+ {4 I
这个很类似于dos时代的hook中断服务程序(如果你做过的话会很熟悉)。
% g- W. f- U9 p2 p2 X而dos下面的虚拟磁盘,内存磁盘等等虚拟的设备,就是通过hook相应的中断服务实现的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 10:48 , Processed in 0.021955 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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