找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 9371|回复: 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下是不是可以获得对该设备的的完全控制呢?还望了解的高手给个解释啊
8 m* g; L' B* s7 }% u
0 P! B. ~4 @, j  V* V[ 本帖最后由 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 发表
  J5 L; D3 S- E& i% c- m+ p# G之前追过EDK中的关于物理disk的访问,EDK source其实是通过win32 API进行访问的。现在有一个疑问:既然我们通过API可以将物理disk map到EDK中的NT32下,那么我们是不是可以map memory,IO,甚至于IRQ,如果这个可以的话,那是不是 ...
/ J  T$ P0 f0 o: f
2 L9 @8 o) j4 {$ z) d
不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,- |) k6 N* O% J# z3 j1 O, X+ q

) G8 K% ^% U' r5 W3 n8 x例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。) n2 J* N8 d& y' {
$ z! b+ [& I5 z4 I
仿真器一般不会直接I/O去和设备交互的,那样设计复杂,还容易和原来的驱动冲突。
& M$ l, H" Q2 h7 ^  k' B
2 ^! C( z* Y# z( P9 \+ }! I, I至于内存,有专门的Section Manager来管理映射。, \- P% u6 N8 C2 n+ K# I

0 D4 m+ f* K, v6 b- \; D[ 本帖最后由 qdk0901 于 2009-4-3 12:43 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-4-3 10:49:34 | 显示全部楼层
原帖由 qdk0901 于 2009-4-2 11:23 发表
8 v% C7 I8 z# v% b  U, C. s% {# W8 K% @, Y. L

' a0 z4 o- `5 k; }) G' n不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,
8 j9 K* i/ B0 d7 z( k1 Q你把设备都禁用了,所有的IRP自然传不到附加驱动上。
, V' ]4 @( M1 B5 X3 z& i1 V# ?$ L( D) g, s6 i0 z: h
例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。: D6 r5 h, q4 |$ Z! m
, v7 w6 y# x3 N% Y+ a/ D( o( c6 k
仿 ...
8 e' U& K% y$ k7 ~3 P% `8 A; ^0 y
多谢qdb0901解答,继续问下去啊
1 `7 \) i4 c4 L1、"是仿真器通过在原来的设备驱动栈上附加驱动实现的",你所说的"原来的设备驱动栈上"应该是windows下的驱动了?还有那个附加驱动应该是在NT32下的设备驱动了吧?4 J8 J: X) G' \1 t7 M0 T
2、你能讲一下上述工作的一个大致流程吗?
: ~" p3 L. X- i: o$ i( m( k# i* Q! T9 ]3、那是不是我们可以通过这种方式去模拟所有的设备?譬如pci设备?
回复

使用道具 举报

发表于 2009-4-3 12:54:49 | 显示全部楼层
通常每个设备上都挂了不止一个驱动,这些驱动一起形成一个链栈。+ J9 _# ?+ w( \. g! o3 {% B
每当上面有IRP发下来(即用户要通过IRP请求驱动去操作设备),
; n2 T+ c# Y+ L/ `/ m8 r) d& i总是最上面的那个驱动先得到处理权。
/ I* ~1 n0 @$ j  V( S4 X# A9 Y该驱动可以按照自己的意愿去返回结果,也可以继续往下传送IRP,
% q8 S7 ]0 E% B, ~! _# E让下面的驱动去处理。) o$ U+ V5 t& m

/ z' R6 M1 ]4 ~. s9 y这个很类似于dos时代的hook中断服务程序(如果你做过的话会很熟悉)。: b; F! j& H! u: b
而dos下面的虚拟磁盘,内存磁盘等等虚拟的设备,就是通过hook相应的中断服务实现的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-29 04:51 , Processed in 0.054707 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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