找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 9796|回复: 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下是不是可以获得对该设备的的完全控制呢?还望了解的高手给个解释啊
( C& }. u- e: G, k4 p1 [2 f$ L0 F3 r4 d- N& t: b
[ 本帖最后由 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 发表
9 ?- |& o9 [: o1 d之前追过EDK中的关于物理disk的访问,EDK source其实是通过win32 API进行访问的。现在有一个疑问:既然我们通过API可以将物理disk map到EDK中的NT32下,那么我们是不是可以map memory,IO,甚至于IRQ,如果这个可以的话,那是不是 ...
* |7 H$ v/ U0 {3 D% D3 V) C, y3 f

% F* V+ a5 |5 {( }* x" ^0 z" P6 `不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,6 o: `2 Z  _3 @. V! B$ S
! z7 j! O2 V* X5 V& |/ Y
例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
- M$ s6 y* _. `
* x$ [  t" i8 L0 q仿真器一般不会直接I/O去和设备交互的,那样设计复杂,还容易和原来的驱动冲突。3 C% O& V# T, Y2 `- I/ u! n# u, G7 q# l# g
/ s0 \7 P! g( U) S' P; d
至于内存,有专门的Section Manager来管理映射。
# E# V2 x) r. e' y( a/ h* W: c) E: [# k: f) h( e; a# a
[ 本帖最后由 qdk0901 于 2009-4-3 12:43 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-4-3 10:49:34 | 显示全部楼层
原帖由 qdk0901 于 2009-4-2 11:23 发表 6 k" [8 n& |1 e. V1 h
2 B) [8 F0 M7 a" [  g5 \1 c/ \/ r3 p

2 c" G8 A5 m. \' m8 m- n不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,
$ n0 Y6 M! o$ v! k你把设备都禁用了,所有的IRP自然传不到附加驱动上。7 x' f: f5 M2 e9 @( x( [
* ~- Y) D" B% @/ I
例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
& t: i/ [  X; i% Z- Q/ U1 Y
8 E! x" t& F* H  z仿 ...
7 s7 {; |8 ^' L6 A
多谢qdb0901解答,继续问下去啊
) S* z, w" L- u# C3 v  O' t& C/ G1、"是仿真器通过在原来的设备驱动栈上附加驱动实现的",你所说的"原来的设备驱动栈上"应该是windows下的驱动了?还有那个附加驱动应该是在NT32下的设备驱动了吧?
# q8 m: X# u" N2、你能讲一下上述工作的一个大致流程吗?; P( B. P( n) P1 `0 U
3、那是不是我们可以通过这种方式去模拟所有的设备?譬如pci设备?
回复

使用道具 举报

发表于 2009-4-3 12:54:49 | 显示全部楼层
通常每个设备上都挂了不止一个驱动,这些驱动一起形成一个链栈。
& c1 n) R3 F" {( W& b每当上面有IRP发下来(即用户要通过IRP请求驱动去操作设备),
1 x* _5 p9 I4 Y" s# r总是最上面的那个驱动先得到处理权。: U3 Z0 i. W/ B) a+ v, u
该驱动可以按照自己的意愿去返回结果,也可以继续往下传送IRP,
" \6 f9 g$ G  T! k9 G" ~让下面的驱动去处理。
. a) ?% j! W1 I& P+ F
: k! X6 ]# r9 @这个很类似于dos时代的hook中断服务程序(如果你做过的话会很熟悉)。
% j$ Z& u( R$ ]( O8 f/ Z而dos下面的虚拟磁盘,内存磁盘等等虚拟的设备,就是通过hook相应的中断服务实现的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-15 06:45 , Processed in 0.154924 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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