| 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 | |
| 614 | EXTERN_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) |
nothing calls this directly
no test coverage detected