|
|
发表于 2012-1-5 18:32:42
|
显示全部楼层
见到过最多的就是
" P: P) q1 T! E WMI ACPI ,
! C2 O8 U* e8 H/ J( X, w7 ?1 [ 1. 一般做法都是 BIOS在CODE中定义一个Device, PNP0C14 ?? 记不太清了 ,+ K# `& Q' Z" I1 m6 R. t8 [/ P
2. 然后 OS会为此device 安装提供Driver, 然后BIOS 在这个Device Scope里 实作一些 访问PC 的接口,
: h# }0 U( N% }5 q# _6 W: d 并把这些接口Expose 出去,
2 P* O3 u$ a& j: ]% N! i/ a 3. 上层应用程式 即可透过这些 接口 访问底层 (直接调用Windows API 即可)
- j# k! }# p* d0 M5 x) L: }' L, J. [ 很久以前有实际操作过这个过个东西,0 Q8 I# J* e6 W& O7 ]
当时也是看了好多好多资料,问了好多人,然后自己拿了一套BIOS code ,实作了一些Interface ,总算明白了一点点了,但是这个东西太多了啊!!!
) E( W+ c! t8 s5 X 另外,论坛里也有很多资料哦, 可仿照做做
" E( N+ E- G1 F& R9 ` 当然WMI ,决不限于此,我感觉,它的好处是可以不用自己写Driver,就可以透过API访问底层,同时不用考虑兼容性,
* j$ u6 c m1 T2 g& U Windows 会为你处理好这个,因为是通过Windows driver 来实现的,当然,要做出特殊的客制化功能,还是得BIOS配合一下哦. r4 p2 M' B' Z4 ^# T8 i" F% }: U
WMI 和BIOS之间是透过 WMIACPI.sys 来通信
3 W6 k( d! r3 O; t- V# F+ \! F* |! O 另外,如果你发现调用 WMI接口可以访问 EC控制的device ,那么,应该是BIOS中为你做好了 访问EC的interface 2 ?- q3 l# F" q+ ]$ q6 U
也可以看看WMI ACPI的白皮书 ,有详细讲解
& _- U, X& U6 H% ?! V* O以上是个人的一些实践总结, 有误请指正,谢谢
" `' ]1 U1 c( x
8 f2 x; }! t2 e' `% R7 c[ 本帖最后由 蓝色永恒 于 2012-1-5 18:47 编辑 ] |
|