找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 9885|回复: 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下是不是可以获得对该设备的的完全控制呢?还望了解的高手给个解释啊
' U5 P8 p% |) l7 p- q
' o9 ^% c4 d0 r# ~7 b3 o/ ^[ 本帖最后由 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 发表
) }) x% x. b$ i  x& t  O之前追过EDK中的关于物理disk的访问,EDK source其实是通过win32 API进行访问的。现在有一个疑问:既然我们通过API可以将物理disk map到EDK中的NT32下,那么我们是不是可以map memory,IO,甚至于IRQ,如果这个可以的话,那是不是 ...
4 l' k  Z  r  ]6 V! J, p! O# b

+ z9 ]: L% c7 r9 g) F) q. T不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,9 p3 T: e4 a. l. H0 N7 f8 Y

' p0 u" `8 P, p例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
; l) ?  ]. k2 M& K5 T; M& ]
4 q- {5 R8 U9 }4 `仿真器一般不会直接I/O去和设备交互的,那样设计复杂,还容易和原来的驱动冲突。  ~. c8 b, C) Z) a3 t. |5 p" f5 a

' {- [! v& \, x. q2 C# ?6 N至于内存,有专门的Section Manager来管理映射。! P- E" y" ?3 J  e# P2 m7 _2 W  _, M
, `" X: K! X) Y; ?. t- n( @9 \9 L
[ 本帖最后由 qdk0901 于 2009-4-3 12:43 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-4-3 10:49:34 | 显示全部楼层
原帖由 qdk0901 于 2009-4-2 11:23 发表 ( A/ A7 R: C) T4 r2 ?+ `/ h$ a
2 I' G' S. A6 R5 ~4 J2 E

4 V6 \4 P3 P  E+ \/ ~不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,
3 t' ^# a4 I! J, J4 D你把设备都禁用了,所有的IRP自然传不到附加驱动上。
/ O9 f$ q2 }9 N4 P0 V0 v! {8 ?0 v) e  H4 w- m) l0 n. e
例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
* R! j% w  n3 ?5 F! r
8 V' z  g. C* Z9 {( B8 E仿 ...
6 `# |" ~4 E, y
多谢qdb0901解答,继续问下去啊2 a+ l1 F! Z% y; D1 l
1、"是仿真器通过在原来的设备驱动栈上附加驱动实现的",你所说的"原来的设备驱动栈上"应该是windows下的驱动了?还有那个附加驱动应该是在NT32下的设备驱动了吧?
* q+ F7 o2 g# `! b, v2、你能讲一下上述工作的一个大致流程吗?
  @1 E- ^( {0 R# o3、那是不是我们可以通过这种方式去模拟所有的设备?譬如pci设备?
回复

使用道具 举报

发表于 2009-4-3 12:54:49 | 显示全部楼层
通常每个设备上都挂了不止一个驱动,这些驱动一起形成一个链栈。$ J8 c! h, h1 a  L3 r
每当上面有IRP发下来(即用户要通过IRP请求驱动去操作设备),
* g# _' u* L: n! ]2 Y* Z( f总是最上面的那个驱动先得到处理权。
7 h. V! ~3 N5 B6 n+ k' W& u5 ^, j  l该驱动可以按照自己的意愿去返回结果,也可以继续往下传送IRP,
" ]- A( |  a% B" ]让下面的驱动去处理。
8 f( ]9 R9 T& a- O/ t# [6 A. l  L: X* r* s. }+ |3 e; g/ z, f
这个很类似于dos时代的hook中断服务程序(如果你做过的话会很熟悉)。
9 J/ x' h( F- \4 X, J/ S而dos下面的虚拟磁盘,内存磁盘等等虚拟的设备,就是通过hook相应的中断服务实现的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-20 05:43 , Processed in 0.040394 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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