找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 10124|回复: 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下是不是可以获得对该设备的的完全控制呢?还望了解的高手给个解释啊
0 X$ Q1 @2 z  }6 @  p; b0 u/ m; 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 发表
5 t) \/ d9 }* L4 K4 K, c之前追过EDK中的关于物理disk的访问,EDK source其实是通过win32 API进行访问的。现在有一个疑问:既然我们通过API可以将物理disk map到EDK中的NT32下,那么我们是不是可以map memory,IO,甚至于IRQ,如果这个可以的话,那是不是 ...
$ T% c2 H9 R2 P4 L5 c
! ]8 l. i1 `9 \- c5 W: I: Y
不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,. G9 u" g4 P. d
4 ]: O8 K! b) X7 T8 [
例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。3 g' Y2 f8 {: D: c0 P

9 v# q* Q" ?1 E) @" T3 Z% b仿真器一般不会直接I/O去和设备交互的,那样设计复杂,还容易和原来的驱动冲突。
  L% f, v5 E. p( A. l3 G* X/ q2 r
4 T# P' u8 J2 K: O! x至于内存,有专门的Section Manager来管理映射。
; o; }4 U) }# T. _' r7 [& f5 T$ r
; w4 r, h$ h% Z9 |2 h[ 本帖最后由 qdk0901 于 2009-4-3 12:43 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-4-3 10:49:34 | 显示全部楼层
原帖由 qdk0901 于 2009-4-2 11:23 发表
& L& v" T& `" L$ w. u# n; i# y+ p4 y8 e: c( m5 V1 y3 }
" k9 D8 H5 P* m, F  G7 |
不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,
1 |6 g* H" ^$ D" @" t3 S1 ?你把设备都禁用了,所有的IRP自然传不到附加驱动上。  u. v% Q4 p1 h+ i

9 Y1 s% Y: f) b3 ^例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
( A+ M3 m% Z. e% R  M& T& p4 W' F/ i9 o
仿 ...
+ ]/ a# F. \* U
多谢qdb0901解答,继续问下去啊- Q2 P7 x  K- r$ D5 J5 a) H
1、"是仿真器通过在原来的设备驱动栈上附加驱动实现的",你所说的"原来的设备驱动栈上"应该是windows下的驱动了?还有那个附加驱动应该是在NT32下的设备驱动了吧?1 S9 B! j( ~. I, d* G" x( M: N+ K
2、你能讲一下上述工作的一个大致流程吗?1 f2 V8 G7 Y% R9 {: V, g. Z
3、那是不是我们可以通过这种方式去模拟所有的设备?譬如pci设备?
回复

使用道具 举报

发表于 2009-4-3 12:54:49 | 显示全部楼层
通常每个设备上都挂了不止一个驱动,这些驱动一起形成一个链栈。' s4 ]. p) {! @- j: V
每当上面有IRP发下来(即用户要通过IRP请求驱动去操作设备),/ H1 t+ E2 t# J5 x- j& }5 W
总是最上面的那个驱动先得到处理权。9 l4 r0 K# ~+ k3 f7 Z7 G
该驱动可以按照自己的意愿去返回结果,也可以继续往下传送IRP,) m. C4 F: L& v+ W
让下面的驱动去处理。
+ B( Q' V* B! s* f
, Q2 w( X# R& p, r& K% g这个很类似于dos时代的hook中断服务程序(如果你做过的话会很熟悉)。0 ?8 m0 L/ U6 I$ j# A4 a8 ?' g+ K* w5 y
而dos下面的虚拟磁盘,内存磁盘等等虚拟的设备,就是通过hook相应的中断服务实现的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-11-3 23:07 , Processed in 0.443912 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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