找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 10117|回复: 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下是不是可以获得对该设备的的完全控制呢?还望了解的高手给个解释啊& v1 k6 ]( D  Z9 F

/ I9 r4 ?3 _' ]( @2 r[ 本帖最后由 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 发表
' F: k0 L" x/ R- {$ I% w9 }: Z之前追过EDK中的关于物理disk的访问,EDK source其实是通过win32 API进行访问的。现在有一个疑问:既然我们通过API可以将物理disk map到EDK中的NT32下,那么我们是不是可以map memory,IO,甚至于IRQ,如果这个可以的话,那是不是 ...

- Q% y" S+ [% z4 K6 C' I
5 q. T1 c! R& j# \3 ~不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,, a3 b1 C* U6 G

: L  o+ V+ @+ i1 b5 I! F例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。- v! B( V: ?' ]; y- w; t4 f

4 ~5 V& c  e- c) B仿真器一般不会直接I/O去和设备交互的,那样设计复杂,还容易和原来的驱动冲突。- c& d8 [9 a4 ]7 v# ^

, m. `( J# f- ]至于内存,有专门的Section Manager来管理映射。
, p4 K# W: E% _8 k, n! C5 E
( e* r) H& F+ p& D* i[ 本帖最后由 qdk0901 于 2009-4-3 12:43 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-4-3 10:49:34 | 显示全部楼层
原帖由 qdk0901 于 2009-4-2 11:23 发表 ( r5 e$ J* P" Z

+ l  U; I) Z8 f0 w  p1 o' p) E+ a) `/ K5 d
不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,
# |. n% z4 _3 k* l你把设备都禁用了,所有的IRP自然传不到附加驱动上。0 ?- v6 e& S4 h$ b# Y
+ ]2 j2 ]/ }, \+ s% B/ M8 O
例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
2 p5 A% P; @2 R4 I
$ h9 Y9 Q" T; g仿 ...
5 T- r, l, \, T4 ]: D5 V
多谢qdb0901解答,继续问下去啊
( K: N% Q: `6 B4 {2 W1、"是仿真器通过在原来的设备驱动栈上附加驱动实现的",你所说的"原来的设备驱动栈上"应该是windows下的驱动了?还有那个附加驱动应该是在NT32下的设备驱动了吧?9 ^0 b* d6 [- d: p; o
2、你能讲一下上述工作的一个大致流程吗?
8 U8 y- j8 K  R7 m- `0 Y9 A/ W7 M3、那是不是我们可以通过这种方式去模拟所有的设备?譬如pci设备?
回复

使用道具 举报

发表于 2009-4-3 12:54:49 | 显示全部楼层
通常每个设备上都挂了不止一个驱动,这些驱动一起形成一个链栈。! n' @' Z1 T9 ^% R+ D2 d
每当上面有IRP发下来(即用户要通过IRP请求驱动去操作设备),
( ?3 O4 Q' w8 z" o4 A总是最上面的那个驱动先得到处理权。
2 Z3 d/ t! l0 `  ~& a8 e) C: `该驱动可以按照自己的意愿去返回结果,也可以继续往下传送IRP,
5 E3 z4 f9 _6 ~2 t& P让下面的驱动去处理。8 o) _  o" N1 f: Q

; J! y2 Z. Q, K1 f: {这个很类似于dos时代的hook中断服务程序(如果你做过的话会很熟悉)。
1 I1 z5 i  R/ ]0 s; t* \9 c6 J; l& [而dos下面的虚拟磁盘,内存磁盘等等虚拟的设备,就是通过hook相应的中断服务实现的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-11-1 20:29 , Processed in 0.091482 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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