找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 9644|回复: 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下是不是可以获得对该设备的的完全控制呢?还望了解的高手给个解释啊
6 ]9 `2 }' P- h
& D: U5 l( u- v[ 本帖最后由 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 发表 4 X4 Q/ C! r% H( [2 g( z
之前追过EDK中的关于物理disk的访问,EDK source其实是通过win32 API进行访问的。现在有一个疑问:既然我们通过API可以将物理disk map到EDK中的NT32下,那么我们是不是可以map memory,IO,甚至于IRQ,如果这个可以的话,那是不是 ...

2 |- L- a- ]; V* i2 ?; R
1 z. }# \% g9 }5 _1 c; ]不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,
% e2 R8 [: A' z8 K4 ?: L0 n# D" N% V# I) G  P; H
例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。8 l3 ~' Q$ N( C: c" {0 k
( ?4 R0 v0 r  A
仿真器一般不会直接I/O去和设备交互的,那样设计复杂,还容易和原来的驱动冲突。+ d: i; ]1 B# B

) p4 X; A3 ?/ N8 ]. e$ V* s至于内存,有专门的Section Manager来管理映射。* ^( `( s; C7 M3 q9 U7 t
" R2 T0 G4 x7 Q2 \0 [$ N
[ 本帖最后由 qdk0901 于 2009-4-3 12:43 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-4-3 10:49:34 | 显示全部楼层
原帖由 qdk0901 于 2009-4-2 11:23 发表
- t( }# U1 r$ a8 ^; n0 Z
+ w5 B' O& R, \9 b8 x
3 T9 N" t& q6 k; U不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,1 C  K. G0 g' t" h1 J% }
你把设备都禁用了,所有的IRP自然传不到附加驱动上。
( h0 m+ a8 ]6 r* K/ v, r  T( d4 t, S5 T
例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。! Q& S5 U' B/ p2 u# U: E

/ z6 n1 U" S" e- z8 g3 M- t仿 ...
8 u! u' z' ?9 w  K+ r" g# ?) p
多谢qdb0901解答,继续问下去啊
& F+ R2 }$ [" g" R4 J1、"是仿真器通过在原来的设备驱动栈上附加驱动实现的",你所说的"原来的设备驱动栈上"应该是windows下的驱动了?还有那个附加驱动应该是在NT32下的设备驱动了吧?/ B8 `2 q7 A% U4 B7 D. @' V6 [1 U
2、你能讲一下上述工作的一个大致流程吗?- C- _# Q9 O4 n# Z; Q- |3 v9 |
3、那是不是我们可以通过这种方式去模拟所有的设备?譬如pci设备?
回复

使用道具 举报

发表于 2009-4-3 12:54:49 | 显示全部楼层
通常每个设备上都挂了不止一个驱动,这些驱动一起形成一个链栈。0 j  ]5 p9 f6 H
每当上面有IRP发下来(即用户要通过IRP请求驱动去操作设备),
0 ^5 |7 w7 Z, n& y6 B1 p总是最上面的那个驱动先得到处理权。
! H5 t' O4 Y9 Z! x该驱动可以按照自己的意愿去返回结果,也可以继续往下传送IRP,
1 s8 D& x/ v- Q让下面的驱动去处理。
( |+ w6 ^( g* D4 }# G
  g1 v  ^& a2 N* m这个很类似于dos时代的hook中断服务程序(如果你做过的话会很熟悉)。' j  k, f1 i/ r% i& z) p# B8 q
而dos下面的虚拟磁盘,内存磁盘等等虚拟的设备,就是通过hook相应的中断服务实现的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-18 22:41 , Processed in 0.403442 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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