找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 9925|回复: 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下是不是可以获得对该设备的的完全控制呢?还望了解的高手给个解释啊) X; G$ x1 v9 q4 d" ~  z8 ~

- [6 D" Q1 l. q% Y+ v2 R0 D& m$ s[ 本帖最后由 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 发表 3 C& D+ M7 X' S6 s: H! {
之前追过EDK中的关于物理disk的访问,EDK source其实是通过win32 API进行访问的。现在有一个疑问:既然我们通过API可以将物理disk map到EDK中的NT32下,那么我们是不是可以map memory,IO,甚至于IRQ,如果这个可以的话,那是不是 ...
  Q: X3 W7 ?9 j1 \3 c" m; F. V
9 r8 }0 L* f; |9 D, @* ^" u1 ]
不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,8 z$ c% [1 x- [1 F$ x$ t" @' a2 F
" s1 J( _: R7 Z/ Z& t6 x
例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。+ h1 I7 d8 f! n; k+ _/ T
/ Z% r8 @8 V# O+ ?. \5 n
仿真器一般不会直接I/O去和设备交互的,那样设计复杂,还容易和原来的驱动冲突。5 E  ^# ?/ U4 v2 m' d
1 g+ f7 m7 h+ P+ q, [" D
至于内存,有专门的Section Manager来管理映射。
( e$ t* {0 b; V4 v8 n
8 r( i) Q" ~5 H$ z[ 本帖最后由 qdk0901 于 2009-4-3 12:43 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-4-3 10:49:34 | 显示全部楼层
原帖由 qdk0901 于 2009-4-2 11:23 发表 " x+ Y: O$ K( M: a' a' Y6 t8 P
9 j5 h. b( H7 T, m
+ [, p! k0 p! _' c0 _2 i) n
不可以,因为仿真的设备(NT32中看到的),是仿真器通过在原来的设备驱动栈上附加驱动实现的,
) f- J1 R+ s; L6 j9 Y" n9 v你把设备都禁用了,所有的IRP自然传不到附加驱动上。  r3 h, b) V& j) P$ V' K# I: |% f
7 A; r3 b+ r9 X$ |( Y$ a# |/ b
例如你把磁盘都禁用了(当然前提是你能),系统都挂了,自然谈不上仿真了。
& H/ h$ t6 d* A5 D5 @5 @0 H. K: `) f3 E# @8 R6 h
仿 ...
/ X7 D6 m. Z; A( M
多谢qdb0901解答,继续问下去啊
% o. D9 h3 i) }1、"是仿真器通过在原来的设备驱动栈上附加驱动实现的",你所说的"原来的设备驱动栈上"应该是windows下的驱动了?还有那个附加驱动应该是在NT32下的设备驱动了吧?
; i, T" Q$ {4 c' X; S2、你能讲一下上述工作的一个大致流程吗?$ ^# W( E: _( ]2 F6 \% n( F
3、那是不是我们可以通过这种方式去模拟所有的设备?譬如pci设备?
回复

使用道具 举报

发表于 2009-4-3 12:54:49 | 显示全部楼层
通常每个设备上都挂了不止一个驱动,这些驱动一起形成一个链栈。% G2 I0 S( s5 [: {
每当上面有IRP发下来(即用户要通过IRP请求驱动去操作设备),
% \- V8 w  \3 e, B总是最上面的那个驱动先得到处理权。
0 x, d) V9 e1 S" g该驱动可以按照自己的意愿去返回结果,也可以继续往下传送IRP,8 n8 l) L+ c$ C! l
让下面的驱动去处理。8 y* p; d: t3 ^# |
8 |5 \6 o( E) p/ Q" x9 |" i
这个很类似于dos时代的hook中断服务程序(如果你做过的话会很熟悉)。& |) D# y, l. p# c+ U# C8 u3 P9 `2 d
而dos下面的虚拟磁盘,内存磁盘等等虚拟的设备,就是通过hook相应的中断服务实现的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-18 20:05 , Processed in 0.418348 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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