我是第一次为多端口串口pci卡写Windows设备驱动程序。可能这是一个愚蠢的问题,但我卡住了。需要别人的帮助。让我先解释一下我做了什么。我有公共汽车创造孩子数(2/4/8/16)的驾驶员取决于卡。现在我必须为它编写函数驱动程序。总线驱动程序创建我必须使用的中断。现在我的驱动程序中有总线接口,在总线驱动程序中创建的中断和相关信息。我使用Serial Port Driver Sample作为参考。现在在SerialISR ()
例程中,我的驱动程序陷入了循环。
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分钟&然后测试电脑会崩溃。这可能是背后的原因。我应该怎么做才能克服这个问题?我已经完成了msdn library information。还可以在OSR网站上阅读有关此问题。