|
|
发表于 2012-1-5 18:32:42
|
显示全部楼层
见到过最多的就是
9 j' e1 S& U- e WMI ACPI ,
3 F y2 B& ^! ~' q: Z 1. 一般做法都是 BIOS在CODE中定义一个Device, PNP0C14 ?? 记不太清了 ,
' q3 ^7 e) N# T- z, J 2. 然后 OS会为此device 安装提供Driver, 然后BIOS 在这个Device Scope里 实作一些 访问PC 的接口,) G5 e, ]+ b6 U6 E# o
并把这些接口Expose 出去, ; s& S0 S, s3 L# O0 a: l2 ~1 _0 k
3. 上层应用程式 即可透过这些 接口 访问底层 (直接调用Windows API 即可)
: B1 d/ q% ~2 v" k2 a: a 很久以前有实际操作过这个过个东西,, U$ O8 H# l9 N& _. {1 k
当时也是看了好多好多资料,问了好多人,然后自己拿了一套BIOS code ,实作了一些Interface ,总算明白了一点点了,但是这个东西太多了啊!!! & K7 [/ {) [: ^% m4 W5 k
另外,论坛里也有很多资料哦, 可仿照做做" u. z* L0 {! Z/ ^; J; h) C/ K
当然WMI ,决不限于此,我感觉,它的好处是可以不用自己写Driver,就可以透过API访问底层,同时不用考虑兼容性, 9 ~$ H; |+ J& Q7 X
Windows 会为你处理好这个,因为是通过Windows driver 来实现的,当然,要做出特殊的客制化功能,还是得BIOS配合一下哦- @7 L% W+ l) |; ?
WMI 和BIOS之间是透过 WMIACPI.sys 来通信
+ D8 M2 Q* b6 f ~7 S' G 另外,如果你发现调用 WMI接口可以访问 EC控制的device ,那么,应该是BIOS中为你做好了 访问EC的interface
2 @ Q2 l3 t* @* x 也可以看看WMI ACPI的白皮书 ,有详细讲解
6 _ y( G' [3 {5 ~ ]7 }' t以上是个人的一些实践总结, 有误请指正,谢谢2 E9 E" B% U+ h9 n5 e
O: r7 r" ` Z$ l4 B$ k[ 本帖最后由 蓝色永恒 于 2012-1-5 18:47 编辑 ] |
|