|
发表于 2012-1-5 18:32:42
|
显示全部楼层
见到过最多的就是
( a9 a1 {8 ]) j8 ~" V1 f0 E WMI ACPI ,
+ k- r1 o& S8 ] 1. 一般做法都是 BIOS在CODE中定义一个Device, PNP0C14 ?? 记不太清了 ,
) f4 l @% M1 g3 t/ Z b" W2 g7 | 2. 然后 OS会为此device 安装提供Driver, 然后BIOS 在这个Device Scope里 实作一些 访问PC 的接口,
, h1 P( a8 P2 I 并把这些接口Expose 出去, * o% j E( _# G% x# Y1 q/ `4 k8 ^, ^
3. 上层应用程式 即可透过这些 接口 访问底层 (直接调用Windows API 即可)0 ]- y1 m5 Y8 M. q$ g7 ]
很久以前有实际操作过这个过个东西,
' z( u! C4 a0 Z! C8 w5 x+ P 当时也是看了好多好多资料,问了好多人,然后自己拿了一套BIOS code ,实作了一些Interface ,总算明白了一点点了,但是这个东西太多了啊!!!
) Z& u+ O) w( u: g% t( g5 ]$ ^4 A 另外,论坛里也有很多资料哦, 可仿照做做
; o+ B$ J# a, _" I 当然WMI ,决不限于此,我感觉,它的好处是可以不用自己写Driver,就可以透过API访问底层,同时不用考虑兼容性,
3 f* [$ _6 X& H7 Z# i Windows 会为你处理好这个,因为是通过Windows driver 来实现的,当然,要做出特殊的客制化功能,还是得BIOS配合一下哦
5 A* E% V7 |6 Q- e7 N9 C S0 [# D WMI 和BIOS之间是透过 WMIACPI.sys 来通信$ z9 I' r6 ~ `. w
另外,如果你发现调用 WMI接口可以访问 EC控制的device ,那么,应该是BIOS中为你做好了 访问EC的interface ! u! J* ^0 V }5 K, T! ]( q1 L3 |
也可以看看WMI ACPI的白皮书 ,有详细讲解
& z1 Y% M* R7 n9 w9 N/ [, e3 i {以上是个人的一些实践总结, 有误请指正,谢谢
1 [9 e: p3 E2 e0 m& p4 |7 D$ _7 d' S" h9 `
[ 本帖最后由 蓝色永恒 于 2012-1-5 18:47 编辑 ] |
|