找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 9859|回复: 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下是不是可以获得对该设备的的完全控制呢?还望了解的高手给个解释啊
1 y' y0 ^" [; J) o6 U1 \1 r* G% Q5 W% N
[ 本帖最后由 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 发表 7 D- C, D+ ~7 m8 b' c' E  r
之前追过EDK中的关于物理disk的访问,EDK source其实是通过win32 API进行访问的。现在有一个疑问:既然我们通过API可以将物理disk map到EDK中的NT32下,那么我们是不是可以map memory,IO,甚至于IRQ,如果这个可以的话,那是不是 ...

5 Z+ S% |% |1 T- O5 w/ A1 x. @5 R4 H! A, _
不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,* j. ]8 F5 q: Y4 B' u
: h! ]- B" n6 Q( d3 {5 R: r1 m
例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。$ A9 t! F; t8 R! b" U' D0 W; w; O- B2 u
. r2 A7 a8 b2 p& ], A$ \  v0 [% s6 S
仿真器一般不会直接I/O去和设备交互的,那样设计复杂,还容易和原来的驱动冲突。
5 J+ `' C( t7 d( p  s' \4 V1 ?$ g' E8 e* h
至于内存,有专门的Section Manager来管理映射。
+ p) R- l' m. _: ]5 S7 ?# @6 _+ J: Q4 b$ B5 T
[ 本帖最后由 qdk0901 于 2009-4-3 12:43 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-4-3 10:49:34 | 显示全部楼层
原帖由 qdk0901 于 2009-4-2 11:23 发表
5 w7 M; x# v" n9 D  }
% m7 _  A2 V, ?) Q4 O% ]/ f
2 x  ^2 A. C7 k* `7 W不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,2 F; y  z1 \# n; T0 |9 B, U) y
你把设备都禁用了,所有的IRP自然传不到附加驱动上。
- J$ `# ~, i. y; Q: `) ?/ |: ^5 z1 k
+ Q" ~8 d9 M! T9 ~; N例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。- |2 o0 O! |6 z; `% E. g
9 `  Q) y$ D3 g
仿 ...
' B6 W* g4 ]! N% X$ |5 r3 `/ P# K
多谢qdb0901解答,继续问下去啊
! r2 s( {$ o3 i/ b) F, m1、"是仿真器通过在原来的设备驱动栈上附加驱动实现的",你所说的"原来的设备驱动栈上"应该是windows下的驱动了?还有那个附加驱动应该是在NT32下的设备驱动了吧?
  c6 p$ Q2 q7 l! M' I: W5 m1 i3 _( R2、你能讲一下上述工作的一个大致流程吗?+ ^! L( |6 h! Y
3、那是不是我们可以通过这种方式去模拟所有的设备?譬如pci设备?
回复

使用道具 举报

发表于 2009-4-3 12:54:49 | 显示全部楼层
通常每个设备上都挂了不止一个驱动,这些驱动一起形成一个链栈。4 w7 G* y/ Y. f: I- c
每当上面有IRP发下来(即用户要通过IRP请求驱动去操作设备),
& F* P6 V9 Q2 o总是最上面的那个驱动先得到处理权。
7 I2 w  I0 N# [% ~. b7 Z该驱动可以按照自己的意愿去返回结果,也可以继续往下传送IRP," [* N) `" A6 u3 Y
让下面的驱动去处理。
9 U7 n1 J3 y7 o3 n, P# `8 L# K  P! U  L1 j# Q) y% e. _- d) G% U
这个很类似于dos时代的hook中断服务程序(如果你做过的话会很熟悉)。. ~# F" G$ Q6 A  [8 z
而dos下面的虚拟磁盘,内存磁盘等等虚拟的设备,就是通过hook相应的中断服务实现的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-8-11 16:57 , Processed in 0.049646 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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