43 lines
814 B
C
43 lines
814 B
C
////////////////////////////////////////////////////////////
|
|
//~ @hookimpl Memory allocation
|
|
|
|
//- Reserve
|
|
|
|
void *ReserveMemory(u64 size)
|
|
{
|
|
void *ptr = VirtualAlloc(0, size, MEM_RESERVE, PAGE_NOACCESS);
|
|
return ptr;
|
|
}
|
|
|
|
void ReleaseMemory(void *address)
|
|
{
|
|
VirtualFree(address, 0, MEM_RELEASE);
|
|
}
|
|
|
|
//- Commit
|
|
|
|
void *CommitMemory(void *address, u64 size)
|
|
{
|
|
void *ptr = VirtualAlloc(address, size, MEM_COMMIT, PAGE_READWRITE);
|
|
return ptr;
|
|
}
|
|
|
|
void DecommitMemory(void *address, u64 size)
|
|
{
|
|
VirtualFree(address, size, MEM_DECOMMIT);
|
|
}
|
|
|
|
//- Protect
|
|
|
|
void SetMemoryReadonly(void *address, u64 size)
|
|
{
|
|
DWORD old;
|
|
VirtualProtect(address, size, PAGE_READONLY, &old);
|
|
}
|
|
|
|
void SetMemoryReadWrite(void *address, u64 size)
|
|
{
|
|
DWORD old;
|
|
VirtualProtect(address, size, PAGE_READWRITE, &old);
|
|
}
|