驅動和應用共享內存

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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章