阅读:1054回复:0
我的中断触发不了,请帮帮我
我在NT下开发一个中断程序,在DRIVERENTRY中的各样初始化都成功。用的函数如下:
MappedVector = HalGetInterruptVector( Isa, // Interface type 0, // Bus number // // This is the IRQ number. The constannt // STAT_IRQ is defined in stat.h // STAT_IRQ, // Bus interrupt level STAT_IRQ, // Bus interrupt vector // These next two parameters are // filled in by the HAL &irql, // IRQ level &Affinity // Affinity mask ); 我用得是中断7:STAT_IRQ=7。返回值为irql=8,MappedVector=91 我先申请中断资源,成功(我的卡是ISA), 再调用IOCONNECTINTERRUPT连接中断: ioConnectStatus = IoConnectInterrupt( &extension->InterruptObject, statInterruptServiceRoutine, extension->DeviceObject, NULL, MappedVector, irql, irql, Latched, FALSE, Affinity, FALSE ); 申请也是成功的。 驱动装好后,我在WINDOWS管理工具里面看,也能看到我的驱动用的是中断7。 但是现在我用硬件发中断,ISR死活出不来。我想用SOFTICE中的GENINT命令摸拟中断:我输入genint 37,SOFTICE窗口关闭,但我的ISR还是没出来。 我的ISR为: BOOLEAN statInterruptServiceRoutine( IN PKINTERRUPT Interrupt, IN OUT PVOID Context ) { PDEVICE_OBJECT DeviceObject; PSTAT_DEVICE_EXTENSION extension; DeviceObject = Context; extension = DeviceObject->DeviceExtension; KdPrint( (\"STAT: i am in isr \") ); return TRUE; } 我想请教一下各位高手:我用的GENINT是否有错误。可不可以给我具体的讲一讲使用GENINT的步骤。还有,可不可以帮我分析一下我的驱动中的可能存在的那几种错误。谢谢!!! 哪位高手帮帮我吧!!我愿奉上50分以表示我的感激!!! |
|