阅读:950回复:0
我想在中断下进行dma传数可以么?
我想在中断dpc下进行dma初始化然后开始传送数据可以么?
我的程序如下: VOID P9054Device::DpcFor_Irq(PVOID Arg1, PVOID Arg2) { ULONG data; t << "interrpt dpc \n"; data=m_MemoryRange0.ind(0x68); if (!(data&0x00008000)) { DbgPrint("%d bytes remained in current dma\n"); m_DmaTr.BytesRemaining(); //唯一的操作,继续进行下一次分割传输 m_DmaTr.Continue(UseTransferSize); } else { KIrp I(m_DriverManagedQueue.CurrentIrp()); m_DmaTr.Initiate(this,&m_Dma,I.Mdl(),FromDeviceToMemory, LinkTo(CallBack_Dma),&m_CommonBuffer,NULL,FALSE); //dma 初始化 m_DriverManagedQueue.PnpNextIrp(I); } // I.Status() = STATUS_SUCCESS; // I.Information() = 0; // PnpNextIrp completes this IRP and starts processing // for the next IRP in the driver managed queue. UNREFERENCED_PARAMETER(Arg1); UNREFERENCED_PARAMETER(Arg2); } 可是为什么我一执行到m_DmaTr.Initiate时就出问题,好像是在I.Mdl是出问题的,那位大侠能否告知这是怎么回事? |
|