找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 10038|回复: 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下是不是可以获得对该设备的的完全控制呢?还望了解的高手给个解释啊
7 p+ s0 {8 _* w: \' b3 J
# [" w( W+ N' B# o[ 本帖最后由 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 发表
* X1 C1 I' i6 k/ {之前追过EDK中的关于物理disk的访问,EDK source其实是通过win32 API进行访问的。现在有一个疑问:既然我们通过API可以将物理disk map到EDK中的NT32下,那么我们是不是可以map memory,IO,甚至于IRQ,如果这个可以的话,那是不是 ...
6 k7 B( L+ ]% O) |- j6 a8 a7 k
% F" R7 k# R  h" k4 W" a
不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,' H1 o) Q% n# _2 b3 H

: q7 \1 w3 p, `' m/ t+ B. e$ S$ a例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。/ m3 a& N& E' _. g' {( V. F8 g6 R

/ E+ ^' Q! k2 F! v7 x8 [; T. P仿真器一般不会直接I/O去和设备交互的,那样设计复杂,还容易和原来的驱动冲突。
( ]7 x% b7 k: ]" Q; G2 u0 R
' A& B/ ?0 e" _. \至于内存,有专门的Section Manager来管理映射。
4 P! Z! d: C7 a) ^3 Y
! Y+ c, }+ v; k* ?5 L[ 本帖最后由 qdk0901 于 2009-4-3 12:43 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-4-3 10:49:34 | 显示全部楼层
原帖由 qdk0901 于 2009-4-2 11:23 发表 - i7 Z; b9 G, R4 `) Y# ?; T
- Y. p% F$ C4 y( j% k4 m& d8 F# f
  N. Y- T9 A8 e% h8 f5 C/ ^* b) D
不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,
  f0 V% F& t9 Z1 G5 B你把设备都禁用了,所有的IRP自然传不到附加驱动上。
' z9 B2 d. T2 y; q; `- T5 h2 x, L2 Z2 r. @
例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
, x2 A6 o: D" W# K  w( M6 f7 q9 S9 f& x8 ]. L9 v$ F
仿 ...
& @% ~' y9 z5 ]/ ^- m5 A
多谢qdb0901解答,继续问下去啊: f% R  l) B; V' v
1、"是仿真器通过在原来的设备驱动栈上附加驱动实现的",你所说的"原来的设备驱动栈上"应该是windows下的驱动了?还有那个附加驱动应该是在NT32下的设备驱动了吧?; P7 u% d3 a" ?+ v$ [
2、你能讲一下上述工作的一个大致流程吗?: q9 X& X% o: \/ I1 Z" O
3、那是不是我们可以通过这种方式去模拟所有的设备?譬如pci设备?
回复

使用道具 举报

发表于 2009-4-3 12:54:49 | 显示全部楼层
通常每个设备上都挂了不止一个驱动,这些驱动一起形成一个链栈。* k- n% u/ Z, z8 M1 k
每当上面有IRP发下来(即用户要通过IRP请求驱动去操作设备),
& G- m7 X; Z5 T% e总是最上面的那个驱动先得到处理权。4 V$ R# a' m- H2 P
该驱动可以按照自己的意愿去返回结果,也可以继续往下传送IRP,
2 b/ H) s8 j; s让下面的驱动去处理。
& Y3 h) N  Z$ @
& M& S7 W& f$ P  {% a( T这个很类似于dos时代的hook中断服务程序(如果你做过的话会很熟悉)。! q$ w- ?" j4 g( O9 g, H( [
而dos下面的虚拟磁盘,内存磁盘等等虚拟的设备,就是通过hook相应的中断服务实现的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-10-12 08:42 , Processed in 0.050890 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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