找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 9958|回复: 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# d/ z0 M. g, ~- [. Y9 S3 h  m% E7 ]3 q9 E  h6 L( 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 发表
& T+ K  L3 Y$ M之前追过EDK中的关于物理disk的访问,EDK source其实是通过win32 API进行访问的。现在有一个疑问:既然我们通过API可以将物理disk map到EDK中的NT32下,那么我们是不是可以map memory,IO,甚至于IRQ,如果这个可以的话,那是不是 ...
7 Y6 f* a2 d, F1 z% G

; ]7 ]/ K: F2 ^& {2 i# K$ U9 X不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,
; u  L' l+ U5 `; D! y8 F+ R( E' @  S
2 W; l4 A6 E5 ~# m- F1 l! _- s例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
/ n2 _* z/ q  `1 H
& ]3 }5 x# I( u; W; ]  B# }9 U仿真器一般不会直接I/O去和设备交互的,那样设计复杂,还容易和原来的驱动冲突。
- P  A# n% B  P+ S2 c' Z* J1 Z2 A/ N6 X3 B0 V5 r8 t3 G2 \2 H
至于内存,有专门的Section Manager来管理映射。
2 e$ K; t% b$ ]7 t# s2 N+ Q5 o) ]+ Q& n' O
[ 本帖最后由 qdk0901 于 2009-4-3 12:43 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-4-3 10:49:34 | 显示全部楼层
原帖由 qdk0901 于 2009-4-2 11:23 发表 ; s  @' o( R, ]3 r- q! `

2 d$ b" Y) s) ~4 v7 E: q4 v+ K' v5 B9 l8 Y6 Y. j- S5 ^% `. H# ?
不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,
4 O: e  V; O* q! L. G9 |你把设备都禁用了,所有的IRP自然传不到附加驱动上。
' _4 L! D* ]4 N9 G6 q
, r$ `# q0 A0 N% Q例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。$ n; O. f4 ~! J6 F) q
4 `9 B6 |8 D* }) t
仿 ...

* `* N2 Z( J' c4 G0 o+ b多谢qdb0901解答,继续问下去啊
. D+ E( o, B! h, H3 E- \: P1、"是仿真器通过在原来的设备驱动栈上附加驱动实现的",你所说的"原来的设备驱动栈上"应该是windows下的驱动了?还有那个附加驱动应该是在NT32下的设备驱动了吧?
! f5 a% v) ~3 c2、你能讲一下上述工作的一个大致流程吗?
" R0 S& F0 m+ |2 o3、那是不是我们可以通过这种方式去模拟所有的设备?譬如pci设备?
回复

使用道具 举报

发表于 2009-4-3 12:54:49 | 显示全部楼层
通常每个设备上都挂了不止一个驱动,这些驱动一起形成一个链栈。! t7 }& z7 ?0 f2 p& ]4 O
每当上面有IRP发下来(即用户要通过IRP请求驱动去操作设备),
' K- M8 [# D5 v1 g5 O6 P  ]总是最上面的那个驱动先得到处理权。. K/ y# L- `/ ~2 J( A1 J- x4 a$ s
该驱动可以按照自己的意愿去返回结果,也可以继续往下传送IRP,% Z) r- o: H4 N% p/ Y
让下面的驱动去处理。
! h: ~. \9 e4 B& n; s  R
  E9 j4 K- o+ Q% d这个很类似于dos时代的hook中断服务程序(如果你做过的话会很熟悉)。' Z" Z8 q* r1 W$ L+ W) _) R8 L
而dos下面的虚拟磁盘,内存磁盘等等虚拟的设备,就是通过hook相应的中断服务实现的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-4 16:17 , Processed in 1.697578 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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