MCPcopy Create free account
hub / github.com/WinDurango/WinDurango / XMemAllocDefault

Function XMemAllocDefault

projects/WinDurango.KernelX/src/kernelx.cpp:591–619  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

589 PVOID PageAddress = (PVOID)((ULONG_PTR)VirtualAddress + dwOffset);
590 UnmapViewOfFile2(GetCurrentProcess(), PageAddress, MEM_PRESERVE_PLACEHOLDER);
591 }
592
593 return S_OK;
594 }
595
596 for (ULONG_PTR i = 0; i < NumberOfPages; i++)
597 {
598 ULONG_PTR PhysicalOffset = PageArray[i] * dwPageSize;
599 PVOID PageVirtualAddress = (PVOID)((ULONG_PTR)VirtualAddress + i * dwPageSize);
600
601 if (PhysicalOffset + dwPageSize > MEM_ESRAM_SIZE)
602 return E_INVALIDARG;
603
604 MapViewOfFile3(XwpEsramMemory, nullptr, PageVirtualAddress, PhysicalOffset, dwPageSize, MEM_REPLACE_PLACEHOLDER,
605 PAGE_READWRITE, nullptr, 0);
606 VirtualAlloc2(nullptr, PageVirtualAddress, dwPageSize, MEM_COMMIT, PAGE_READWRITE, nullptr, 0);
607 }
608
609 return S_OK;
610}
611
612#define XALLOC_IS_GRAPHICS(Attributes) ((BOOL)(((Attributes) & 0x1E0000000ULL) != 0))
613
614EXTERN_C PVOID __stdcall XMemAllocDefault(SIZE_T dwSize, ULONGLONG dwAttributes)
615{
616 auto attr = XALLOC_ATTRIBUTES{dwAttributes};
617
618 if (attr.s.dwMemoryType != XALLOC_MEMTYPE_HEAP)
619 {
620 DWORD flAllocationType = MEM_COMMIT | MEM_RESERVE;
621
622 if (attr.s.dwPageSize == XALLOC_PAGESIZE_4MB)

Callers

nothing calls this directly

Calls 1

EraVirtualAllocFunction · 0.85

Tested by

no test coverage detected