找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 9889|回复: 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下是不是可以获得对该设备的的完全控制呢?还望了解的高手给个解释啊; \8 c4 r6 w6 Y, Q8 p

1 x& }4 G& l! n. I) a# 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 发表 " o' n1 F: A: @9 X. _
之前追过EDK中的关于物理disk的访问,EDK source其实是通过win32 API进行访问的。现在有一个疑问:既然我们通过API可以将物理disk map到EDK中的NT32下,那么我们是不是可以map memory,IO,甚至于IRQ,如果这个可以的话,那是不是 ...

. N) d. b& s! B+ r6 [1 Y" ^* S7 w
不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,) g/ s% ~* V. ~& v

9 h1 z. ]* n9 Y. Y  E! ^3 J例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。1 L  K3 Q& o5 h% F
4 O( F- p  Q  s; m, R( |4 q
仿真器一般不会直接I/O去和设备交互的,那样设计复杂,还容易和原来的驱动冲突。
$ R5 v. p5 F8 B; Y5 U* N6 k
- x+ O; V0 E3 a- _* [+ \! c7 a至于内存,有专门的Section Manager来管理映射。
6 X7 \2 n! j  C- _+ Z& w3 K# S) x3 m5 {
[ 本帖最后由 qdk0901 于 2009-4-3 12:43 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-4-3 10:49:34 | 显示全部楼层
原帖由 qdk0901 于 2009-4-2 11:23 发表
; x5 V; j3 e2 o8 z8 g4 j$ N* |0 o
* L& C# X3 Y) y4 A  S
. k2 V' [! w3 F不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,. y+ v, {& {; I7 b& l% f
你把设备都禁用了,所有的IRP自然传不到附加驱动上。7 i! g( a: ~4 C3 |

$ k/ c& E* ], _例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
$ W7 `1 E. o3 ~
1 h  h/ C3 z6 R; ~仿 ...
+ \8 [- o; c$ b8 H
多谢qdb0901解答,继续问下去啊% g7 t. q& ~7 A$ s( m
1、"是仿真器通过在原来的设备驱动栈上附加驱动实现的",你所说的"原来的设备驱动栈上"应该是windows下的驱动了?还有那个附加驱动应该是在NT32下的设备驱动了吧?
9 ?* f- K  b+ M8 Q+ u) i- `% @2、你能讲一下上述工作的一个大致流程吗?: @2 g1 [# z6 ?
3、那是不是我们可以通过这种方式去模拟所有的设备?譬如pci设备?
回复

使用道具 举报

发表于 2009-4-3 12:54:49 | 显示全部楼层
通常每个设备上都挂了不止一个驱动,这些驱动一起形成一个链栈。2 T2 g3 h( z/ \5 Y" g
每当上面有IRP发下来(即用户要通过IRP请求驱动去操作设备),
! c6 W3 s+ a: V" p( z" Y总是最上面的那个驱动先得到处理权。
  W$ Z8 @& E0 F2 b该驱动可以按照自己的意愿去返回结果,也可以继续往下传送IRP,
7 _4 q/ `8 O  S: N& q: w) h( e" w让下面的驱动去处理。
+ i( i& s- j5 i" r5 r% w% l, Q/ l; Y7 c/ h% A! {3 F0 l' x
这个很类似于dos时代的hook中断服务程序(如果你做过的话会很熟悉)。
% h0 M7 X- Z) A8 C! v2 `+ n* }而dos下面的虚拟磁盘,内存磁盘等等虚拟的设备,就是通过hook相应的中断服务实现的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-1 17:47 , Processed in 1.103234 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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