wyb513
驱动牛犊
驱动牛犊
  • 注册日期2009-01-10
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望31点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1880回复:2

如何禁止中断和开启中断?

楼主#
更多 发布于:2010-06-03 19:29
请教各位大虾,如何用ddk禁止和开启一个中断啊 该如何实现呢。现在是这样的,小弟已经实现了中断向量和连接中断,采用的是中断7,电平触发,但是发现加载驱动后 电脑会死机,经判断基本是中断引起的,于是想在中断响应程序里禁止和开启中断。大概代码如下
DeviceExtension->Level = 7;
DeviceExtension->Vector = DeviceExtension->Level;
MappedVector = HalGetInterruptVector(Isa,                        
                                           0,                            
                                           DeviceExtension->Level,        
                                           DeviceExtension->Vector,    
                                           &Irql,                        
                                           &DeviceExtension->Affinity);

    status = IoConnectInterrupt(&DeviceExtension->InterruptObject, // InterruptObject
                          InterruptIsr,                   // ServiceRoutine
                          DeviceObject,                   // ServiceContext
                         NULL,                       // SpinLock
                        MappedVector,                   // Vector
                          Irql,                       // Irql
                        Irql,                       // SynchronizeIrql
                        LevelSensitive,                   // InterruptMode
                       // Latched,
                          TRUE,                       // ShareVector
                        DeviceExtension->Affinity,       // ProcessorEnableMask
                        FALSE);                       // FloatingSave
space061
驱动牛犊
驱动牛犊
  • 注册日期2005-08-03
  • 最后登录2013-05-29
  • 粉丝0
  • 关注0
  • 积分24分
  • 威望272点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2010-06-04 10:55
我的理解是:如果操作的是真实的硬件,应该看看该硬件的规范(比如往什么寄存器写什么值),来关闭或开始中断。
sherlinlove
驱动牛犊
驱动牛犊
  • 注册日期2010-06-01
  • 最后登录2010-07-02
  • 粉丝0
  • 关注0
  • 积分38分
  • 威望371点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2010-06-04 11:43
学习中
游客

返回顶部