|
发表于 2012-1-5 18:32:42
|
显示全部楼层
见到过最多的就是
) a, C' K" W, U8 P- U+ `4 s WMI ACPI ,
: X E' ?: u i" z# D% l 1. 一般做法都是 BIOS在CODE中定义一个Device, PNP0C14 ?? 记不太清了 ,
3 Z0 X; ?; k0 ?$ k2 V6 b 2. 然后 OS会为此device 安装提供Driver, 然后BIOS 在这个Device Scope里 实作一些 访问PC 的接口,% L/ u3 r' m) \/ w1 g7 N) y
并把这些接口Expose 出去,
% C% G' `& u; y4 v1 i3 s 3. 上层应用程式 即可透过这些 接口 访问底层 (直接调用Windows API 即可); a& k2 I1 S1 {6 P2 [# G9 O
很久以前有实际操作过这个过个东西,: ?. x- Z) X* @' | w2 }# J+ s1 J) b
当时也是看了好多好多资料,问了好多人,然后自己拿了一套BIOS code ,实作了一些Interface ,总算明白了一点点了,但是这个东西太多了啊!!! 8 _. ^, g9 v, d2 q% x& ]; f
另外,论坛里也有很多资料哦, 可仿照做做; V/ R( z/ J0 s4 W2 P/ o
当然WMI ,决不限于此,我感觉,它的好处是可以不用自己写Driver,就可以透过API访问底层,同时不用考虑兼容性, / O) v& S+ D+ {7 i3 d; ~4 \9 u) [# U# s
Windows 会为你处理好这个,因为是通过Windows driver 来实现的,当然,要做出特殊的客制化功能,还是得BIOS配合一下哦/ F# V0 J" T' v* a
WMI 和BIOS之间是透过 WMIACPI.sys 来通信$ H+ `1 l! h, c
另外,如果你发现调用 WMI接口可以访问 EC控制的device ,那么,应该是BIOS中为你做好了 访问EC的interface 2 a- ]5 Q% g/ j3 I2 o6 Z
也可以看看WMI ACPI的白皮书 ,有详细讲解, F5 q$ N0 ?* h! m* @' K
以上是个人的一些实践总结, 有误请指正,谢谢9 r4 r& n" z2 [2 Q9 y7 U+ I
7 E2 w- L9 J1 w6 i: s0 V3 O$ Y
[ 本帖最后由 蓝色永恒 于 2012-1-5 18:47 编辑 ] |
|