找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 9926|回复: 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下是不是可以获得对该设备的的完全控制呢?还望了解的高手给个解释啊  d, G0 t! P  J1 U/ H% ?* e

7 ?7 s: R6 d5 K) o5 k[ 本帖最后由 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 发表 4 A' M, \6 T* d9 t$ G9 J
之前追过EDK中的关于物理disk的访问,EDK source其实是通过win32 API进行访问的。现在有一个疑问:既然我们通过API可以将物理disk map到EDK中的NT32下,那么我们是不是可以map memory,IO,甚至于IRQ,如果这个可以的话,那是不是 ...
' B# Y9 P" i3 i1 C

% v# M% h( \/ Z! R  p1 m( ?0 t% ^不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,
! k: P+ {( v" v0 U9 E( E* x+ f4 _8 K! Q& v/ ^7 X1 ?# {
例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
  s% K, j) L) I4 x9 K& V3 [0 \- t+ d, [, b: F5 V9 x
仿真器一般不会直接I/O去和设备交互的,那样设计复杂,还容易和原来的驱动冲突。
+ \/ {4 ]( C! A8 |- {+ L4 J
' e; L. E6 J/ ^' S+ w+ A3 P至于内存,有专门的Section Manager来管理映射。9 L" J9 y6 B$ ~3 X  u
- u  z6 x+ {+ y9 `7 K
[ 本帖最后由 qdk0901 于 2009-4-3 12:43 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-4-3 10:49:34 | 显示全部楼层
原帖由 qdk0901 于 2009-4-2 11:23 发表
! O$ m4 u% S- h4 L1 J5 P4 e! B' M$ _# K# c1 m7 y) J2 W" E8 J- t
/ H+ C8 Q. I3 C2 T, r
不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,- k. M5 t& M6 }1 {* F9 m" ~! F) C
你把设备都禁用了,所有的IRP自然传不到附加驱动上。
" T6 F" d: y& e6 `) t
6 q- v; w! r  v. a例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。2 `, |6 K; x+ V2 P

7 Y! {7 }- U# S3 j% M4 u8 R仿 ...

! ]6 ?& g( v5 o/ y$ L  d7 B& [' W多谢qdb0901解答,继续问下去啊) {: |# t- L4 r3 k4 {9 x$ `" W0 H+ ?
1、"是仿真器通过在原来的设备驱动栈上附加驱动实现的",你所说的"原来的设备驱动栈上"应该是windows下的驱动了?还有那个附加驱动应该是在NT32下的设备驱动了吧?
1 y* s' b0 [. R, s7 z9 J3 c& Q2、你能讲一下上述工作的一个大致流程吗?
' }5 Y( ^% Y. C, _' I1 {3、那是不是我们可以通过这种方式去模拟所有的设备?譬如pci设备?
回复

使用道具 举报

发表于 2009-4-3 12:54:49 | 显示全部楼层
通常每个设备上都挂了不止一个驱动,这些驱动一起形成一个链栈。
0 h* j) [! R  x1 ~+ W5 ]1 t每当上面有IRP发下来(即用户要通过IRP请求驱动去操作设备),
7 ^5 Z' ]; ?1 v/ \总是最上面的那个驱动先得到处理权。
% {* u; _6 D) q9 p9 H3 G" L该驱动可以按照自己的意愿去返回结果,也可以继续往下传送IRP,. \! J3 x. Y0 V/ m) i% u# O
让下面的驱动去处理。0 q1 A9 {" U6 \# l% m) W. T( B

! _, m; _, G; ^# `! l; k这个很类似于dos时代的hook中断服务程序(如果你做过的话会很熟悉)。$ D) T) `7 y3 W
而dos下面的虚拟磁盘,内存磁盘等等虚拟的设备,就是通过hook相应的中断服务实现的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-18 21:01 , Processed in 0.061865 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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