|
|
发表于 2012-1-5 18:32:42
|
显示全部楼层
见到过最多的就是
: t( ]* A: @) u& e WMI ACPI ,
$ u; |7 }7 y4 Y/ ]3 y6 k 1. 一般做法都是 BIOS在CODE中定义一个Device, PNP0C14 ?? 记不太清了 ,7 Y! T5 v1 u9 r5 b. U9 p) d9 J
2. 然后 OS会为此device 安装提供Driver, 然后BIOS 在这个Device Scope里 实作一些 访问PC 的接口,
: b! N3 Y7 f/ E- S. n2 N& q- s1 T 并把这些接口Expose 出去, , q5 F% D* A$ m' M( X
3. 上层应用程式 即可透过这些 接口 访问底层 (直接调用Windows API 即可)8 Y+ v' H9 I/ D8 U. t
很久以前有实际操作过这个过个东西,+ _6 O* q! U! P, B5 E
当时也是看了好多好多资料,问了好多人,然后自己拿了一套BIOS code ,实作了一些Interface ,总算明白了一点点了,但是这个东西太多了啊!!!
4 o$ Q, W7 L; s( Z; [: h 另外,论坛里也有很多资料哦, 可仿照做做
8 p" E, O' c3 G/ F" o n 当然WMI ,决不限于此,我感觉,它的好处是可以不用自己写Driver,就可以透过API访问底层,同时不用考虑兼容性, * \5 P# R2 Q) Q
Windows 会为你处理好这个,因为是通过Windows driver 来实现的,当然,要做出特殊的客制化功能,还是得BIOS配合一下哦( H0 J8 m7 k1 o( \/ w' P$ K
WMI 和BIOS之间是透过 WMIACPI.sys 来通信9 s: D) ]4 }0 ~( L" | J( b' u
另外,如果你发现调用 WMI接口可以访问 EC控制的device ,那么,应该是BIOS中为你做好了 访问EC的interface 5 Z( b$ o" L& e
也可以看看WMI ACPI的白皮书 ,有详细讲解
6 \+ R" U7 |% ]: a" _" ]以上是个人的一些实践总结, 有误请指正,谢谢( ]+ `5 l9 ]5 V6 d: A: t/ B
% k% d( D+ Q$ F& x; v[ 本帖最后由 蓝色永恒 于 2012-1-5 18:47 编辑 ] |
|