找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 9356|回复: 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下是不是可以获得对该设备的的完全控制呢?还望了解的高手给个解释啊
0 U1 L/ j: h) m
4 m/ v' c3 l" m[ 本帖最后由 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 发表 + D2 p2 Q; `2 w1 b& @. _
之前追过EDK中的关于物理disk的访问,EDK source其实是通过win32 API进行访问的。现在有一个疑问:既然我们通过API可以将物理disk map到EDK中的NT32下,那么我们是不是可以map memory,IO,甚至于IRQ,如果这个可以的话,那是不是 ...
  p/ N$ G; {& r- H2 n/ C+ H

) G9 F; Y, W( h+ K不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,- J" e4 M0 `! x! {

. F( j5 ^' G- O' _% F9 c, ?" c例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。9 `+ N# B: c2 ]

  n' y$ ?% x, Z" l4 u3 w. g仿真器一般不会直接I/O去和设备交互的,那样设计复杂,还容易和原来的驱动冲突。- T8 K/ h/ r& u

/ g5 e9 m, s- C至于内存,有专门的Section Manager来管理映射。1 m+ P0 x8 \, e/ K6 X1 R
2 F" E( v9 t: m/ }
[ 本帖最后由 qdk0901 于 2009-4-3 12:43 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-4-3 10:49:34 | 显示全部楼层
原帖由 qdk0901 于 2009-4-2 11:23 发表
6 {% t$ ~0 b9 H9 `& g, M4 o# Q$ E% z, O' a5 A* z
; y( F/ I/ N  e* b+ A$ F4 a" A9 O
不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,
6 t( n% `% t7 }& A5 x$ y你把设备都禁用了,所有的IRP自然传不到附加驱动上。
. \6 V0 U# D. M, }; Z  p  Z& Y. b
+ O" X7 m4 c" A% ^9 q- W例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
6 p2 Q0 s, ?0 T1 K) ?7 c( \# u) i8 C- ?
仿 ...
7 c$ v3 c' }. I4 P1 K9 H
多谢qdb0901解答,继续问下去啊
4 V* [! r3 y8 Z3 L$ @+ d' U1、"是仿真器通过在原来的设备驱动栈上附加驱动实现的",你所说的"原来的设备驱动栈上"应该是windows下的驱动了?还有那个附加驱动应该是在NT32下的设备驱动了吧?/ p; l9 Z9 M# d1 }' ]6 r4 d
2、你能讲一下上述工作的一个大致流程吗?5 E, e+ w  i  b+ K
3、那是不是我们可以通过这种方式去模拟所有的设备?譬如pci设备?
回复

使用道具 举报

发表于 2009-4-3 12:54:49 | 显示全部楼层
通常每个设备上都挂了不止一个驱动,这些驱动一起形成一个链栈。* J/ P( p$ N2 a0 i' h1 a' R
每当上面有IRP发下来(即用户要通过IRP请求驱动去操作设备),  B4 \) \) p! i# x
总是最上面的那个驱动先得到处理权。/ z5 d& u/ n2 ^; A) L
该驱动可以按照自己的意愿去返回结果,也可以继续往下传送IRP,
9 s" U2 K: V# l6 w+ s3 z( d0 _( Z让下面的驱动去处理。
5 B% B- W+ I7 H" X# p
. u0 g* D) a/ J/ [! Q这个很类似于dos时代的hook中断服务程序(如果你做过的话会很熟悉)。
& H' M8 U# e1 a9 U" q# D: J而dos下面的虚拟磁盘,内存磁盘等等虚拟的设备,就是通过hook相应的中断服务实现的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-12 06:50 , Processed in 0.039684 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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