找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 9985|回复: 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下是不是可以获得对该设备的的完全控制呢?还望了解的高手给个解释啊
: a6 W7 z' b5 @
1 U# M9 k3 w2 f: l' f/ y2 i5 M[ 本帖最后由 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 发表 . Q( [# I& @3 |
之前追过EDK中的关于物理disk的访问,EDK source其实是通过win32 API进行访问的。现在有一个疑问:既然我们通过API可以将物理disk map到EDK中的NT32下,那么我们是不是可以map memory,IO,甚至于IRQ,如果这个可以的话,那是不是 ...

8 ]( }% T( `$ [+ s" o3 X. u7 x5 H% e4 [
不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,% l5 ]  l/ u# s# u+ m9 p3 {  t
" j' P6 e3 i: \. A* b4 X6 G9 q- V+ l2 z# f
例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
) a- g8 E+ K! q6 P7 x! M- u5 g) ^9 w+ [6 f* U4 f6 O
仿真器一般不会直接I/O去和设备交互的,那样设计复杂,还容易和原来的驱动冲突。3 z9 K9 ?$ e/ P9 G% }0 e
8 G3 z& s$ r/ k2 U+ {5 _% |
至于内存,有专门的Section Manager来管理映射。
& G' l7 X! O& s/ R, \( W9 w8 k# E8 V0 r5 x/ V! Y' t! W
[ 本帖最后由 qdk0901 于 2009-4-3 12:43 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-4-3 10:49:34 | 显示全部楼层
原帖由 qdk0901 于 2009-4-2 11:23 发表
, c% A5 r% R8 t2 G9 H$ `# g* M' `% T9 K: [) U8 i) }0 A
+ R5 e2 }) w" J: A2 E
不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,; k3 P; y: z8 w. A+ ~' ?
你把设备都禁用了,所有的IRP自然传不到附加驱动上。
: X6 i, g0 ?* {( [$ y: O0 L8 @; O1 S
例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
. A6 e  c* ]# Q
) o; v* j5 t. {仿 ...
% Q0 q2 Z' p" o2 O1 h. |! D
多谢qdb0901解答,继续问下去啊
* C. ~% q/ U% j1 z1、"是仿真器通过在原来的设备驱动栈上附加驱动实现的",你所说的"原来的设备驱动栈上"应该是windows下的驱动了?还有那个附加驱动应该是在NT32下的设备驱动了吧?6 O. s; B9 C# g+ M
2、你能讲一下上述工作的一个大致流程吗?  N7 L" B  f% ]4 ~
3、那是不是我们可以通过这种方式去模拟所有的设备?譬如pci设备?
回复

使用道具 举报

发表于 2009-4-3 12:54:49 | 显示全部楼层
通常每个设备上都挂了不止一个驱动,这些驱动一起形成一个链栈。
6 U/ q% \2 n  I8 ^每当上面有IRP发下来(即用户要通过IRP请求驱动去操作设备),  S0 C: Q- `1 ?+ T5 c: h. [* `
总是最上面的那个驱动先得到处理权。8 f* F# g7 |7 X! B5 g( E
该驱动可以按照自己的意愿去返回结果,也可以继续往下传送IRP,
0 e2 U/ x. n, b8 p5 x+ J" |4 G让下面的驱动去处理。# d6 h1 p: y4 Z+ W% B- K8 r
+ E7 O+ U6 I- y& v1 s2 E" Y
这个很类似于dos时代的hook中断服务程序(如果你做过的话会很熟悉)。, e: M" h) S. h- S9 e  a
而dos下面的虚拟磁盘,内存磁盘等等虚拟的设备,就是通过hook相应的中断服务实现的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-8 10:58 , Processed in 0.403053 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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