阅读:1353回复:2
m_CurrentTransfer->Continue(UseTransferSize)使用问题
我使用的pci 接口在dma 传输以后,没有中断产生,所以在dma 传输以后,查询dma的状态控制器,确认完成以后,直接使用m_CurrentTransfer->Continue(UseTransferSize);
但是在softice 中。还是产生IRQL_NOT_LESS_OR_EQUAL错误 按照武安河的例子m_CurrentTransfer->Continue(UseTransferSize);是被放到 VOID PCI9054Device::DpcFor_Irq(PVOID Arg1, PVOID Arg2) { m_CurrentTransfer->Continue(UseTransferSize); } 中使用的 请问 m_CurrentTransfer->Continue(UseTransferSize); 可以这样用吗 所以在VOID Pci312Device::StartDMA(ULONG PAddress,ULONG NBytes) { m_MemoryRange1.outb(DSR_DMA_OFFSET,0x00); m_MemoryRange1.outd (BSAR_DMA_MEMORY_OFFSET,0x10); /* RAM */ m_MemoryRange1.outd(PCIA_DMA_PCI_OFFSET,PAddress); /* PCI */ m_MemoryRange1.outd(TCR_DMA_OFFSET ,NBytes); /* byte number be sent */ m_MemoryRange1.outb(DMR_DMA_OFFSET,0x80); /* DMA start */ /* waiting the dma finish */ while(1) { if ( (m_MemoryRange1.inb(DSR_DMA_OFFSET) & 0x80 ) == 0x80 ) { break; /* DMA finish */ } } t << \"Entering Pci39Device::StartDMA finish dma register check \" <<\"\\n\"; m_CurrentTransfer->Continue(UseTransferSize); } |
|
|
沙发#
发布于:2005-03-31 10:36
我也是按武安河的例子做得可我运行到status=m_CurrentTransfer->Initiate(I.Mdl(),IRP_MJ_READ,LinkTo(OnDmaReady));系统就重起
,郁闷得很啊。不知道仁兄有何高招啊。 |
|
板凳#
发布于:2005-03-31 11:07
武安河的例子使用的是system queue
所以,你的程序也要使用system queue 试试这招灵不灵 |
|
|