|
|
发表于 2012-1-5 18:32:42
|
显示全部楼层
见到过最多的就是
+ c& E( S2 W* ` WMI ACPI , - D0 [% q8 b; v- y. d8 }
1. 一般做法都是 BIOS在CODE中定义一个Device, PNP0C14 ?? 记不太清了 , e0 d$ o# `3 x* y, Y
2. 然后 OS会为此device 安装提供Driver, 然后BIOS 在这个Device Scope里 实作一些 访问PC 的接口,
9 L. c* K' k5 W% u* V* i: h) h" [0 J+ A 并把这些接口Expose 出去,
, J8 V$ ^: l" Z, z 3. 上层应用程式 即可透过这些 接口 访问底层 (直接调用Windows API 即可)
5 {. x2 p h5 y* w; ]# p7 V 很久以前有实际操作过这个过个东西,* F' n: f+ c6 D) O3 y
当时也是看了好多好多资料,问了好多人,然后自己拿了一套BIOS code ,实作了一些Interface ,总算明白了一点点了,但是这个东西太多了啊!!!
3 v, N7 l8 W: w0 B: o 另外,论坛里也有很多资料哦, 可仿照做做
6 z( C+ g/ Q6 v9 V7 p 当然WMI ,决不限于此,我感觉,它的好处是可以不用自己写Driver,就可以透过API访问底层,同时不用考虑兼容性, $ m4 h& G, h" W) J6 X# A+ M! \ A
Windows 会为你处理好这个,因为是通过Windows driver 来实现的,当然,要做出特殊的客制化功能,还是得BIOS配合一下哦, y1 Y% S! M$ o6 s
WMI 和BIOS之间是透过 WMIACPI.sys 来通信
0 n& s o3 \" G. L' v) f( a 另外,如果你发现调用 WMI接口可以访问 EC控制的device ,那么,应该是BIOS中为你做好了 访问EC的interface . I0 @; g8 x: |( H
也可以看看WMI ACPI的白皮书 ,有详细讲解
4 i. F( u. R, s; W, T. g$ {8 a以上是个人的一些实践总结, 有误请指正,谢谢
4 h e5 F1 f4 U5 q1 p5 h) `2 f
6 ]9 p3 s9 g. k, Y) X, j[ 本帖最后由 蓝色永恒 于 2012-1-5 18:47 编辑 ] |
|