|
发表于 2012-1-5 18:32:42
|
显示全部楼层
见到过最多的就是
3 G6 w% X6 b9 E5 S WMI ACPI , & M( G* T' @5 l$ v8 ]+ Y
1. 一般做法都是 BIOS在CODE中定义一个Device, PNP0C14 ?? 记不太清了 ,
9 _0 A0 P3 U3 z7 @+ W2 S" r1 F, S 2. 然后 OS会为此device 安装提供Driver, 然后BIOS 在这个Device Scope里 实作一些 访问PC 的接口,+ o4 S9 G5 I# a! C. `' B+ W' t
并把这些接口Expose 出去, 2 k$ b8 A" j8 C
3. 上层应用程式 即可透过这些 接口 访问底层 (直接调用Windows API 即可)9 N' O6 ~0 N5 c; ] i- R/ [ k
很久以前有实际操作过这个过个东西,
9 ~# a' p' W( N/ g' J3 Y" \5 B 当时也是看了好多好多资料,问了好多人,然后自己拿了一套BIOS code ,实作了一些Interface ,总算明白了一点点了,但是这个东西太多了啊!!! 4 Z9 {8 [& Q( V
另外,论坛里也有很多资料哦, 可仿照做做
& M6 @' x- X+ m: c. h7 l, w 当然WMI ,决不限于此,我感觉,它的好处是可以不用自己写Driver,就可以透过API访问底层,同时不用考虑兼容性,
0 ~5 v" Y* B. X) F Windows 会为你处理好这个,因为是通过Windows driver 来实现的,当然,要做出特殊的客制化功能,还是得BIOS配合一下哦4 c- A# ~) C" k, X! D n
WMI 和BIOS之间是透过 WMIACPI.sys 来通信: \6 v m) f2 s2 l& g
另外,如果你发现调用 WMI接口可以访问 EC控制的device ,那么,应该是BIOS中为你做好了 访问EC的interface
' M! R; y0 @, I6 E% \ 也可以看看WMI ACPI的白皮书 ,有详细讲解$ `+ L, ~/ T4 m5 N! Z6 u: L) \" z
以上是个人的一些实践总结, 有误请指正,谢谢. B7 z* f$ O2 ?) s6 F" U8 s
, J6 b' B7 I, b9 r( @
[ 本帖最后由 蓝色永恒 于 2012-1-5 18:47 编辑 ] |
|