|
|
发表于 2012-1-5 18:32:42
|
显示全部楼层
见到过最多的就是 ; U4 B0 P; r: i: N2 S6 Y
WMI ACPI ,
5 A) N y- u6 G( S. E# }$ O4 d 1. 一般做法都是 BIOS在CODE中定义一个Device, PNP0C14 ?? 记不太清了 ,
& \1 a, Q! i; l$ Q1 O/ o 2. 然后 OS会为此device 安装提供Driver, 然后BIOS 在这个Device Scope里 实作一些 访问PC 的接口,- W ]* s6 c- d8 {8 \
并把这些接口Expose 出去,
0 U$ e* a9 d' j5 c& d/ H: \( y) h 3. 上层应用程式 即可透过这些 接口 访问底层 (直接调用Windows API 即可)
( M$ N4 y& d, y 很久以前有实际操作过这个过个东西, z7 {) F) i% `, G6 s
当时也是看了好多好多资料,问了好多人,然后自己拿了一套BIOS code ,实作了一些Interface ,总算明白了一点点了,但是这个东西太多了啊!!!
2 l! A4 V" R3 E, w9 f# k4 G 另外,论坛里也有很多资料哦, 可仿照做做
, }# Q# c3 ]2 u$ x h' X0 o" d- x" X 当然WMI ,决不限于此,我感觉,它的好处是可以不用自己写Driver,就可以透过API访问底层,同时不用考虑兼容性,
2 M9 H% a$ K; ] Windows 会为你处理好这个,因为是通过Windows driver 来实现的,当然,要做出特殊的客制化功能,还是得BIOS配合一下哦
: Q; q# C2 P; h2 J% E% N WMI 和BIOS之间是透过 WMIACPI.sys 来通信
6 ~3 B4 K9 M( k( @9 I/ C5 M 另外,如果你发现调用 WMI接口可以访问 EC控制的device ,那么,应该是BIOS中为你做好了 访问EC的interface
4 E9 K1 r4 A0 }) C7 N6 w 也可以看看WMI ACPI的白皮书 ,有详细讲解
: l4 o. _6 c2 z) X以上是个人的一些实践总结, 有误请指正,谢谢# _; y" o e7 l* r
) }# O' c5 ]: q' S4 { J0 ?2 |[ 本帖最后由 蓝色永恒 于 2012-1-5 18:47 编辑 ] |
|