找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 10111|回复: 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下是不是可以获得对该设备的的完全控制呢?还望了解的高手给个解释啊6 }. L6 _1 r7 ~

" t2 Z5 [$ d6 |3 R. {! W[ 本帖最后由 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 发表   L) i! d/ I, e( [& `* ]1 b
之前追过EDK中的关于物理disk的访问,EDK source其实是通过win32 API进行访问的。现在有一个疑问:既然我们通过API可以将物理disk map到EDK中的NT32下,那么我们是不是可以map memory,IO,甚至于IRQ,如果这个可以的话,那是不是 ...

$ E( U* q) @& k' v( D1 A5 [
& K5 d0 M9 X4 K& J' N不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,
- o/ z; C" O! O* b3 G' x0 C
$ G0 q1 g! I) x; X: I例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
. M8 h3 @1 q! d! Y" ^% F7 y9 e& g
) f: F' \* Q+ P' A( r仿真器一般不会直接I/O去和设备交互的,那样设计复杂,还容易和原来的驱动冲突。- l0 y4 u% \. M9 e) `7 k
- z1 ^1 ]  b0 S* J
至于内存,有专门的Section Manager来管理映射。
( @& k- O, e2 y, K
) x5 Q8 C! V# \[ 本帖最后由 qdk0901 于 2009-4-3 12:43 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-4-3 10:49:34 | 显示全部楼层
原帖由 qdk0901 于 2009-4-2 11:23 发表 & ?" t: \. m1 T' R) ?; u" B
, B" _8 M$ ?. |0 C, x! }

- I( E# d7 I+ Z% R. V+ G% @# e不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,
( U7 @. K8 o0 g% g' n你把设备都禁用了,所有的IRP自然传不到附加驱动上。
- B2 E6 S' p( e8 N/ X
9 M0 d# M: A! @例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。" \; w. y' S$ f; [* Q( f
( e) y& m% E$ o0 S- y6 e
仿 ...
! ~  _* d. b$ A* C, T3 z, f
多谢qdb0901解答,继续问下去啊: o( Z. [; D. R" a0 a# L/ N
1、"是仿真器通过在原来的设备驱动栈上附加驱动实现的",你所说的"原来的设备驱动栈上"应该是windows下的驱动了?还有那个附加驱动应该是在NT32下的设备驱动了吧?# u& ^0 d/ u1 R5 I# ?' w9 e
2、你能讲一下上述工作的一个大致流程吗?& N' w' D% C$ I5 V6 [) }% w
3、那是不是我们可以通过这种方式去模拟所有的设备?譬如pci设备?
回复

使用道具 举报

发表于 2009-4-3 12:54:49 | 显示全部楼层
通常每个设备上都挂了不止一个驱动,这些驱动一起形成一个链栈。
( i9 o. r" }1 c4 V3 v( p0 A; B. P每当上面有IRP发下来(即用户要通过IRP请求驱动去操作设备),6 K1 Z: i: k$ }8 v
总是最上面的那个驱动先得到处理权。8 d0 i0 r8 w3 L* U
该驱动可以按照自己的意愿去返回结果,也可以继续往下传送IRP," h* V3 t6 E. |1 I1 B# O/ \
让下面的驱动去处理。
: J4 n( t0 C" g7 T, a( h
. z# l5 F( k4 R/ w' F1 M* a5 [这个很类似于dos时代的hook中断服务程序(如果你做过的话会很熟悉)。& z' i" Y) w: Z  [5 x/ Z' z
而dos下面的虚拟磁盘,内存磁盘等等虚拟的设备,就是通过hook相应的中断服务实现的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-7-21 22:11 , Processed in 0.091227 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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