找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 9629|回复: 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下是不是可以获得对该设备的的完全控制呢?还望了解的高手给个解释啊
( ^* s; Z# \+ X+ ~4 [
. s% U0 U6 Q' ~& U. W' `  }' T[ 本帖最后由 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 发表 " m2 E, S- \/ c. h' \. L
之前追过EDK中的关于物理disk的访问,EDK source其实是通过win32 API进行访问的。现在有一个疑问:既然我们通过API可以将物理disk map到EDK中的NT32下,那么我们是不是可以map memory,IO,甚至于IRQ,如果这个可以的话,那是不是 ...

( \3 t' @- b) Y# l
! d: R& u6 F  x& I; k+ N不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,
6 ?6 X: G$ ?& f; v
+ D3 g: f# |+ g例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。9 f" A6 }2 B: c/ A) U
, h6 m& W0 Z1 E0 F1 L. v  u
仿真器一般不会直接I/O去和设备交互的,那样设计复杂,还容易和原来的驱动冲突。, `; ^7 z# Z% d

; p# a. N, K: ~6 W1 L: b; q至于内存,有专门的Section Manager来管理映射。
  U8 ]3 a7 e0 _( Y/ o0 F! T* ?" E( D! O8 X, {* m8 j3 q) m; z
[ 本帖最后由 qdk0901 于 2009-4-3 12:43 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-4-3 10:49:34 | 显示全部楼层
原帖由 qdk0901 于 2009-4-2 11:23 发表 . M1 q# ^6 Q8 n% _" W

1 U$ N3 b$ j- i3 p( E+ ^
& q# `; T, Z# h6 B  p9 N: \不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,; b% P# Z7 {# v3 U1 b5 j9 E
你把设备都禁用了,所有的IRP自然传不到附加驱动上。
- M0 H  @5 h  l8 w
# H: e7 J% z5 j. ^( N6 m2 P例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
! B+ B" v) K6 P( h8 I- A0 g! l
5 t$ J+ \, P5 E3 [( I/ K: X4 j仿 ...
  L4 ]/ B4 l% `' \# j% [
多谢qdb0901解答,继续问下去啊
3 e5 y3 l! ]# v6 r1 Y6 R4 W4 m3 H$ B1、"是仿真器通过在原来的设备驱动栈上附加驱动实现的",你所说的"原来的设备驱动栈上"应该是windows下的驱动了?还有那个附加驱动应该是在NT32下的设备驱动了吧?+ K( L. y3 g+ j7 c  ^* S
2、你能讲一下上述工作的一个大致流程吗?; c6 p" B% O- ?+ a
3、那是不是我们可以通过这种方式去模拟所有的设备?譬如pci设备?
回复

使用道具 举报

发表于 2009-4-3 12:54:49 | 显示全部楼层
通常每个设备上都挂了不止一个驱动,这些驱动一起形成一个链栈。) @5 q+ u% X  K+ B2 Q$ @
每当上面有IRP发下来(即用户要通过IRP请求驱动去操作设备),  l) {) L% q' t7 S4 k# l5 a! d- C
总是最上面的那个驱动先得到处理权。
$ u! K/ _# J9 s# W该驱动可以按照自己的意愿去返回结果,也可以继续往下传送IRP,' ^# u! r/ q& r( r( O7 C
让下面的驱动去处理。( p6 B1 i) `) F! D% O$ X
1 [. Y6 V4 i5 P- J) j
这个很类似于dos时代的hook中断服务程序(如果你做过的话会很熟悉)。- [; l2 Z1 m7 Y7 f: a3 g) \9 V
而dos下面的虚拟磁盘,内存磁盘等等虚拟的设备,就是通过hook相应的中断服务实现的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-12 05:36 , Processed in 0.121524 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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