|
|
发表于 2012-1-5 18:32:42
|
显示全部楼层
见到过最多的就是 0 P4 X( H2 Z; [; q6 J/ _3 A
WMI ACPI , 3 [7 O: ]$ d# A% Q& L8 T
1. 一般做法都是 BIOS在CODE中定义一个Device, PNP0C14 ?? 记不太清了 ,/ y N% B0 i/ w$ n- i6 J
2. 然后 OS会为此device 安装提供Driver, 然后BIOS 在这个Device Scope里 实作一些 访问PC 的接口,8 q s% }( ?- f. @: t, l( X) J/ Y
并把这些接口Expose 出去, & s% i( J. E% H' q
3. 上层应用程式 即可透过这些 接口 访问底层 (直接调用Windows API 即可)6 `3 E$ i6 g, f( L; r- ]6 N
很久以前有实际操作过这个过个东西, |" A1 A% h' h; {
当时也是看了好多好多资料,问了好多人,然后自己拿了一套BIOS code ,实作了一些Interface ,总算明白了一点点了,但是这个东西太多了啊!!! - h& S4 }1 E; S4 {( ?
另外,论坛里也有很多资料哦, 可仿照做做4 [8 [( E9 `2 T7 u# C/ m% H1 V
当然WMI ,决不限于此,我感觉,它的好处是可以不用自己写Driver,就可以透过API访问底层,同时不用考虑兼容性, ; `. n. p) ~/ m( ~7 M, T
Windows 会为你处理好这个,因为是通过Windows driver 来实现的,当然,要做出特殊的客制化功能,还是得BIOS配合一下哦
, I: h5 p2 Y. |! G8 f X* M) r WMI 和BIOS之间是透过 WMIACPI.sys 来通信
. R f2 p. p, g/ A, F+ }5 [ 另外,如果你发现调用 WMI接口可以访问 EC控制的device ,那么,应该是BIOS中为你做好了 访问EC的interface
# [0 t. n5 r3 m* M# X 也可以看看WMI ACPI的白皮书 ,有详细讲解
0 j2 l9 |/ o# D3 X8 D, j( E以上是个人的一些实践总结, 有误请指正,谢谢
8 q& S8 p: Q+ Z% r9 y1 p9 D* k1 G+ ^ N) u5 w* x; _9 }
[ 本帖最后由 蓝色永恒 于 2012-1-5 18:47 编辑 ] |
|