找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 9890|回复: 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下是不是可以获得对该设备的的完全控制呢?还望了解的高手给个解释啊
+ y% {% M* S! t# s9 e7 r+ s' b: L+ X6 @7 Q, ^6 c- k6 p1 j4 j
[ 本帖最后由 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 发表 ; N. N& l  l, e. c
之前追过EDK中的关于物理disk的访问,EDK source其实是通过win32 API进行访问的。现在有一个疑问:既然我们通过API可以将物理disk map到EDK中的NT32下,那么我们是不是可以map memory,IO,甚至于IRQ,如果这个可以的话,那是不是 ...
$ ^7 B/ T/ P4 _0 W
! `- T7 l8 p, \7 d2 S
不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,
, a, ]/ S. C, _- _% t3 b1 m, r5 c5 d
例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
( X5 V" `, P6 |1 f: i7 l. r7 O) x
' U% p" F# g/ B& ?仿真器一般不会直接I/O去和设备交互的,那样设计复杂,还容易和原来的驱动冲突。8 N  }. n0 V& d' W
* G! u. M, j! \- m; k% x
至于内存,有专门的Section Manager来管理映射。" q+ O% D8 `6 `  h: y" V! a

+ f8 @  k9 m* x$ T[ 本帖最后由 qdk0901 于 2009-4-3 12:43 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-4-3 10:49:34 | 显示全部楼层
原帖由 qdk0901 于 2009-4-2 11:23 发表 1 j* ]; `8 x% V/ M) y4 F3 a( {
# V; W, w9 {& i/ v5 h
( F' w* Z3 N7 s& x- q% X
不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,5 O! X3 ~% K% t# j7 o
你把设备都禁用了,所有的IRP自然传不到附加驱动上。
) H' p8 y  a" L5 D: t& S
: a. D( Z$ U5 u, Z例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
2 v% B- K0 W9 D* n! h' ?" K
- _5 s& ^0 a% @) k仿 ...

& `& }9 k) O* ~/ G" H' k2 M多谢qdb0901解答,继续问下去啊
. F: V$ C$ z+ ~9 v1、"是仿真器通过在原来的设备驱动栈上附加驱动实现的",你所说的"原来的设备驱动栈上"应该是windows下的驱动了?还有那个附加驱动应该是在NT32下的设备驱动了吧?
) z7 _* G$ m5 b' f2、你能讲一下上述工作的一个大致流程吗?
8 g1 @' e: ^# J- d8 I3、那是不是我们可以通过这种方式去模拟所有的设备?譬如pci设备?
回复

使用道具 举报

发表于 2009-4-3 12:54:49 | 显示全部楼层
通常每个设备上都挂了不止一个驱动,这些驱动一起形成一个链栈。' t" K& K5 k0 T, p: |
每当上面有IRP发下来(即用户要通过IRP请求驱动去操作设备),. `8 d* j/ N0 s% o6 ~7 T
总是最上面的那个驱动先得到处理权。# o2 ~- F; b- f7 s7 o) J! E
该驱动可以按照自己的意愿去返回结果,也可以继续往下传送IRP,6 r* P' }7 g- u0 \1 H- M/ P
让下面的驱动去处理。
' o+ N4 E3 v! R# U2 s8 v- j  r) i" W7 p& }7 Z5 @  z/ S
这个很类似于dos时代的hook中断服务程序(如果你做过的话会很熟悉)。
7 S3 E! b6 e3 V% h而dos下面的虚拟磁盘,内存磁盘等等虚拟的设备,就是通过hook相应的中断服务实现的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-25 03:37 , Processed in 0.146451 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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