找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 9253|回复: 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下是不是可以获得对该设备的的完全控制呢?还望了解的高手给个解释啊* s8 [" s, j' j' o
, N; h0 a( q3 S. C6 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 发表 ( f6 F/ ?, n. w5 k9 z
之前追过EDK中的关于物理disk的访问,EDK source其实是通过win32 API进行访问的。现在有一个疑问:既然我们通过API可以将物理disk map到EDK中的NT32下,那么我们是不是可以map memory,IO,甚至于IRQ,如果这个可以的话,那是不是 ...
6 ~/ D9 m% I* O  [
, f. u( g$ ~; U2 R8 K8 o8 g
不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,
; F: t+ i- [3 ?1 k) m- V7 v) N! F1 W2 j1 W( u9 j
例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
; f# N: v& g6 c! o/ y6 }" f: M8 N+ r
: }+ H1 {' P3 M, e# r7 ]5 e' U仿真器一般不会直接I/O去和设备交互的,那样设计复杂,还容易和原来的驱动冲突。
$ o, J. g$ {% Y) G& @% V
% ^) z$ |5 c5 h$ }至于内存,有专门的Section Manager来管理映射。
) _8 g; h( A3 ^: z4 [
: j( u# f. U) y  n- ~' U6 ?[ 本帖最后由 qdk0901 于 2009-4-3 12:43 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-4-3 10:49:34 | 显示全部楼层
原帖由 qdk0901 于 2009-4-2 11:23 发表
9 `- V% ^$ h8 e3 `1 q
7 ]+ f$ E. z/ a% Z+ X
% n+ W3 j& `# l7 m' _) Z% t, ^! B不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,
. G$ v. A& ]( U5 c你把设备都禁用了,所有的IRP自然传不到附加驱动上。
. r/ Z& S$ w% m$ y! m  @, i( E; m2 l
例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
- |4 V; B0 w3 {4 {/ ~2 ]
( Z$ p  N8 ^' ?仿 ...

( L2 {$ N* V5 v% M% Y# _, Z多谢qdb0901解答,继续问下去啊/ m: G5 ~- Z5 [/ c' E% y2 ]
1、"是仿真器通过在原来的设备驱动栈上附加驱动实现的",你所说的"原来的设备驱动栈上"应该是windows下的驱动了?还有那个附加驱动应该是在NT32下的设备驱动了吧?
7 x* ^) m, d: H# y' o0 g) k2、你能讲一下上述工作的一个大致流程吗?# ^0 v/ _4 X2 ~' x; {* X
3、那是不是我们可以通过这种方式去模拟所有的设备?譬如pci设备?
回复

使用道具 举报

发表于 2009-4-3 12:54:49 | 显示全部楼层
通常每个设备上都挂了不止一个驱动,这些驱动一起形成一个链栈。
" r5 X9 e7 g# j2 ]* M每当上面有IRP发下来(即用户要通过IRP请求驱动去操作设备),8 K" f# \  r# Y  N- E
总是最上面的那个驱动先得到处理权。# H4 u. r1 V. w- V4 V5 i5 R; ^
该驱动可以按照自己的意愿去返回结果,也可以继续往下传送IRP,
8 E' y: S4 w/ v* C5 k6 P8 ~让下面的驱动去处理。
  s; S9 M9 q- U& @, j! B5 S/ @" v0 Z4 y( X
这个很类似于dos时代的hook中断服务程序(如果你做过的话会很熟悉)。
' [# X: X! a, g; D' r4 Q+ M4 P而dos下面的虚拟磁盘,内存磁盘等等虚拟的设备,就是通过hook相应的中断服务实现的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-3-5 00:33 , Processed in 0.022126 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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