专门网论坛 » ◇ThinkPad技术讨论区◇ » ◇深度技术讨论区◇ » PWS DRV WIN 求助:ThinkPad硬件编程帮助

2003-10-17 11:15 plmqaz
PWS DRV WIN 求助:ThinkPad硬件编程帮助

我不太喜欢IBM的电池电量显示方式。我想写一个调整ThinkPad音量、亮度以及显示电池容量等信息的小程序(用C++),仅作为个人使用方便,用于Windows XP下。我在网上找了许多地方,除了Linux没有找到关于Windows的API或SDK之类的资料,我想请教高手,在那里可以找到这些资料?如果能提供,我愿意贡献出程序作为回报,共广大ThinkPad Fans使用。我的机子是T30,所以其他机型我就没多大兴趣了,关键是无法测试。
IBM倒是出了一个WPHKEY.EXE类似我的想法的小工具,但是用起来老出错,且没有电池显示。请高手指点一二。

[[i] Last edited by 折腾 on 2004-1-6 at 17:32 [/i]]

2003-10-17 11:31 hsz76
microsoft网站上面有全套的SDK/DDK,怎么会找不到?:)

去www.microsoft.com/msdn看看,这里是开发资料。

2003-10-17 11:38 bart
可以查找SMAPI的手册,这是IBM自己制定的。简而言之,你需要一个kernel driver和一个user-mode app。当thinkpad上的扩展键按下时,cmos的某些位会发生变化,kernel driver负责定时读cmos的这几个字节,发生变化就通知user-mode app,然后user-mode app把结果显示出来。大概去年的时候我写过这么一个driver,一不小心删掉了。
电池显示不同,我没有资料。

2003-10-17 12:22 plmqaz
bart,能谈具体点吗?SM API是IBM viavoice用的,和ThinkPad的音量调节应该没关系吧!另外,IBM的音量调节和其他brand的NB不太一样,它在DOS下就可工作,所以我认为这里面文章很大,应该有一个现成的API可用,只不过我不知道!可我又找不到资料,您能给我指点一二吗。
我需要ThinkPad的CMOS硬件位址,您能提供个链接吗?
谢谢你的热心!
我打算去其他Brand的NB技术服务里碰碰运气,看看他们是怎么做的,一会儿回来。

2003-10-19 11:26 xRAIN
以前TP 是有技术参考手册的,pdf 的可以自由下载,里面有硬件接口的定义,还有编程的例子,但是ATRX 新系列机器出来后都没有这个手册。

2003-10-19 15:37 lc82111
我也想知道 ,NB的BIOS接口定义

2003-10-23 13:27 bart
不好意思,几天没来,在赶一篇论文。

SMAPI(System Management API)不是Viavoice的那个(那个是sapi,是不是?)。你可以找一个叫Thinkpad 600 Technical Reference的文件,里面有SMAPI的介绍,不用担心ATRX的兼容问题,他们是一样的。
关于CMOS,我试着说详细些 (linux下使用watch --differences=cumulative -n 0 xxd /dev/nvram 观察得到,机型Thinkpad A20P, 功能键较少)
Thinkpad: 第0x57字节,右数第4位(即bitmask 0x08), 每按一下触发变换状态,00->08->00....

volume:第0x60字节,第8位(bitmask 0x80)为按键事件,每按一下音量上或者下触发状态变换。该字节低4位是音量大小,从0到e表示15个音量等级

mute: 第0x60字节, 第8位是按键触发,第7位表示是否静音,1是静音,0是不静。应该指出,音量和静音按键是在硬件级别控制声卡,和os无关,但是windows版本的TPHotKey在响应mute键时通过MMSystem吧windows系统的声音关闭,也许是为了systray里面的喇叭上能出现那个红色的叉。

屏幕亮度:第0x5F字节,第6位是按键触发,低4位是亮度(0-7)。

另外一些供参考:
zoom: 0x57字节,第6位
display: 0x57字节,第7位
home: 0x56字节,第1位
search: 0x56字节,第2位
mail: 0x56字节,第3位
thinklight: 0x58字节,第5位
hibernate: 0x58字节,第1位 ... (有用吗?)
display state: 0x59字节,后两位(不明白,sorry)
expand: 0x59字节,第5位

如果有兴趣,可以参考一下linux下tpb的源码,有介绍的。

2004-5-21 08:18 dominic2012
不知道Linux下现在有没有win下的ThinkPad Configuration那样的软件?

还有,
请问哪里有linux下的源码?
谢谢!

2004-8-1 09:27 pyh88
有兴趣上一份吧

2004-9-9 19:01 果子
附件是我写的一个显示电池信息的工具的源代码
如果真的要做,考虑一下对IBM的工具做反汇编吧.配合动态跟踪,要找到关键的地方应该也不是太难.不过实在是没必要了.

2004-9-10 12:44 nmd
都是高人啊.

2004-12-13 21:14 没有原因
佩服,望能提供源代码?我也是学编程的,给个学习的机会,好吗?

2004-12-31 18:43 ghfsxs
去[url]www.microsoft.com/msdn[/url]看看,这里是开发资料。

2005-3-19 10:04 小黑屋
强人啊,pfpf

2005-3-29 23:39 not_xx
最简单的方式是做一个tpb的windows移植版

tpb([color=Red]T[/color]hink[color=Red]P[/color]ad [color=Red]B[/color]uttons)是linux下显示thinkpad按钮信息的程序。

看截图:

[img]http://www.nongnu.org/tpb/screenshot.jpg[/img]

2005-3-29 23:42 not_xx
电池信息等等可以参考最新的2.6.10核心中有关的几个模块。
现在可以参考的信息大多数都在linux平台上。

2005-3-30 15:31 dennislew
IBM BIOS

This issue is regarding HDD password.
I saw expert here for programming. That why I seek help here.
Anyone can programming a program simmilar BIOS to read the password on HDD. Then we can crack the password. That is base a HDD password not store in :
1> The secue chip EEprom
2> The BIOS
3> The PCB of HDD
Thanks for any idea.

2005-4-30 16:50 kmlhust
参考你实验机种的ASL CODE,(ACPI 的DSDT)

参考你实验机种的ASL CODE,(ACPI 的DSDT)。要会写WINDOWS下ACPI drivers

2005-4-30 16:51 kmlhust
主要针对THINKPAD ACPI里虚拟的HKEY DEVICE。

主要针对THINKPAD ACPI里虚拟的HKEY DEVICE。代号为IBM0068的这个设备

2005-5-24 15:18 zhenbotang
楼主强!!!

2005-6-6 11:18 liio
不行`编译不过!!
Cannot open include file: 'batclass.h': No such file or directory
#include <batclass.h>

2005-6-23 20:49 ferando
可以找到IBM官方程序进行反汇编,应该有用的

2005-6-28 22:46 birdluo00
强啊

2005-7-4 13:07 xiaohuhu
学习一下

2005-7-4 16:49 fay2003hiend
[quote]Originally posted by [i]tauruschen[/i] at 2005-4-21 14:14:
顶一下! [/quote]
水原来是这样灌的,NB原来是这样赚的!:D:D

2005-7-17 14:20 odqpbo
不错!但是逆向工程别人的代码可能会有法律问题。

2005-7-18 00:51 jjhjj88
高人,学习。。。。。

2005-7-21 19:55 notebook8
不错 ^_^

2005-7-29 11:02 xiaohuhu
帮顶一下

2005-8-27 12:01 阿亚
高,正在学习

2005-10-8 21:29 birdluo00
顶一下。。。

2005-11-30 08:27 jonescheng
强人阿,不顶不行阿。。。。。。。。。。。。。。。。。。

2005-12-28 12:18 lotusheart
顶一下!

2005-12-28 12:19 lotusheart
我再顶一下!

2006-4-7 17:00 东怡
顶一下,比较有个性

2006-4-14 07:40 hhhhh1
顶顶顶顶

2006-10-7 23:48 phoneg
不知道那里出错,我不是高手。

2006-11-1 09:38 vinvin
巍巍专门,卧虎藏龙!

2006-11-9 08:19 icecubi
感觉不一定需要编写driver 吧 搞到ibm 驱动的 IOCTRL  更方便吧

2007-1-20 10:37 haowoqi
我也不会编还是学一下吧

页: [1]


Powered by Discuz! Archiver 5.6.0  © 2001-2006 Comsenz Inc.