metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
阅读:1152回复:1

请教关于PROCESS_HAS_LOCKED_PAGES错误的问题

楼主#
更多 发布于:2004-08-07 16:47
当我的应用程序完成了Bulk传输后,程序要关闭时,会出现“PROCESS_HAS_LOCKED_PAGES”的内核异常。然后机子就重起了。从字面上解释好像是说我的一个进程锁了内存页(不知道理解得对不对),但我程序中就没有Lock呀?我的驱动程序是用DS3.1做的。程序中涉及到KMemory的东西(有两个m_Mem全局变量保存Write的I.Mdl;pComInfo->m_pMdl当前发送的这批数据的MDL),在整个传输结束后,我都InValid了呀。
NTSTATUS JHFDevice::WriteComplete(KIrp I, USB_COMPLETION_INFO* pContext)
{
    PMDL pMdl = pContext->m_pMdl;

     //这样处理有没有问题?
    if (I->PendingReturned)
    {
        I.MarkPending();
    }
    ..........

    if (m_TotalTransferSize > m_CurrentTransferIndex)
    {
        //多次发送
        ..........
    }
    delete pMdl;
    delete pComInfo;

    if(m_Mem.IsValid)
        m_Mem.InValid();
    ........
}

我做的驱动程序是最大接受10M数据,然后在驱动中将这10M数据分批通过USBBulk管道发送给设备。BulkPipe的MaxPackageSize=64K
只要不关闭测试程序,他都能运行正常。并且当只传送小批量数据(比如512、1024Bytes等)也能正常关闭测试程序,数据量一大就不行了。能帮我解释一下吗? 谢谢了先


[编辑 -  8/7/04 by  metalwing]
新手上路,请多关照.
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-08-08 09:16
自己搞定了。
新手上路,请多关照.
游客

返回顶部