找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 9984|回复: 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下是不是可以获得对该设备的的完全控制呢?还望了解的高手给个解释啊2 L/ v( }* s+ i" e( D( d3 |. H
9 Q/ [3 J( h0 Z4 f8 l: |
[ 本帖最后由 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 J8 w$ \3 C2 B1 Q, p
之前追过EDK中的关于物理disk的访问,EDK source其实是通过win32 API进行访问的。现在有一个疑问:既然我们通过API可以将物理disk map到EDK中的NT32下,那么我们是不是可以map memory,IO,甚至于IRQ,如果这个可以的话,那是不是 ...

) T0 N/ A' k! q8 d1 O* ~3 ?7 T
% R; s3 z5 F$ w$ m# Q6 \! v不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,
8 V  t' k. n) p* P! B2 d) P: {1 x+ Y- D
: P% `0 F% _0 F  k" x7 ^; g  Q例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
. |" i7 _, L2 O4 a6 l; i
- u" t9 Z/ P. ]+ r7 ^0 c5 {& F% S仿真器一般不会直接I/O去和设备交互的,那样设计复杂,还容易和原来的驱动冲突。2 E6 C# E% R( {( s' [' N
: f3 D  J- p. D( @6 ?
至于内存,有专门的Section Manager来管理映射。
6 V" U1 b1 B! [, }6 e3 [
' W+ [. c8 N+ ][ 本帖最后由 qdk0901 于 2009-4-3 12:43 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-4-3 10:49:34 | 显示全部楼层
原帖由 qdk0901 于 2009-4-2 11:23 发表
  T' E, R' G1 q- X2 Z# X7 P( H( @: C

" b, s. Z0 Y2 I6 I不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,
$ G+ N6 h) J- m- G) ]你把设备都禁用了,所有的IRP自然传不到附加驱动上。# c* i6 I" Z! S7 d

0 s# Z0 O/ ]- x例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
; u6 b# i# P6 ?+ G; a9 D: Z, N+ Q$ v# Y* s1 z
仿 ...

, {/ b& n1 X1 e: c1 ]+ q. k多谢qdb0901解答,继续问下去啊: N, @* A9 J) Q1 r, M0 }" w
1、"是仿真器通过在原来的设备驱动栈上附加驱动实现的",你所说的"原来的设备驱动栈上"应该是windows下的驱动了?还有那个附加驱动应该是在NT32下的设备驱动了吧?
, r( C8 J, W# i1 h1 N2 h3 N* t" Q) b2、你能讲一下上述工作的一个大致流程吗?5 A+ X5 ?3 ?' _" |
3、那是不是我们可以通过这种方式去模拟所有的设备?譬如pci设备?
回复

使用道具 举报

发表于 2009-4-3 12:54:49 | 显示全部楼层
通常每个设备上都挂了不止一个驱动,这些驱动一起形成一个链栈。
+ p$ {5 C: m& T0 O每当上面有IRP发下来(即用户要通过IRP请求驱动去操作设备),
: q# f" E, `( L9 l总是最上面的那个驱动先得到处理权。
0 Q8 V5 `1 E/ ^! D该驱动可以按照自己的意愿去返回结果,也可以继续往下传送IRP,) Q" R* g4 S# P0 R- d
让下面的驱动去处理。
$ Q3 b9 m+ S6 }: `9 U6 n
- f) B, D3 j7 ?# h. u9 z这个很类似于dos时代的hook中断服务程序(如果你做过的话会很熟悉)。
$ v* v# ~) K9 U; D4 L而dos下面的虚拟磁盘,内存磁盘等等虚拟的设备,就是通过hook相应的中断服务实现的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-8 10:54 , Processed in 0.144449 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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