找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 10037|回复: 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下是不是可以获得对该设备的的完全控制呢?还望了解的高手给个解释啊  x) @4 m4 {5 |
4 C; W$ E$ A& e- }* a8 X$ u
[ 本帖最后由 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 发表
, u- l1 b6 c3 ~% b之前追过EDK中的关于物理disk的访问,EDK source其实是通过win32 API进行访问的。现在有一个疑问:既然我们通过API可以将物理disk map到EDK中的NT32下,那么我们是不是可以map memory,IO,甚至于IRQ,如果这个可以的话,那是不是 ...
6 v2 ?- U- F0 K1 @" Z

& j; j: \) y6 o; V5 e不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,
. [; V0 B- M' z: |# Z6 K, U" B* h9 E4 W" J
例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
/ [% z: ]9 d8 d- n
$ V2 K2 c% A0 O) r仿真器一般不会直接I/O去和设备交互的,那样设计复杂,还容易和原来的驱动冲突。
# Z; ]6 C) M1 k6 M5 H
# B' [1 i$ H' B' j: c至于内存,有专门的Section Manager来管理映射。( ?9 g9 y" J: L7 m8 i/ B
" c2 Z, h. G! k% l2 G: z8 N8 R5 W
[ 本帖最后由 qdk0901 于 2009-4-3 12:43 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-4-3 10:49:34 | 显示全部楼层
原帖由 qdk0901 于 2009-4-2 11:23 发表
: F* A. j) F' R6 e1 P9 M. P
! Q" ~& Q  e) ^6 [. _4 L6 v0 y  g) N7 d( I
不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,
' u( Z' I+ U  R+ N$ _你把设备都禁用了,所有的IRP自然传不到附加驱动上。
+ L* c2 C4 ?- ]' |
2 z' C- d' U4 v9 o) j+ \) |5 O例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
7 r- Y4 k! x/ k; _& ]; t" `, O7 A$ q4 C, r4 i, s
仿 ...

* G' a" P5 ~. d/ X1 C多谢qdb0901解答,继续问下去啊2 M5 v! O# ~0 d5 n* m4 R
1、"是仿真器通过在原来的设备驱动栈上附加驱动实现的",你所说的"原来的设备驱动栈上"应该是windows下的驱动了?还有那个附加驱动应该是在NT32下的设备驱动了吧?
  N, H$ B% X2 a2、你能讲一下上述工作的一个大致流程吗?
2 i! z5 J  R+ Q" r. H6 Y! P3、那是不是我们可以通过这种方式去模拟所有的设备?譬如pci设备?
回复

使用道具 举报

发表于 2009-4-3 12:54:49 | 显示全部楼层
通常每个设备上都挂了不止一个驱动,这些驱动一起形成一个链栈。$ b8 T4 @& l* f8 [3 B
每当上面有IRP发下来(即用户要通过IRP请求驱动去操作设备),- S/ D' r$ s: n! d/ G0 b: a# O% U
总是最上面的那个驱动先得到处理权。& Q; L% X8 c8 q; _/ r* L+ q
该驱动可以按照自己的意愿去返回结果,也可以继续往下传送IRP,) J# z6 J4 Z% }$ o) \. P" ]3 t
让下面的驱动去处理。) q7 O- z% ?" [/ X" ?
  w! X0 j) `' j* ~6 D
这个很类似于dos时代的hook中断服务程序(如果你做过的话会很熟悉)。
3 B2 h6 V. M, X' C而dos下面的虚拟磁盘,内存磁盘等等虚拟的设备,就是通过hook相应的中断服务实现的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-10-12 07:27 , Processed in 0.613087 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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