找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 9780|回复: 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下是不是可以获得对该设备的的完全控制呢?还望了解的高手给个解释啊
. D8 I0 a) _0 P
/ Q0 P9 a% L8 d! F" T- ~  ~  h: 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 发表
  p7 G: c. S8 Q' f9 _6 v$ z: c之前追过EDK中的关于物理disk的访问,EDK source其实是通过win32 API进行访问的。现在有一个疑问:既然我们通过API可以将物理disk map到EDK中的NT32下,那么我们是不是可以map memory,IO,甚至于IRQ,如果这个可以的话,那是不是 ...
/ G+ G- r- r8 A7 X  q$ o
+ d0 c& V+ G  k/ S5 c: s0 M
不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,
$ \% c4 R' ^- P
9 D" T. X; _- G0 ?8 Q# }' v& y例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
  r; u0 U9 n0 U  M! [  o5 T
/ e0 @( P  ^/ _0 @* _5 O* }仿真器一般不会直接I/O去和设备交互的,那样设计复杂,还容易和原来的驱动冲突。
5 i$ x2 i# g" X; H" e# \: E( a% j; \1 [# C% I3 ?
至于内存,有专门的Section Manager来管理映射。
$ Y4 s! ?# }3 ]  q' _
3 C; P! c1 q: \5 F3 v2 s1 [. t9 @[ 本帖最后由 qdk0901 于 2009-4-3 12:43 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-4-3 10:49:34 | 显示全部楼层
原帖由 qdk0901 于 2009-4-2 11:23 发表 : D0 g& P' C: A
/ `9 [+ m: `: W) k
0 n% o7 f; i3 a1 M, k8 c& P
不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,
% E8 J& |) t9 U; N你把设备都禁用了,所有的IRP自然传不到附加驱动上。$ |6 Z/ O7 `1 D8 Z

. }4 k. c3 U* b( O例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
' P  o& {- T! B& p& }
0 v3 n* l8 O" |9 W0 i仿 ...
$ t4 ]) d6 @8 ~3 V( z; x! E  K
多谢qdb0901解答,继续问下去啊. C) ]/ X8 i. B: m4 z2 x& \
1、"是仿真器通过在原来的设备驱动栈上附加驱动实现的",你所说的"原来的设备驱动栈上"应该是windows下的驱动了?还有那个附加驱动应该是在NT32下的设备驱动了吧?
0 K; _2 B6 D0 i+ s+ j  y( N2、你能讲一下上述工作的一个大致流程吗?
1 D7 w/ {- L; u2 G- T3、那是不是我们可以通过这种方式去模拟所有的设备?譬如pci设备?
回复

使用道具 举报

发表于 2009-4-3 12:54:49 | 显示全部楼层
通常每个设备上都挂了不止一个驱动,这些驱动一起形成一个链栈。
, i) L! n! }# |: j/ j每当上面有IRP发下来(即用户要通过IRP请求驱动去操作设备),
) [- Q0 K- [2 _. }$ D2 d/ B总是最上面的那个驱动先得到处理权。8 |$ g9 n& t+ l- y8 }, |0 ~
该驱动可以按照自己的意愿去返回结果,也可以继续往下传送IRP,$ f) i1 u' o# v7 m6 w( B
让下面的驱动去处理。
- V2 I% g3 E# L$ M# x8 m* U. s4 r/ P. L
这个很类似于dos时代的hook中断服务程序(如果你做过的话会很熟悉)。' N7 W9 }! A3 ^6 H8 P
而dos下面的虚拟磁盘,内存磁盘等等虚拟的设备,就是通过hook相应的中断服务实现的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-5 17:52 , Processed in 0.054521 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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