阅读:1854回复:13
Win95下鼠标的中断和键盘的中断有什么不同?
照着一本书上的例子学VXD,书上有一个例子是关于鼠标的中断的,其功能是载入后记录鼠标中断的次数,完全能实现功能,但是当我把鼠标中断改成键盘中断后,也就是把IRQ从12改到9,就不能实现功能了,加载都能成功,可是我按键盘,记数却不改变,不知道是怎么回事。
|
|
沙发#
发布于:2002-05-15 10:15
用softice跟踪
|
|
|
板凳#
发布于:2002-05-15 10:16
用softice跟踪看中断服务例程被调用了没有
|
|
|
地板#
发布于:2002-05-15 10:31
我是菜鸟,不会用Softice。 :(
|
|
地下室#
发布于:2002-05-15 10:59
我把源程序贴这,那位帮看一下,谢谢。
程序很简单,就是记录中断次数,在从VXD发消息到应用程序,原来是鼠标中断,所以名字都叫MOUSE,我现在只是把IRQ从12改到9。 |
|
5楼#
发布于:2002-05-15 12:48
你确定你用作mouse的时候没有问题?
就算长时间run,也没有问题? 怎么在VxD还有new和delete呀?是VtoolsD重载了? |
|
6楼#
发布于:2002-05-15 13:19
是谁告诉你键盘的中断是9?!
|
|
7楼#
发布于:2002-05-15 14:45
VXD是用VtoolsD里的类继承下来的,用做Mouse的时候没问题,运行的时间到不是很长,你可以把IRQ改回12用鼠标试一试。
键盘的中断不是9吗?我查以前在DOS下做的中断程序键盘中断就是9呀,难道到Win95下变了? |
|
8楼#
发布于:2002-05-15 14:50
我试了你的程序,可以中断。
你用资源管理器好好看看键盘的中断。 要是不知道,你就用1 |
|
9楼#
发布于:2002-05-15 15:05
对呀
不要想当然认为某个中断是几 看看再说 dos和95可不一样 |
|
|
10楼#
发布于:2002-05-15 15:43
通过系统看键盘的资源,中断请求是1,于是把程序的IRQ设为1,可是这下连VXD加载都不成功了,由于没有SoftIce,不知道到底哪里出错,但我看了一下系统里键盘的驱动程序,都是SYS文件,也就是WDM驱动,不是VXD,那么我现在用VXD是不是就不行了,我猜应该是hook函数不成功。
|
|
11楼#
发布于:2002-05-15 15:49
给分是只能给一次的吗?
我想只给出一部分的分,剩下的以后有人回我的帖子再给,这样不行吗? |
|
12楼#
发布于:2002-05-15 17:56
只能给一次分,znsoft说的。
是你的hook()函数,没有成功。 if(!pMyIRQ->hook()) { return -1; } 12可以,1不行。不知道hook内部干了什么。 原因就你自己找了。 或者你改成framwok C试试。 |
|
13楼#
发布于:2002-05-16 18:42
PS2键盘和鼠标对应的硬件中断是IRQ12。
|
|
|