|
|
发表于 2012-1-5 18:32:42
|
显示全部楼层
见到过最多的就是 8 ^! O& b3 t* k* G+ |
WMI ACPI , + K! U! R* ? {' {4 L
1. 一般做法都是 BIOS在CODE中定义一个Device, PNP0C14 ?? 记不太清了 ,% Y, L# Z$ c; N: n b D
2. 然后 OS会为此device 安装提供Driver, 然后BIOS 在这个Device Scope里 实作一些 访问PC 的接口,
8 z4 @5 W7 R6 S, a; a" i: R 并把这些接口Expose 出去, 9 V0 b6 ?! w' j7 S
3. 上层应用程式 即可透过这些 接口 访问底层 (直接调用Windows API 即可)2 ~& o% H8 W) @; j8 D
很久以前有实际操作过这个过个东西,* k! `& D' R1 S- {# H" ~6 s
当时也是看了好多好多资料,问了好多人,然后自己拿了一套BIOS code ,实作了一些Interface ,总算明白了一点点了,但是这个东西太多了啊!!! " O* h1 f' i# R/ b; u# y2 _) N
另外,论坛里也有很多资料哦, 可仿照做做
& s! O4 E1 ?* s, C+ e3 h4 ?6 ~% s 当然WMI ,决不限于此,我感觉,它的好处是可以不用自己写Driver,就可以透过API访问底层,同时不用考虑兼容性, 4 x" N- q5 c8 f5 y$ {( y
Windows 会为你处理好这个,因为是通过Windows driver 来实现的,当然,要做出特殊的客制化功能,还是得BIOS配合一下哦9 ` u* |- ~, u1 F! ]
WMI 和BIOS之间是透过 WMIACPI.sys 来通信8 g3 [$ L! C1 l* A! n3 [# J) |2 a6 T. y
另外,如果你发现调用 WMI接口可以访问 EC控制的device ,那么,应该是BIOS中为你做好了 访问EC的interface
. u0 e# ^5 G- f* Y% }8 t# D 也可以看看WMI ACPI的白皮书 ,有详细讲解4 S, P( F1 M5 E* P5 w1 N; c* C
以上是个人的一些实践总结, 有误请指正,谢谢; Y5 j5 P) ?% ^" J% q
7 O3 G B% E$ \) H
[ 本帖最后由 蓝色永恒 于 2012-1-5 18:47 编辑 ] |
|