找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 9375|回复: 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下是不是可以获得对该设备的的完全控制呢?还望了解的高手给个解释啊
% T6 D: E( v" }
( i8 x  Z* C' U! q% J/ Y, e[ 本帖最后由 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 发表 1 ^0 c- e* ?9 L" r
之前追过EDK中的关于物理disk的访问,EDK source其实是通过win32 API进行访问的。现在有一个疑问:既然我们通过API可以将物理disk map到EDK中的NT32下,那么我们是不是可以map memory,IO,甚至于IRQ,如果这个可以的话,那是不是 ...
* E. j9 H$ V3 {* g3 H" E1 {

! j& y* y! g: T% I! m! u! V不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,' Q3 N. R6 r$ ~. v; ~$ `4 @1 H
7 w8 Q1 S% K; z/ `- L
例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
$ [  [& l) d) e9 I3 p1 t8 K( L; o
仿真器一般不会直接I/O去和设备交互的,那样设计复杂,还容易和原来的驱动冲突。
! B# D- g8 y0 t5 [' F2 o; @' e! C. G, J( ]1 u3 |
至于内存,有专门的Section Manager来管理映射。
- M  @. N# \5 r* ], h$ P
! [/ D6 I) q: C4 T$ E/ a[ 本帖最后由 qdk0901 于 2009-4-3 12:43 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-4-3 10:49:34 | 显示全部楼层
原帖由 qdk0901 于 2009-4-2 11:23 发表
- {. @' B. S- y$ N: c% J2 E+ d9 D# C! A  w+ r  R# [$ \- k3 \
- ~8 h0 y* [+ B8 ]0 g. k* m( u
不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,
& X' n) d& V1 K$ m你把设备都禁用了,所有的IRP自然传不到附加驱动上。( Y) n+ w4 K8 x5 \2 x

9 ]" B8 M. f6 [* {5 E/ t8 A. g例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。. J1 X" r3 i4 c0 g: S
. B& a' T) c' w' I4 T
仿 ...
. L$ i! L2 z1 P' u
多谢qdb0901解答,继续问下去啊$ q: {" D6 R( U" b3 X: ]8 N" a" ~
1、"是仿真器通过在原来的设备驱动栈上附加驱动实现的",你所说的"原来的设备驱动栈上"应该是windows下的驱动了?还有那个附加驱动应该是在NT32下的设备驱动了吧?
( l9 \8 i  Z) }4 B* Q2、你能讲一下上述工作的一个大致流程吗?; h! V  W, M. W9 ^: A$ Q  N2 M
3、那是不是我们可以通过这种方式去模拟所有的设备?譬如pci设备?
回复

使用道具 举报

发表于 2009-4-3 12:54:49 | 显示全部楼层
通常每个设备上都挂了不止一个驱动,这些驱动一起形成一个链栈。8 o  p' D6 l' t* x7 X# u
每当上面有IRP发下来(即用户要通过IRP请求驱动去操作设备),) ^$ I4 y9 y7 h( `: |
总是最上面的那个驱动先得到处理权。5 m+ B( F. u  `: ?& [
该驱动可以按照自己的意愿去返回结果,也可以继续往下传送IRP,
% G& v  b$ v3 b让下面的驱动去处理。5 A; I+ t, X0 T3 L8 x9 a
1 \# v5 x/ ~$ Q3 f
这个很类似于dos时代的hook中断服务程序(如果你做过的话会很熟悉)。: B2 i+ p% |5 h, v" S% |" Q0 ]
而dos下面的虚拟磁盘,内存磁盘等等虚拟的设备,就是通过hook相应的中断服务实现的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-2 08:03 , Processed in 0.043802 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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