串行端口驱动程序 – 陷入SerialISR()例程

我正在写多窗口设备驱动程序第一次为多端口串行PCI卡。可能是这一个是愚蠢的问题,但我卡住了,需要帮助的人。让我先解释我做了什么呢。我有公交车司机, 2/4/8/16)取决于卡。 现在我必须为它编写函数驱动程序。总线驱动程序创build我必须使用的中断。现在在我的驱动程序中,我得到了总线接口,总线驱动程序中创build的中断以及相关信息。我正在使用串行口驱动程序示例进行参考。在SerialISR ()例程中我的驱动程序卡在while循环中。

  ServicedAnInterrupt = TRUE; do { InterruptIdReg &= (~SERIAL_IIR_FIFOS_ENABLED); switch (InterruptIdReg) { case SERIAL_IIR_RLS: { READ_LINE_STATUS(Extension, Extension->Controller); break; } case SERIAL_IIR_RDA: case SERIAL_IIR_CTI: { READ_RECEIVE_BUFFER(Extension, Extension->Controller); break; } case SERIAL_IIR_THR: { // // Alread clear from reading the iir. // // We want to keep close track of whether // the holding register is empty. // Extension->HoldingEmpty = TRUE; break; } case SERIAL_IIR_MS: { READ_MODEM_STATUS(Extension, Extension->Controller); break; } default: { ASSERT(FALSE); break; } } } while (!((InterruptIdReg = READ_INTERRUPT_ID_REG(Extension, Extension->Controller)) & SERIAL_IIR_NO_INTERRUPT_PENDING)); 

每次case SERIAL_IIR_MS 。 这个过程持续一段时间约1分钟,然后testing电脑会crash.What是可以背后的原因,我该怎么做才能克服这个问题?我已经通过msdn库信息 。 还请在OSR网站上阅读有关此问题。

Solutions Collecting From Web of "串行端口驱动程序 – 陷入SerialISR()例程"