private static bool GetDmaPhysicalAddress(UIntPtr virtualAddr, out UIntPtr physAddr, out UIntPtr physRemaining) { UIntPtr alignedAddr = MemoryManager.PageAlign(virtualAddr); #if PAGING PhysicalAddress phys = VMManager.GetPageMapping(alignedAddr); if (phys != PhysicalAddress.Null) { physAddr = (UIntPtr)phys.Value + (virtualAddr - alignedAddr); physRemaining = MemoryManager.PagePad(physAddr + 1) - physAddr; return(true); } #else if (virtualAddr != UIntPtr.Zero) { physAddr = virtualAddr; physRemaining = MemoryManager.PagePad(physAddr + 1) - physAddr; return(true); } #endif // PAGING physAddr = UIntPtr.Zero; physRemaining = UIntPtr.Zero; return(false); }