驅動和應用共享內存
pOutBuf = Irp->AssociatedIrp.SystemBuffer;
pSysAddr = DeviceObject->DeviceExtension;
pMdl = IoAllocateMdl(pSysAddr,10,FALSE,FALSE,NULL);
if(NULL == pMdl){
status = STATUS_UNSUCCESSFUL;
break;
}
MmBuildMdlForNonPagedPool(pMdl);
*(ULONG*)POutBuf = MmMapLockedPagesSpecifyCate( pMdl,
UserMode,
MmNonCached,
NULL,
FALSE,
NormalPagePriority
);
if(NULL == *(ULONG*)pOutBuf)
{
status = STATUS_UNSUCCESSFUL;
IoFreeMdl(pMdl);
break;
}
pSysAddr = DeviceObject->DeviceExtension;
pMdl = IoAllocateMdl(pSysAddr,10,FALSE,FALSE,NULL);
if(NULL == pMdl){
status = STATUS_UNSUCCESSFUL;
break;
}
MmBuildMdlForNonPagedPool(pMdl);
*(ULONG*)POutBuf = MmMapLockedPagesSpecifyCate( pMdl,
UserMode,
MmNonCached,
NULL,
FALSE,
NormalPagePriority
);
if(NULL == *(ULONG*)pOutBuf)
{
status = STATUS_UNSUCCESSFUL;
IoFreeMdl(pMdl);
break;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.