我在Win2000下做内核模式驱动,有这样一个问题:
  我需要在ISR里调用令一个中断,所以我这样写:
      void _cdecl InterruptFunction()
      {
          _asm sti;    // 开中断
          _asm int 76h;
          _asm iretd;       }
  这样一来,当中断频繁时就会bug check ,我想原因是由于中断重入引起的。
  但不开中断,又不能调用 int 76h ,所以请教高手,有没有解决的办法。

解决方案 »

  1.   

    加定时器来限制中断频繁,或者用线程互锁(多线程),当调用int76h 之前,先锁住别的线程,int 76h返回时,解锁线程,驱动开发我也是新手,
    具体实现我就不是很清楚了,但是我再做别得多线程程序中遇到过这样的问题,主要是多个线程或进程共享数据或寄存器引起的,所以到加锁
      

  2.   

    你不用开中断(sti)也可以 调用_asm int 76h;那一句,因为sti开的的外部中断,也就是从8259可编程中断控制器引发的中断,而用软件命令引发的中断是无法屏蔽的。