找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 10102|回复: 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下是不是可以获得对该设备的的完全控制呢?还望了解的高手给个解释啊3 v) ?* _. h' }: ^

7 S6 _3 }) q& J[ 本帖最后由 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 发表 ( S! p, s/ W" H
之前追过EDK中的关于物理disk的访问,EDK source其实是通过win32 API进行访问的。现在有一个疑问:既然我们通过API可以将物理disk map到EDK中的NT32下,那么我们是不是可以map memory,IO,甚至于IRQ,如果这个可以的话,那是不是 ...

! U9 |! N: i* A0 O: u2 e' ?/ j5 C$ h) r2 N8 \
不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,
! W+ S: J, ]$ F& E0 Y4 }& @+ ]" P/ d5 i* L
例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
. M3 }8 e$ l7 l. ]0 J# i, \( ]/ X0 [" v& g4 k; Q, s4 z3 x
仿真器一般不会直接I/O去和设备交互的,那样设计复杂,还容易和原来的驱动冲突。
7 @1 P* c. }% r: y& W
5 u/ e' i! G! W: e, J! ?  c' }至于内存,有专门的Section Manager来管理映射。" s/ ~# f/ O+ P$ E

! A/ y5 g1 a9 ?8 F, m+ O[ 本帖最后由 qdk0901 于 2009-4-3 12:43 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-4-3 10:49:34 | 显示全部楼层
原帖由 qdk0901 于 2009-4-2 11:23 发表 ) I$ x1 B" M9 X1 \2 P. J7 g* ]

+ c5 b- V4 j2 l4 M: i6 C3 u/ |, c. N& [7 a2 Z; B4 r$ I& C- Z
不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,
( z8 `2 |* t8 v; l你把设备都禁用了,所有的IRP自然传不到附加驱动上。: W- P+ e$ L  Q3 t7 D$ h

2 d# D$ l2 s. o; E& }例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。; Z* f+ C3 o* R; z# [
; V# n! p: r6 |' q
仿 ...
  D6 F6 v/ n% y  c
多谢qdb0901解答,继续问下去啊% a) ?3 Z  B# T, n. x
1、"是仿真器通过在原来的设备驱动栈上附加驱动实现的",你所说的"原来的设备驱动栈上"应该是windows下的驱动了?还有那个附加驱动应该是在NT32下的设备驱动了吧?
5 n. T, m' `- h8 s2、你能讲一下上述工作的一个大致流程吗?' a+ H' M# v9 p. P& d, O8 g
3、那是不是我们可以通过这种方式去模拟所有的设备?譬如pci设备?
回复

使用道具 举报

发表于 2009-4-3 12:54:49 | 显示全部楼层
通常每个设备上都挂了不止一个驱动,这些驱动一起形成一个链栈。
# k* h3 r4 A3 C$ S# z每当上面有IRP发下来(即用户要通过IRP请求驱动去操作设备),0 t  l- o4 D- W6 O' y5 e8 |# d& C
总是最上面的那个驱动先得到处理权。
+ k6 }' c( s& V2 a0 U& p4 G8 L该驱动可以按照自己的意愿去返回结果,也可以继续往下传送IRP,
, _: y& m' E' Y/ x$ \# A- N让下面的驱动去处理。9 _* J+ s! |' S$ n; d0 z
+ \$ V3 u1 S% u; B) \& i# _% b+ `
这个很类似于dos时代的hook中断服务程序(如果你做过的话会很熟悉)。/ S* S: w: I/ k2 \: n
而dos下面的虚拟磁盘,内存磁盘等等虚拟的设备,就是通过hook相应的中断服务实现的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-7-19 19:07 , Processed in 0.120644 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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