找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 9851|回复: 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下是不是可以获得对该设备的的完全控制呢?还望了解的高手给个解释啊
) E' P& f3 p, @1 u5 {5 }7 \5 `/ G2 e$ ]6 P8 D
[ 本帖最后由 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 发表
9 G, y1 I3 H- y( q) W6 ^3 w之前追过EDK中的关于物理disk的访问,EDK source其实是通过win32 API进行访问的。现在有一个疑问:既然我们通过API可以将物理disk map到EDK中的NT32下,那么我们是不是可以map memory,IO,甚至于IRQ,如果这个可以的话,那是不是 ...
" T) Z6 Z' ]( s. I' C$ O1 U1 C

* r( f* J1 v% |4 [! ~" w不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,0 M, b8 t0 V1 F

' u& F* y+ U7 ^" D2 Y! e, F例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。, n0 g0 K: c( m" j% V) R

2 S$ j# c  s5 w5 m. U仿真器一般不会直接I/O去和设备交互的,那样设计复杂,还容易和原来的驱动冲突。
6 I: O2 l+ [" {% Q/ q8 j5 a* s' H, |2 C: G/ G+ s% V/ A" q
至于内存,有专门的Section Manager来管理映射。
4 T, C7 ^( ?* `
; h' m3 }% _( b/ a& s$ b* M" A- N[ 本帖最后由 qdk0901 于 2009-4-3 12:43 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-4-3 10:49:34 | 显示全部楼层
原帖由 qdk0901 于 2009-4-2 11:23 发表 # W# J) r. W4 v1 i: g4 n% j5 z; ?% X

: {* A9 E$ n, j2 n7 R
0 m, x- C! c4 K0 |- Y) A% {不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,
' z. G, H& B: ~( h0 h你把设备都禁用了,所有的IRP自然传不到附加驱动上。+ A  Q; g' J  g
& ~$ @* g, p3 j: u* d
例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。: A( y( b& I$ a/ W8 G- n7 ~0 W
, r2 D* c+ G5 g! e8 Q
仿 ...
: b, }. |. f' i! l
多谢qdb0901解答,继续问下去啊% h  c( T# N. c* E( D3 w. P
1、"是仿真器通过在原来的设备驱动栈上附加驱动实现的",你所说的"原来的设备驱动栈上"应该是windows下的驱动了?还有那个附加驱动应该是在NT32下的设备驱动了吧?
! y7 k3 m6 {- X0 W& o2、你能讲一下上述工作的一个大致流程吗?" I: D$ j, M) ]9 G# U- d/ Q) K! [& B  ~
3、那是不是我们可以通过这种方式去模拟所有的设备?譬如pci设备?
回复

使用道具 举报

发表于 2009-4-3 12:54:49 | 显示全部楼层
通常每个设备上都挂了不止一个驱动,这些驱动一起形成一个链栈。
; f* H: A& ~% [$ P9 P每当上面有IRP发下来(即用户要通过IRP请求驱动去操作设备),
  E9 A! K" D4 I1 H: Y! g总是最上面的那个驱动先得到处理权。; H$ M& U" @# z% x, e
该驱动可以按照自己的意愿去返回结果,也可以继续往下传送IRP,6 Y9 d+ U: U  d
让下面的驱动去处理。* ]* V' \/ }; x* C: r- E
8 W9 R/ L5 ]7 y7 P! o
这个很类似于dos时代的hook中断服务程序(如果你做过的话会很熟悉)。
8 n( n4 o6 D' ~: O! H3 v- o0 z而dos下面的虚拟磁盘,内存磁盘等等虚拟的设备,就是通过hook相应的中断服务实现的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-4 14:30 , Processed in 0.105525 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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