|
发表于 2012-1-5 18:32:42
|
显示全部楼层
见到过最多的就是
8 B1 }3 v+ c8 F& M5 L+ K) X( o WMI ACPI , 7 O7 E$ v# c( C
1. 一般做法都是 BIOS在CODE中定义一个Device, PNP0C14 ?? 记不太清了 ,: Q, x% j% d1 V/ q& f; ]5 {5 E( A3 @
2. 然后 OS会为此device 安装提供Driver, 然后BIOS 在这个Device Scope里 实作一些 访问PC 的接口,
, |6 I2 B% w1 G 并把这些接口Expose 出去, 5 o6 ?6 m7 F! Q. e' \9 q3 I
3. 上层应用程式 即可透过这些 接口 访问底层 (直接调用Windows API 即可)( R5 _- v0 U0 m3 X. C9 A. P& X/ p
很久以前有实际操作过这个过个东西,
0 a$ @2 i6 x6 }7 w2 O1 c" ` B6 _ 当时也是看了好多好多资料,问了好多人,然后自己拿了一套BIOS code ,实作了一些Interface ,总算明白了一点点了,但是这个东西太多了啊!!! 9 O, I5 E, p6 P0 Y3 }. z
另外,论坛里也有很多资料哦, 可仿照做做
) u0 A2 w8 S1 \3 P/ w) E 当然WMI ,决不限于此,我感觉,它的好处是可以不用自己写Driver,就可以透过API访问底层,同时不用考虑兼容性, 0 ]/ b6 v1 a, z
Windows 会为你处理好这个,因为是通过Windows driver 来实现的,当然,要做出特殊的客制化功能,还是得BIOS配合一下哦 ?0 [7 u; f( h0 W
WMI 和BIOS之间是透过 WMIACPI.sys 来通信+ F5 g. Y) C, k9 @: w8 R9 o4 H
另外,如果你发现调用 WMI接口可以访问 EC控制的device ,那么,应该是BIOS中为你做好了 访问EC的interface
0 `& }' F) h9 q 也可以看看WMI ACPI的白皮书 ,有详细讲解) }1 |1 Q: `) e' R! K
以上是个人的一些实践总结, 有误请指正,谢谢3 o* D3 x }7 f. P* g
0 b1 _- b7 O" F9 y
[ 本帖最后由 蓝色永恒 于 2012-1-5 18:47 编辑 ] |
|