阅读:1152回复:1
请教关于PROCESS_HAS_LOCKED_PAGES错误的问题
当我的应用程序完成了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] |
|
|
沙发#
发布于:2004-08-08 09:16
自己搞定了。
|
|
|