找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 9883|回复: 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下是不是可以获得对该设备的的完全控制呢?还望了解的高手给个解释啊
0 e9 k6 q8 ]/ l# ~2 C
) {- n  y- B( l0 V0 \) s: [[ 本帖最后由 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 发表 2 P% P; l! `% A0 x7 j
之前追过EDK中的关于物理disk的访问,EDK source其实是通过win32 API进行访问的。现在有一个疑问:既然我们通过API可以将物理disk map到EDK中的NT32下,那么我们是不是可以map memory,IO,甚至于IRQ,如果这个可以的话,那是不是 ...

" f  m8 q' O0 \! }, F5 T' x
+ W; s4 C  x. \7 d不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,2 t% i6 \& l3 m' M6 @& s
0 h3 s! [( e% L5 n
例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
6 I, Z0 x; V! w+ [5 k9 L8 A3 h5 a/ j! x  y* j8 ^
仿真器一般不会直接I/O去和设备交互的,那样设计复杂,还容易和原来的驱动冲突。6 J: p% P; ]4 y5 Z* ~2 T, _
9 _# s3 Z* P- h4 E
至于内存,有专门的Section Manager来管理映射。
1 E  l3 T. H' I5 k* |2 K% m% h% j4 j* ]
[ 本帖最后由 qdk0901 于 2009-4-3 12:43 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-4-3 10:49:34 | 显示全部楼层
原帖由 qdk0901 于 2009-4-2 11:23 发表
7 {! h& m0 R% G3 O5 M  K' j* g/ r, E# x4 X
) Y& n  s5 x% m( X
不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,8 S. e* F- c# C/ C- A% t
你把设备都禁用了,所有的IRP自然传不到附加驱动上。3 A& g! [6 [3 v3 e# \1 m- I7 p
/ T+ }$ o9 D7 \! ]7 ^' F" j9 b2 g
例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。: ^3 B/ A* t) t/ e8 n" \- a! R
/ {* w. s8 _& _7 a( k: O+ s
仿 ...

0 P3 h1 e3 b0 \8 n" b; f) Y! n多谢qdb0901解答,继续问下去啊
8 b0 G  Y( h2 a1、"是仿真器通过在原来的设备驱动栈上附加驱动实现的",你所说的"原来的设备驱动栈上"应该是windows下的驱动了?还有那个附加驱动应该是在NT32下的设备驱动了吧?
: A) ]' n$ p* O1 o3 D2 `& d2、你能讲一下上述工作的一个大致流程吗?  h  R; _& u$ D$ z% x5 o- \, m& F
3、那是不是我们可以通过这种方式去模拟所有的设备?譬如pci设备?
回复

使用道具 举报

发表于 2009-4-3 12:54:49 | 显示全部楼层
通常每个设备上都挂了不止一个驱动,这些驱动一起形成一个链栈。
9 x0 U4 L, v$ S8 @( R# k- ~每当上面有IRP发下来(即用户要通过IRP请求驱动去操作设备),% z8 E& x9 I/ V/ C  ?( _5 g
总是最上面的那个驱动先得到处理权。6 q* G+ K' s9 e0 _
该驱动可以按照自己的意愿去返回结果,也可以继续往下传送IRP,5 O. A$ R' t5 R6 C0 J5 @, ?
让下面的驱动去处理。4 u" ]' O& b: ]! w! e# v
) X5 b: A; V! O: ?5 a- s6 s1 w- O' h
这个很类似于dos时代的hook中断服务程序(如果你做过的话会很熟悉)。) ^* C% b- d* E4 r3 J
而dos下面的虚拟磁盘,内存磁盘等等虚拟的设备,就是通过hook相应的中断服务实现的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-20 03:37 , Processed in 0.044235 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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