阅读:1498回复:6
一个比较菜的问题:用DS在WDM下怎么捕捉鼠标或键盘的中断,谢谢
我是个刚刚学习驱动开发的新手.最近看了武安河的一个例子,在nt下捕捉软驱中断,可是不知道在wdm下怎么初始化中断对象来完成同样的功能.
我看到DS的帮助里有KInterrupt::Initialize的说明,但不知道KIRQL是怎么设置的.究竟在那里初始化中断对象才能捕捉软驱(或鼠标键盘等)的中断呢? 请教对此有较深理解的朋友,谢谢! 非常希望结交做过驱动开发的良师益友,尤其是做过PCI的朋友. 我的QQ:379867. 真诚的希望能得到您的帮助. |
|
|
沙发#
发布于:2004-06-27 21:41
是不是问题太简单了,真诚的希望大家不吝赐教!
|
|
|
板凳#
发布于:2004-06-29 08:46
是怎么设置的.究竟在那里初始化中断对象才能捕捉软驱(或鼠标键盘等)的中断呢?
WDM是PnP的,KIRQL应该是由系统提供的(没有用过DriverWorks,无法说得更详细). 我觉得要捕捉某设备的中断,不一定要写WDM,NT式的驱动应该也可以。只需要将你的ISR连接到相同中断就行(当然,它的中断应该可以共享,否则,可能导致设备不能正常工作或挂不上)。 |
|
|
地板#
发布于:2004-06-29 10:40
感谢seaquester,DS的例子就是NT下的(没有WDM下的例子),它是这样的初始化过程(在KDevice派生类的构造函数里):
m_Interrupt( Isa, 0, FLOPPY_IRQ, FLOPPY_IRQ, Latched, TRUE, FALSE ) 上面这个初始化在DS的帮助文档里注明为"NTDDK Only". KInterrupt( KIRQL irql, ULONG vector, KINTERRUPT_MODE Mode, BOOLEAN bShareVector=FALSE, KAFFINITY affinity=1, BOOLEAN bSaveFloat =FALSE ); 而这个初始化过程是注明为"WDM",里面的KIRQL,vector的解释为: irql :In the WDM form, this is the IRQL value provided by the plug and play facility. vector :In the WDM form, this is the vector number provided by the plug and play facility. 我主要是不懂这两个变量是否可以用来设置中断. 看了你的回复,我觉得可能自己对WDM的机理不太清楚. 不知seaquester做过PCI驱动没有,真希望交流一下. QQ:379867 |
|
|
地下室#
发布于:2004-06-29 10:56
为什么不找DDK里的例子参考参考?
|
|
|
5楼#
发布于:2004-06-29 11:16
经hzhq1的提醒,我在NTDDK的帮助文档里找到了例子的简介:"Readmes for DDK samples"
谢谢,我正在找相关的例子.祝大家午间愉快! |
|
|
6楼#
发布于:2004-06-30 20:14
DS和DDK都也例子
|
|
|