bluesky123
驱动牛犊
驱动牛犊
  • 注册日期2002-08-02
  • 最后登录2002-10-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1011回复:0

我的中断触发不了,请帮帮我

楼主#
更多 发布于:2002-09-29 09:21
我在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分以表示我的感激!!!
游客

返回顶部