|
|
发表于 2012-1-5 18:32:42
|
显示全部楼层
见到过最多的就是
. e, G0 Y( G4 N, z* C0 H WMI ACPI , 2 a% O- d, r0 l$ J5 ?
1. 一般做法都是 BIOS在CODE中定义一个Device, PNP0C14 ?? 记不太清了 ,
% c1 Y9 R: [/ X+ ?8 W9 ` 2. 然后 OS会为此device 安装提供Driver, 然后BIOS 在这个Device Scope里 实作一些 访问PC 的接口,/ Z' }/ F& h$ [4 h! o& {) V
并把这些接口Expose 出去,
/ E9 T* Z" J3 s 3. 上层应用程式 即可透过这些 接口 访问底层 (直接调用Windows API 即可)' k1 X4 F& K# |- S! A) Z& z
很久以前有实际操作过这个过个东西,
# B/ y4 ?* C, F( T 当时也是看了好多好多资料,问了好多人,然后自己拿了一套BIOS code ,实作了一些Interface ,总算明白了一点点了,但是这个东西太多了啊!!!
% }" E% Z) v0 Q: P6 G$ A9 C# G 另外,论坛里也有很多资料哦, 可仿照做做7 x: R3 X! \: N& v
当然WMI ,决不限于此,我感觉,它的好处是可以不用自己写Driver,就可以透过API访问底层,同时不用考虑兼容性,
; j5 x9 {& k# ~$ j! \! v& R" j Windows 会为你处理好这个,因为是通过Windows driver 来实现的,当然,要做出特殊的客制化功能,还是得BIOS配合一下哦# ~! G4 w+ j2 Y
WMI 和BIOS之间是透过 WMIACPI.sys 来通信% \$ g5 {) X! c5 ^
另外,如果你发现调用 WMI接口可以访问 EC控制的device ,那么,应该是BIOS中为你做好了 访问EC的interface % S! a T( q. M, M- y' ]
也可以看看WMI ACPI的白皮书 ,有详细讲解
% Q3 R; j9 u \+ ^! {以上是个人的一些实践总结, 有误请指正,谢谢) y. D( f5 P6 K8 f& ^. F1 ^( P
1 D! h% D7 P8 v R2 `) W
[ 本帖最后由 蓝色永恒 于 2012-1-5 18:47 编辑 ] |
|