tqsheng

go.....
随笔 - 366, 文章 - 18, 评论 - 101, 引用 - 0
数据加载中……

http://www.51chongdian.net/bbs/thread-13684-1-1.html

http://www.51chongdian.net/bbs/thread-13684-1-1.html

posted @ 2010-05-05 14:40 tqsheng 阅读(252) | 评论 (0)编辑 收藏

号码吉凶 http://www.123cha.com/jx/

http://www.123cha.com/jx/
http://mobile.9om.com/
http://life.httpcn.com/tel_jx.asp
http://www.diantc.com/

posted @ 2010-04-16 16:18 tqsheng 阅读(3054) | 评论 (10)编辑 收藏

大单分析

http://vip.stock.finance.sina.com.cn/quotes_service/view/cn_bill.php?symbol=sh600284&num=60&page=1&sort=ticktime&asc=0&volume=100000&type=0&day=2010-04-07

posted @ 2010-04-08 13:28 tqsheng 阅读(90) | 评论 (0)编辑 收藏

http://www.slac.stanford.edu/grp/cd/soft/vxworks/doc/6.6/

http://www.slac.stanford.edu/grp/cd/soft/vxworks/doc/6.6/

posted @ 2010-02-26 15:08 tqsheng 阅读(166) | 评论 (0)编辑 收藏

http://blogs.itecn.net/blogs/ahpeng/archive/tags/Mark+Russinovich_8765E07AFB7FD18B_/default.aspx

posted @ 2009-09-13 12:41 tqsheng 阅读(288) | 评论 (0)编辑 收藏

http://stock.finance.qq.com/cgi-bin/sstock/smd_cjmx?ZHENGQUANDM=000029

posted @ 2009-09-08 21:19 tqsheng 阅读(366) | 评论 (0)编辑 收藏

Bus Hound 5.0 使用说明书

Bus Hound 5.0
使用说明书
(版本:1.0)
编制:古道热肠
版权所有:21IC侃单片机板块
完成日期:2007年7月
一,功能介绍
BusHound软件是由美国perisoft公司研制的一种专用于PC机各种总线
数据包监视和控制的开发工具软件,其名"hound"的中文意思为"猎犬",即
指其能敏锐地感知到总线的丝毫变化.
Bus Hound的最新版本为6.0已上市,但考虑到目前广泛使用的为5.0版
本,故本说明书以其5.0作为蓝本,进行功能说明.
Bus Hound是一个超级软件总线协议分析器,用于捕捉来自设备的协议包
和输入输出操作,其优良特性如下:
支持所有版本的IDE,SCSI,USB,1394总线
支持各类设备如硬盘库,DVD,鼠标,扫描仪,网络照相机等
支持Windows9X,WindowsMe,NT4.0,2000,2003,XP和嵌入式XP操作系统
捕捉数据的总量仅受机器内存限制
可以设置触发信号自动停止捕获操作
测试读取,同步等设备性能
捕获设备驱动包,例如IRP
捕获任意数量的并行设备,而不管其总线类型
身材苗条,易于交换与下载
捕获的数据易于拷贝到其它环境生成Html格式
捕获的数据能保存为文本文件或ZIP文件
所有的可捕获设备以树形结构列出,让选择设备来得更轻松些
可捕获设备的启动过程
用户爱好设定功能,如用户可调整捕获到的数据显示宽度,更宜于查看和使用.
查看底层协议包括SCSI的sense数据和USB的设置包
查看每阶段的时间变化精确到微秒
将输入输出发生的操作实时显示到屏幕上
纯软件解决方案,你不需要对硬件进行任何变更,一些依旧
Bus Hound有如此强大的功能,首先让我们一睹其界面风采,启动界面如下:

二,捕获窗口操作指南
单击主界面窗口上部命令按钮区的Capture按钮进入捕获操作主视窗.
一个命令发送到设备通常由1个或几个阶段来完成,例如,一个典型的命令由命令字
节阶段,数据字节阶段和状态字节阶段来完成,Bus Hound在捕获显示窗口中将显示出
阶段完成的时间信息和详细的数据内容.
捕获数据列表,以下将描述捕获窗口中每一列的功能
1,设备列
设备ID,每个设备分配了一个数字,第1个设备从0开始,第2个设备为1,依此
类推,这项功能对于软件同时捕获多个并行设备非常有用,设备的ID分配在Device窗口
中完成.
对于USB设备,设备的端点同时显示出来(例如4.1表示ID为4的设备的1号端点)
2,阶段列
阶段类型,请参考下表为每个阶段缩写获知详细的细节信息
阶段 功能描述
ADDR 8 byte 1394 transfer address
ATI 7 byte ATA task file returned from an IDE device
ATO 7 byte ATA task file sent to an IDE device
ATP Windows ATA_PASS_THROUGH data structure
CDB SCSI command descriptor block
(Known as a packet command for ATAPI devices)
CTL 8 byte setup packet of a USB control transfer
DI Data In (Device to PC transfer)
DO Data Out (PC to device transfer)
IOR Windows VXD I/O Request data structure
IRB Windows 1394 I/O Request Block data structure
IRP Windows I/O Request Packet data structure
ISOC Isochronous transfer data bytes
LEN Data transfer length of a DI,DO, or ISOC phase in
decimal units. This field is off by default and can be
turned on from the settings Window
LOCK 1394 lock transaction
NSTS Windows 4 byte kernel mode NTSTATUS field
RSET Bus or device reset
RSTS Windows VXD IOR status
SNS SCSI request sense data
SPT Windows SCSI Pass Through data structure
SRB Windows SCSI Request Block (SRB) data structure
SSTS Windows 1 byte SCSI Request Block (SRB) status
STAK Windows IO_STACK_LOCATION data structure
URB Windows USB Request Block (URB) data structure
USTS Windows 4 byte USBD_STATUS code
3,数据列
与每个阶段对应的数据显示在此列中,例如命令字节,数据传输字节,和状
态字节都能在此窗口中显示出来.
4,描述列
与每个阶段对应的文本说明给你带来极大的便利
5,时间微分值Delta(dt)
从前一阶段到当前阶段所花费的时间均显示在此列中,时间单位的缩写对照表
见下表:
Name Units
us Microseconds
ms Milliseconds
sc Seconds
mn Minutes
hr Hours
dy Days
6,命令.相位.
1个数据组合体用来的标识当前捕获的数据的确切阶段,所有值均为十进制
CMD是命令数,命令计数从1开始,当有新命令发送到设备时进行加1操作
Phase是命令中的阶段数,1个命令通常由许多阶段组成,例如数据传输阶段和状态
反馈阶段,阶段计数值从1开始,在命令中当有新的阶段产生时进行加1操作
Ofs每个阶段中字节的偏移量,计数值从0开始,数据传输过程中的每个新的数据字
节时进行加1操作.
Rep指示命令重复发布数,重复计数特性能在系统设定窗口中进行开启和关闭设定.
7,日期
阶段发生的日期在这一列中进行显示,格式为:年/月/日
8,时间
阶段发生的时间在这一列中进行显示,格式为:小时:分钟:秒.毫秒,小时范围为0-23
捕获系统启动过程
当退出Bus Hound应用程序时,Run按钮处于按下状态时,设备驱动部分继续捕获数
据,当系统进行重启时,它将早于系统启动过程进行数据捕获操作.
当退出Bus Hound应用程序时,Stop按钮处于按下状态时,启动过程不会发生数据捕
获操作,直到按下了启动按钮.
捕获数据显示窗口的用户爱好设定
数据列表的列顺序能通过拖拉列顶部到合适位置进行改变.每行字节显示宽度能被修
改为1,2,4,8,16,或者32,这些设定被保存.
查找功能
能够在捕获窗口中进行数据查找操作,输入查找的字符串在窗口左下部的文本窗
口中,然后按向上或向下箭头完成查找操作,如果未查找到字符串,光标位置不做改
变,注意查找时不区分大小写.
窗口支持拖选操作,首行点击起始所在的行,再按下Shift按钮不放,单击结尾
行,选中的数据能用鼠标拖拉到另外的软件中使用(就是拷贝操作),也可以按Ctrl+C
将选中的数据先拷拷贝到剪贴板,再在其它软件中用Ctrl+V粘贴完成数据拷贝操作.
命令交迭
交迭的命令被标识,当发送到设备的一个新的命令启动先于前一个命令时,这种
情况在输入输出子系统是有可能发生的,这种交迭现象Bus Hound能够显示出来,当
然这种情况不会出现的硬件抽象层.
多输入输出阶段
这种情况仅在Windows 9X操作系统发生,同一命令的多输入输出阶段被列表显
示时,指示传输被分割通过许多存储空间来完成的.
PS2鼠标数据格式
以下是PS/2鼠标返回的数据格式,这就是众所周之的在Windows DDK中定义的
MOUSE_INPUT_DATA结构体:
Offset Length Content
0 2 Not used
2 2 Position type:
0000h = relative position
0001h = absolute position
4 2 Button flags:
0001h = left button down
0002h = left button up
0004h = right button down
0008h = right button up
0010h = middle button down
0020h = middle button up
0040h = button 4 down
0080h = button 4 up
0100h = button 5 down
0200h = button 5 up
0400h = mouse wheel
6 2 Mouse wheel data
8 4 Not used
12 4 X position
16 4 Y position
20 4 Device specific information
PS2键盘数据格式
以下是PS/2键盘返回的数据格式,这就是众所周之的在Windows DDK中定义的
KEYBOARD_INPUT_DATA结构体:
Offset Length Content
0 2 Not used
2 2 Scan code of key
4 2 Flags:
0000h = key pressed
0001h = key released
0002h = extended scan code E0
0004h = extended scan code E1
6 2 Not used
8 4 Device specific information
三,保存数据窗口
单击启动窗体界面上的Save按钮将所有捕获到的数据保存到指定的文件中,文件
格式可选为TXT格式或ZIP格式,保存到文件中的数据格式与屏幕保持一致.
1个附加的数据说明将被放置在数据文件的头部,当前日期与时间也包含在说明
中,通过插入%c转义字符来完成,如果保存的是ZIP格式文件,说明内容也被压缩成
ZIP格式.
四,系统设定窗口
系统设定窗口提供用户进行参数设置.复选框选中后立即生效,数字输入需按压应用
按钮或切换到另一个窗体时或退出Bus Hound 时生效.
Buffer Size(缓冲区大小)
指示用于捕获数据缓冲区的RAM大小,以K为单位,设置上限仅受系统内存限制,
如果出现内存不够,缓冲区尺寸将缩减到可用RAM的大小.如果想获得更多的空间用
来缓存数据,除了增加系统内存外,也可以在其它程序运行之前设置较大的缓冲区尺
寸.
注意:申请1个比较大的缓冲区在Windows9X 和Windows Me可能会花费一小段时
间.
Max Phase(最大阶段)
指定每阶段捕获数据的最大数量,例如:当设定值为32时,发生了一个64K的读操
作,仅仅前32个读取到的字节被捕获到,这个选项对于保持一个捕获数据量的最小值是非
常有用的.
Stop When...(停止条件)
设定用于停止捕获操作的触发条件,可对触发条件进行任何组合,只要有一个触发条
件满足时,捕获操作将停止,屏幕上将用高亮红色显示对应的触发数据.
Any Other Error(任何错误发生) 当系统遇到任何种类的错误发生时停止数据捕获
操作
Buffer Full(缓冲区满) 当缓冲区满时停止操作,如果未选中此选项,系统将采用滚
动覆盖模式保存最近捕获到的数据.
Bus Reset(总线复位) 遇到总线复位操作时停止捕获操作
Data Overrun(数据过载)当发生数据过载或数据欠载时,停止捕获操作.
Hardware Error(硬件错误)当发生硬件错误时停止捕获操作
Invalid Command(非法命令)当发现非法的命令时停止捕获操作
Media Error(媒体错误) 当设备返回一个媒体错误时,停止捕获操作,典型情况是
报告发现扇区错误.
No Media(没有媒体),当设备返回没有媒体时,停止捕获操作
Not Ready(没有准备好)遇到设备未准备好,超时,或忙的情况时停止捕获操作
Text Pattern / Hex Pattern(文本式样)当出现定义的特殊式样的文本数据时,
停止捕获操作,对于文本式样,区分大小写,检查过程遍及数据传输的每个阶段,包
括命令,数据和状态阶段.
Vendor Error(厂商错误)当一个独特的厂商错误出现时停止捕获操作
Windows Error(操作系统错误)当出现一个操作系统类型的错误时停止捕获操作
Phases to Capture(选择阶段)
这个选项包括了Bus Hound所有能捕获的阶段列表,复选对应的选项表示进行捕获操
作,清除复选框时表示不进行捕获,这个选项对于用于过滤不感兴趣(无用数据)阶段或者
启动系统默认关闭了阶段尤为有用.
选项框右边,1个白色的圆将出现,这将指示用于捕获操作的阶段,如果圆出现绿色闪亮,
指示此阶段正在发生并被捕获到.
Merge Repeated Commands(合并重复命令)
选中此项后,如果出现命令与前一命令相同的状况时,新命令将不独记录,取而代之
的是,前一命令的数量值加1,这项功能尤其适用于当与设备进行同一命令通讯时将捕获到
的数据进行简约化处理.
Enable SoundS
选中此项后,在执行捕获,设定,或遇到触发条件弹出设备窗口时,Bus Hound
将发出"呯"的一声.
Columns To Display
复选列表框中的选项,表示想将对应的列显示在捕获窗口中,选中的列将能执行
拖选和保存操作,详细情况见"捕获窗口"章节关于每一列的介绍.
五,设备窗口
设备列表指示出Bus Hound能支持的当前系统中的每一个设备,列表自动更新,反映
出是否插入或移除设备.选择复选框表示选中或取消选中设备进行捕获操作.选中操作立
即生效.
每个设备被指定一个数字绑定到设备名的前面,这个数字在捕获窗口中将显示在设备
列下,这个数字用来指示设备加入系统顺序.
当出现设备以亮字体显示时,指示设备不在当前的系统中.
Capture new deviecs(捕获新设备)
选中此项将自动捕获检测到的新设备的数据,这项特色功能尤其适用于发送到热拔插
设备的第1个命令.
Device Properties(设备属性)
这个面板将显示设备的一些细节特性,比如"传输性能表现",性能表现是通过完成
命令过程中总的传输字节数除上总的花费时间来得到的.当捕获窗口中的运行按钮按下时,
性能表现统计数据将被清除掉.
Send Command(发送命令)
使用此命令,您能发送您自已的命令到设备,启用发送命令功能,只需在高亮选择一
个设备后,用鼠标单击"Send Command"按钮或简单地双击设备.发送命令到设
备的功能是一个非常强大的辅助工具,让你提交命令到USB,1394,ATA和SCSI设
备易于反掌.你也可以用它来完成一些其它的特殊操作,例如总线复位,执行硬件端
口的输入输出.
注意:硬件端口的输入输出操作可以会导致系统崩溃,清谨慎使用.
六,文件安装列表
BUSHOUND.EXE - Bus Hound 可执行文件
BUSCMDR.EXE - Bus Commander 执行文件
BHUNINST.EXE - 反安装文件(卸载文件)
BHLOG.EXE - 将数据捕获到磁盘的工具 (仅注册版有此文件 )
BHOUND3.VXD - Windows 95, 98, Me 设备驱动程序
BHOUND4.SYS - Windows NT 4.0设备驱动程序
BHOUND5.SYS - Windows 98, Me, 2000, 2003, XP设备驱动程序
HELP.RTF - 帮助文件 (也就是本文件)
Site License
注册版的Bus Hound 在其安装目录下包含了bhlog.exe命令行工具.Bhlog将捕获
到的实时数据存放到磁盘文件中,这将解除捕获数据存放空间受机器内存限制的束缚.
让你实现磁盘有多大空间,我Bun Hound就有多大能耐的功能.Bhlog在系统冻结(休眠)
甚至重启时仍能将捕获到的数据存放到1个网络驱动器的文件中的功能.
七,FAQ(常见问题解答)
使用过程中遇到问题可查看软件的帮助系统,也可以去Perisoft软件公司的网
站获得最新的信息.
Bus Hound软件的帮助系统主界面如下:
1, 什么类型的输入输出操作能被捕获
Bus Hound捕获经由总线传输的数据包,这包括命令,数据,状态,和时序.
Bus Hound并不监视独立的硬件信号.
2, Bus Hound会改变我的设备的工作方式吗
答案是不会改变,因为 Bus Hound仅仅是完成"侦听"数据包的工作,它不会改
变命令,更不会发送它自已的命令,也不会替代任何系统设备,不会存取硬件.总之
系统和设备的操作不必在乎bus Hound软件是否在运行或停止运行,就当它不存在似
的.
3, Bus Hound会影响到系统的性能吗
用户捕获数据是来自速度极快的并行设备,因而感觉不到它对系统性能的
影响,换句话说,给使用者的印象是对性能没有影响.当处于停止状态时,Bus
Hound也是不会损伤系统.
4, Bus Hound 支持哪些设备
所有的IDE,SCSI,USB和1394设备都得到支持,包括磁盘驱动器,鼠
标,扫描仪,网络摄像头,等等.只要是枚举成以上所列的总线类型的设备均
能够得到支持,例如一些USB转并行口的设备就能捕获.
5, 为何有3个重复的设备
对于某些设备,Windows操作系统建立了更高层的数据包然后传输到底
层的包最终送往硬件,Bus Hound显示了几个设备,如此你能选择在哪个层
次进行捕获操作.
6, 对于控制能捕获到什么呢
有些控制能收到命令,有些却收不到,你可以对一个控制尝试进行捕获操
作,并查看数据是否为有用的.
7, 为什么bus Hound 没有显示一个设备
当系统以安全模式启动时,将没有设备显示,这是由于安全模式下系统为
了清洁,将系统置于安全模式的特性决定的.
当设备未正常安装时,不会显示出来,即启动控制面板的设备管理器,当
出现带问号的设备是不能进行捕获操作的.
SCSI 适配卡在win95/98/Me下不能显示,除非其附属于某设备.
8, 为什么有些设备会出现灰色的
灰色的设备指示它目前未处于系统管理范围之内.
9, 当启动系统进行捕获操作时,系统出现冲撞,我该怎么办呢
这种情况归根到底是Window9X系统架构的限制造成的,如果有太多的
设备驱动要求接收输入输出是否完成的通告,系统就会发生冲撞,甚至崩溃.
微软设备驱动和其它安装的软件如Bus Hound也需要通告,解决这类问题的
办法是移除原驱动软件用附加的软件为设备进行安装操作,例如CD/DVD设
备,一个简易的解决办法就是重命名传统的SCSI1Hlp.Vxd 为
SCSI1Hlp.bak,该文件存在windows/system/iosubsys目录下.
10, 为有何我不能捕获所有的1394的事件
有些1394设备,Bus Hound显示的是逻辑设备例如AV/VHS设备,选择
这些设备的上一层节点进行捕获操作能解决问题.
当Bus Hound 记录同步传输时,没有可行的办法去解决查看每一同步传
输过程.如果想捕获到1394设备的更多信息,升级系统到Windows XP或者
更高级的版本就得到更多.
11, 对于IDE硬盘设备,为何我无法看到task file(任务文件)命令
Bus Hound 仅仅在应用程序或驱动明确地发送一个ATA命令(如:
SMART,IDENTIFY等),完成捕获ATA命令.对于通常的文件系统请求,Bus
Hound 捕获SCSI CDB'S 代替ATA命令.注意 CDB'S命令和ATA命令有相
关性而且很容易转换成与之相关的ATA命令.还要注意到的是CDB是ATA数据
传输的等同体.
12, 在哪儿我可以得到捕获数据的详细信息
你可访问以下站点 http://www.perisoft.net/engineer 得到参考数据和详细的说
明,也可以参考以下资源
Specification Location
USB USB官方网站
SCSI http://www.t10.org
IDE, ATA, ATAPI http://www.t13.org/
1394, Firewire http://www.1394ta.org/http://www.ieee.org/
Windows DDK 微软DDK专栏
13, 如何获得技术支持
请访问网站Bus Hound 官方网站得到问题答案,详细文档,及Bug报导以及共
享和完整版的相关信息.

posted @ 2009-09-03 15:08 tqsheng 阅读(6100) | 评论 (0)编辑 收藏

驱动

http://hi.baidu.com/weolar

posted @ 2009-09-03 14:28 tqsheng 阅读(120) | 评论 (0)编辑 收藏

http://blog.eastmoney.com/txdyn

posted @ 2009-08-26 22:30 tqsheng 阅读(211) | 评论 (0)编辑 收藏

WannaPlayDIB实用图形库源代码

http://www.vckbase.com/code/downcode.asp?id=1488

posted @ 2009-07-31 17:07 tqsheng 阅读(111) | 评论 (0)编辑 收藏

http://www.pingshu163.com

http://www.pingshu163.com

posted @ 2009-07-24 09:59 tqsheng 阅读(360) | 评论 (0)编辑 收藏

键盘钩子比较麻烦的就是得到KeyboardInterruptService 的地址,有什么方法呢

得到i8042prt!I8042KeyboardInterruptService 地址的好方法
http://www.cnblogs.com/adward/archive/2009/04/27/1444921.html



键盘钩子比较麻烦的就是得到KeyboardInterruptService 的地址,有什么方法呢?lkd> !idt

Dumping IDT:

37: 806d0728 hal!PicSpuriousService37
3d: 806d1b70 hal!HalpApcInterrupt
41: 806d19cc hal!HalpDispatchInterrupt
50: 806d0800 hal!HalpApicRebootService
62: 84d587ec atapi!IdePortInterrupt (KINTERRUPT 84d587b0)
63: 84cebdd4 USBPORT!USBPORT_InterruptService (KINTERRUPT 84cebd98)
          USBPORT!USBPORT_InterruptService (KINTERRUPT 84ce4988)
          USBPORT!USBPORT_InterruptService (KINTERRUPT 84cddb78)
          USBPORT!USBPORT_InterruptService (KINTERRUPT 84cd6d10)
          USBPORT!USBPORT_InterruptService (KINTERRUPT 84ccfd98)
73: 84d08044 VIDEOPRT!pVideoPortInterrupt (KINTERRUPT 84d08008)
82: 84d58044 atapi!IdePortInterrupt (KINTERRUPT 84d58008)
83: 84dbf67c atapi!IdePortInterrupt (KINTERRUPT 84dbf640)
          atapi!IdePortInterrupt (KINTERRUPT 84dbf3d0)
92: 84c0a044 serial!SerialCIsrSw (KINTERRUPT 84c0a008)
93: 84c0bdd4 i8042prt!I8042KeyboardInterruptService (KINTERRUPT 84c0bd98)
a3: 84c0b044 i8042prt!I8042MouseInterruptService (KINTERRUPT 84c0b008)

lkd> dt _KINTERRUPT 84c0bd98
nt!_KINTERRUPT
   +0x000 Type             : 22
   +0x002 Size             : 484
   +0x004 InterruptListEntry : _LIST_ENTRY [ 0x84c0bd9c - 0x84c0bd9c ]
   +0x00c ServiceRoutine   : 0xf76cc495 /*就是这儿了*/    unsigned char i8042prt!I8042KeyboardInterruptService+0
   +0x010 ServiceContext   : 0x84d5da88
   +0x014 SpinLock         : 0
   +0x018 TickCount        : 0xffffffff
   +0x01c ActualLock       : 0x84d5db48 -> 0
   +0x020 DispatchAddress : 0x80541aa0     void nt!KiInterruptDispatch+0
   +0x024 Vector           : 0x193
   +0x028 Irql             : 0x8 ''
   +0x029 SynchronizeIrql : 0x9 ''
   +0x02a FloatingSave     : 0 ''
   +0x02b Connected        : 0x1 ''
   +0x02c Number           : 0 ''
   +0x02d ShareVector      : 0 ''
   +0x030 Mode             : 1 ( Latched )
   +0x034 ServiceCount     : 0
   +0x038 DispatchCount    : 0xffffffff
   +0x03c DispatchCode     : [106] 0x56535554

当然还可以特征码搜索啦!也麻烦!

rootkit上那个键盘王子介绍了一种很妙的方法!上代码。

PKINTERRUPT GetI8042PrtInterruptObject(void)
{
PDEVICE_OBJECT pDeviceObject = NULL; // Keyboard DeviceObject
PFILE_OBJECT   fileObject;
UNICODE_STRING keyName;
// PPORT_KEYBOARD_EXTENSION KeyboardExtension;
PKINTERRUPT ReturnValue = NULL;
  
RtlInitUnicodeString( &keyName, NT_KEYBOARD_NAME0 );

// Getting the DeviceObject top-of-the-stack of the kbdclass device
IoGetDeviceObjectPointer(&keyName,
         FILE_READ_ATTRIBUTES,
         &fileObject,
         &pDeviceObject);

// if fails
if( !pDeviceObject )
{
   return NULL;
}

// Tracking the DeviceStack
//
//
// If it is not a i8042prt
while( pDeviceObject->DeviceType != FILE_DEVICE_8042_PORT )//下一个就是了,0x27
{
   // go to the lower level object
   if (((PR_DEVOBJ_EXTENSION)pDeviceObject->DeviceObjectExtension)->AttachedTo)
    pDeviceObject = ((PR_DEVOBJ_EXTENSION)pDeviceObject->DeviceObjectExtension)->AttachedTo;
   else // here is lowest-level and couldn't find i8042prt
      return NULL;
}
//
// pDeviceObject == i8042prt's DeviceObject
//
ReturnValue = (PKINTERRUPT)((PPORT_KEYBOARD_EXTENSION)pDeviceObject->DeviceExtension)->InterruptObject;

return ReturnValue;
}

主函数中调用

   ADDR= (ULONG)GetI8042PrtInterruptObject( );
    dprintf("keyboatserv.SYS: 0X%08X\n", ADDR);
// +0x00c ServiceRoutine   : 0xf76cc495     unsigned char i8042prt!I8042KeyboardInterruptService+0
// 找到了函数的地址了;
I8042KeyboardInterruptServiceADDR=(ULONG)((PKINTERRUPT)GetI8042PrtInterruptObject()->ServiceRoutine);
dprintf("keyboatserv.SYS: 0X%08X\n", I8042KeyboardInterruptServiceADDR);

要用的结构

typedef struct _R_DEVOBJ_EXTENSION
{
CSHORT Type;
USHORT Size;
PDEVICE_OBJECT DeviceObject;
ULONG   PowerFlags;
PVOID Dope;
ULONG ExtensionFlags;
PVOID DeviceNode;
PDEVICE_OBJECT AttachedTo;
ULONG StartIoCount;
ULONG StartIoKey;
ULONG StartIoFlags;
PVOID Vpb;
} R_DEVOBJ_EXTENSION, *PR_DEVOBJ_EXTENSION;

typedef struct _PORT_KEYBOARD_EXTENSION {
    // Pointer back to the this extension's device object.
    PDEVICE_OBJECT      Self;
    PKINTERRUPT    InterruptObject;
} PORT_KEYBOARD_EXTENSION, *PPORT_KEYBOARD_EXTENSION;
typedef struct _KINTERRUPT {
    CSHORT   Type;
    CSHORT      Size;
    LIST_ENTRY          InterruptListEntry;
    ULONG               ServiceRoutine;
    ULONG               ServiceContext;
    KSPIN_LOCK          SpinLock;
    ULONG               TickCount;
    PKSPIN_LOCK         ActualLock;
    PVOID               DispatchAddress;
    ULONG         Vector;
    KIRQL               Irql;
    KIRQL               SynchronizeIrql;
    BOOLEAN             FloatingSave;
    BOOLEAN             Connected;
    CHAR                Number;
    UCHAR                ShareVector;
    KINTERRUPT_MODE     Mode;
    ULONG               ServiceCount;
    ULONG               DispatchCount;
    ULONG               DispatchCode[106];
} KINTERRUPT, *PKINTERRUPT;

有了函数地址大家就自己发挥了啊!什么模拟按键,读取端口。

还可以接着找鼠标的函数了,那就方便了啊

posted @ 2009-06-18 13:59 tqsheng 阅读(286) | 评论 (0)编辑 收藏

http://forum.zichen.com 小说

posted @ 2009-05-02 17:54 tqsheng 阅读(512) | 评论 (1)编辑 收藏

初学者必看

初学者必看(一)——羽毛球基本手法口诀

    不知道哪里得来的好东东,拿来和大家分享。希望对初学者们有用,能早日修成正果啊!!!加油!!!    
   
    羽毛球基本功手法口诀

    活握死抠
    (非击球状态下,球拍不能握死,拍柄要能灵活转动以便不同的击球动作;击球状态下,手指抠紧球拍,尤其是食指和拇指,保证击球动作干脆、线路明确)

    长挥短抖
    (击球时,尤其是长球和杀球时,肩膀和胳膊要完全放开,击球有力量保证并且大动作可以迷惑对方;在最后击球的瞬间,线路的变化以及落点控制全靠手腕的抖动)

    高压低抬
    (打后场球手腕要有前压的感觉,不然球速慢落点近容易受攻击;防守时手臂上抬要充分速度要快,避免被动挨打)

     远打近搓
     (后场球要先跑到位,胳膊带动手腕,幅度大用力猛;前场球小球,小臂伸出稳固,手腕和手指转动,幅度小用力巧)

     对拐平举
     (中前场放斜线短球,手腕要反拐上挑的动作;中前场平抽快球,球拍不放下,用小臂发力手腕紧绷)

     正侧反背
     (打正手球身体向后侧方转动,作为弥补,手腕控制拍面也要有相应角度的内侧转动;打反手球,身体完全展开背对敌手,手臂挥动距离长,手腕发力要及时到点)

     强追缓挡
     (在进攻有利时,要不断加快进攻节奏,手臂手腕动作连贯而急促;在对方连续进攻时,主动通过轻挡放小改变对方连续进攻的节奏,手臂手腕发力舒缓)

     柔舞脆击
     (羽毛球的所有动作都应该是很协调连惯的,甚至是轻柔的;但击球瞬间必须是干脆利落的,从腰部到手腕,击球发力应该有一个猛烈的停顿,接着又是协调连贯的身体动作)

初学者必看(二)——羽毛球基本步法口诀

    步法,是打羽毛球的最基本要素。首先,应明确:后退步,一般有十字交叉步;侧身侧滑步。具体练法,

    看手动腰
    (观察对方的动作,准备提前移动自己的重心)

    先起后抬
    (看对方挥拍动作出来,提起重心并把肩膀抬起来,准备起步)

    追球赶步
    (移动中一定要看羽毛球的运动轨迹,步子一定要赶在球下落之前)

    到点鞠躬
    (跑到点上再落重心,准备击球动作)

    扭胯第一
    (无论什么步伐,先动的一定是胯)

    步伐有数
    (怎么能跑到点上,就要看你预测距离然后设计跨步小碎步的搭配)

    小腿稍撇
    (接地面球时小腿和脚有点外撇,降低重心)

    胳膊抡圆
    (步伐中,胳膊也要进行配合,一定不能耷拉着走,要运动起来)

    跳起危险
    (进行劈杀时,初学者最好不要跳,难度大失误多)

    后退无忧
    (不管怎么样,后撤步是开始最难掌握的,一旦掌握好了,全场皆活


[ 这个贴子最后由徐徐回望在2008-6-8 8:54:26编辑过 ]   

posted @ 2009-04-15 10:41 tqsheng 阅读(155) | 评论 (1)编辑 收藏

dopod 696、696i铃声设置大全

http://www.sh-tl.com/viewthread.php?tid=1811

http://down.pdajoy.com/psoft-Wang_Ping_Tools-ZkM70xNPg7d9SHfd.html#joydown

posted @ 2009-03-16 17:06 tqsheng 阅读(130) | 评论 (0)编辑 收藏

仅列出标题
共25页: First 17 18 19 20 21 22 23 24 25