|
|
发表于 2012-1-5 18:32:42
|
显示全部楼层
见到过最多的就是
2 F3 ^2 c& a. U7 X! `# ^2 D) p WMI ACPI , ( Q5 [7 u& v) m* J; U/ s( m
1. 一般做法都是 BIOS在CODE中定义一个Device, PNP0C14 ?? 记不太清了 ,
2 J8 x, P1 {) w$ p, G, g% h; N 2. 然后 OS会为此device 安装提供Driver, 然后BIOS 在这个Device Scope里 实作一些 访问PC 的接口,( |$ I2 p7 \. E% r" P/ @' K7 Y
并把这些接口Expose 出去, " M) K/ i; P0 R& a& j* q
3. 上层应用程式 即可透过这些 接口 访问底层 (直接调用Windows API 即可)2 N* s. h# q# }# N, s
很久以前有实际操作过这个过个东西,
9 U. ?4 S" M9 L$ q m2 e 当时也是看了好多好多资料,问了好多人,然后自己拿了一套BIOS code ,实作了一些Interface ,总算明白了一点点了,但是这个东西太多了啊!!! - P4 L( k* |# h2 P
另外,论坛里也有很多资料哦, 可仿照做做) @) Q% m% @. D; G# D
当然WMI ,决不限于此,我感觉,它的好处是可以不用自己写Driver,就可以透过API访问底层,同时不用考虑兼容性, " D0 i; M+ r3 O( i8 t& P
Windows 会为你处理好这个,因为是通过Windows driver 来实现的,当然,要做出特殊的客制化功能,还是得BIOS配合一下哦: F& i8 F$ f7 o! B* e$ H; b7 z
WMI 和BIOS之间是透过 WMIACPI.sys 来通信
7 M0 m) K1 g+ x5 A8 ~! m" R6 b 另外,如果你发现调用 WMI接口可以访问 EC控制的device ,那么,应该是BIOS中为你做好了 访问EC的interface
) X( a6 J! s& o4 Y7 D3 ^7 x 也可以看看WMI ACPI的白皮书 ,有详细讲解: I0 b5 i! P9 P4 P- C
以上是个人的一些实践总结, 有误请指正,谢谢
' _& J$ j# i6 @* E: ~4 ~3 ?( m% u
4 [# h. r% J2 r[ 本帖最后由 蓝色永恒 于 2012-1-5 18:47 编辑 ] |
|