Example #1
0
        public KernelResult MapIntoProcess(
            KMemoryManager MemoryManager,
            ulong Address,
            ulong Size,
            KProcess Process,
            MemoryPermission Permission)
        {
            ulong PagesCountRounded = BitUtils.DivRoundUp(Size, KMemoryManager.PageSize);

            if (PageList.GetPagesCount() != PagesCountRounded)
            {
                return(KernelResult.InvalidSize);
            }

            MemoryPermission ExpectedPermission = Process.Pid == OwnerPid
                ? OwnerPermission
                : UserPermission;

            if (Permission != ExpectedPermission)
            {
                return(KernelResult.InvalidPermission);
            }

            return(MemoryManager.MapPages(Address, PageList, MemoryState.SharedMemory, Permission));
        }
Example #2
0
        public KernelResult MapIntoProcess(
            KMemoryManager memoryManager,
            ulong address,
            ulong size,
            KProcess process,
            MemoryPermission permission)
        {
            ulong pagesCountRounded = BitUtils.DivRoundUp(size, KMemoryManager.PageSize);

            if (_pageList.GetPagesCount() != pagesCountRounded)
            {
                return(KernelResult.InvalidSize);
            }

            MemoryPermission expectedPermission = process.Pid == _ownerPid
                ? _ownerPermission
                : _userPermission;

            if (permission != expectedPermission)
            {
                return(KernelResult.InvalidPermission);
            }

            return(memoryManager.MapPages(address, _pageList, MemoryState.SharedMemory, permission));
        }