找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 9938|回复: 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下是不是可以获得对该设备的的完全控制呢?还望了解的高手给个解释啊5 p. z. E6 U4 d3 O2 n; R

) m* F7 R* e" ], ?5 ~( u[ 本帖最后由 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 发表
' E" ^/ L4 |* {/ Z之前追过EDK中的关于物理disk的访问,EDK source其实是通过win32 API进行访问的。现在有一个疑问:既然我们通过API可以将物理disk map到EDK中的NT32下,那么我们是不是可以map memory,IO,甚至于IRQ,如果这个可以的话,那是不是 ...

  m( J" n5 U( o7 k6 N$ i: W4 s8 H/ x) W/ G
不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,
5 j- [5 \8 s+ y* R2 e, U+ \7 v" Q. ~& q( C* E0 R4 y
例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
0 r# {& V+ I6 D
; w0 F/ i' c7 H: @# R7 `2 U: ~8 o仿真器一般不会直接I/O去和设备交互的,那样设计复杂,还容易和原来的驱动冲突。+ o) N( C$ f0 ]8 U; W9 X* l- z! {
% f  f& f( p$ x9 H
至于内存,有专门的Section Manager来管理映射。
5 k4 X7 H- k! D/ `# V7 d$ k$ [8 X& N& s  t
[ 本帖最后由 qdk0901 于 2009-4-3 12:43 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-4-3 10:49:34 | 显示全部楼层
原帖由 qdk0901 于 2009-4-2 11:23 发表 0 c' M% N" S; g% e) \

8 W! ]  _% x9 q8 z- a% l1 b' ?) z( U0 r. b, f/ Q* P0 _
不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,, Z3 w! z/ @0 Y6 t/ Z
你把设备都禁用了,所有的IRP自然传不到附加驱动上。& T' c. s0 \- Z5 Z6 o' u; m
5 x$ @0 a9 b, E3 G- w! N
例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
9 v; u( B, D' z6 E6 x7 l( N% M/ _9 L' F) i
仿 ...

; o0 O6 M0 F( F* K5 c多谢qdb0901解答,继续问下去啊/ l, Z7 }( H; y% n
1、"是仿真器通过在原来的设备驱动栈上附加驱动实现的",你所说的"原来的设备驱动栈上"应该是windows下的驱动了?还有那个附加驱动应该是在NT32下的设备驱动了吧?
5 ^! i+ p$ m; j- A' \/ d- P2、你能讲一下上述工作的一个大致流程吗?
  t1 [: e; N3 G: W! f5 y3、那是不是我们可以通过这种方式去模拟所有的设备?譬如pci设备?
回复

使用道具 举报

发表于 2009-4-3 12:54:49 | 显示全部楼层
通常每个设备上都挂了不止一个驱动,这些驱动一起形成一个链栈。: J6 K. J2 z1 B& \0 d. |9 I: c
每当上面有IRP发下来(即用户要通过IRP请求驱动去操作设备),3 e+ m. Z! p) J; R6 q* x; h: L
总是最上面的那个驱动先得到处理权。
' b5 z$ i5 X4 g& R1 [该驱动可以按照自己的意愿去返回结果,也可以继续往下传送IRP,
2 z6 L" m5 Y* X$ J9 f让下面的驱动去处理。+ k, }% d. T3 E6 H$ Q% Q- ^

% W0 O6 V6 D% I* z" g( |这个很类似于dos时代的hook中断服务程序(如果你做过的话会很熟悉)。
4 x. \0 B. I- u9 W$ N$ a而dos下面的虚拟磁盘,内存磁盘等等虚拟的设备,就是通过hook相应的中断服务实现的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-21 21:54 , Processed in 0.721537 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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