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

帮我看看,中断触发不了

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


yjhleaf
驱动小牛
驱动小牛
  • 注册日期2001-11-04
  • 最后登录2005-11-23
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-09-29 11:40
1,你能确认你的设备收到中断了吗?
2,中断寄存器的值读出来看看,看有没有屏蔽掉中断。
忽如一夜春风来,千树万树梨花开。
游客

返回顶部