我正在开发 Windows 7 64 位应用程序。
成功分配大页面后,我尝试使用 VirtualProtect 将 PAGE_GUARD 保护标志设置为第一个大页面。这是我正在使用的代码:
unsigned long long memSize = 1024*1024*1024;
char* data = (char*)VirtualAlloc(NULL, memSize, MEM_RESERVE|MEM_COMMIT|MEM_LARGE_PAGES, PAGE_READWRITE);
//make the first large page in the allocated buffer be a guard page
DWORD oldProtect;
SIZE_T pageSize = GetLargePageMinimum();
LPVOID startPtr = data;
bool res = VirtualProtect(startPtr, pageSize, PAGE_READWRITE | PAGE_GUARD, &oldProtect);
我永久收到以下错误:GetLastError() 返回错误 487 -“尝试访问无效地址”。
为常规页面 (4KB) 分配和设置 PAGE_GUARD 保护时一切正常。
大页面是否支持保护保护?如果是这样,我的代码有什么问题?
提前致谢。