31 if (!ptr ||
size == 0) {
36 MEMORY_BASIC_INFORMATION mbi;
37 if (VirtualQuery(ptr, &mbi,
sizeof(mbi)) == 0) {
41 const uintptr_t start = (uintptr_t)ptr;
42 const uintptr_t end = start +
size;
43 const uintptr_t region_end = (uintptr_t)mbi.BaseAddress + mbi.RegionSize;
44 const DWORD bad = PAGE_NOACCESS | PAGE_GUARD;
45 return end >= start && end <= region_end && mbi.State == MEM_COMMIT
46 && (mbi.Protect & bad) == 0;