kucy_zhou@163.c
驱动牛犊
驱动牛犊
  • 注册日期2003-11-26
  • 最后登录2005-11-04
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:941回复:0

我想在中断下进行dma传数可以么?

楼主#
更多 发布于:2004-08-26 11:01
我想在中断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是出问题的,那位大侠能否告知这是怎么回事?
游客

返回顶部