33 lines
719 B
C
33 lines
719 B
C
BOOL WriteWatchVirtualAllocBufferAlloc(VOID)
|
|
{
|
|
ULONG_PTR Count = NULL;
|
|
DWORD Granularity = 0;
|
|
BOOL bFlag = FALSE;
|
|
PVOID Address = NULL;
|
|
PINT Buffer = NULL;
|
|
|
|
Address = VirtualAlloc(NULL, (4096 * sizeof(PVOID)), MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
|
|
if (Address == NULL)
|
|
return FALSE;
|
|
|
|
Buffer = (PINT)VirtualAlloc(NULL, (4096 * 4096), MEM_RESERVE | MEM_COMMIT | MEM_WRITE_WATCH, PAGE_READWRITE);
|
|
if (Buffer == NULL)
|
|
goto EXIT_ROUTINE;
|
|
|
|
Buffer[0] = 1024;
|
|
Count = 4096;
|
|
|
|
if (!GetWriteWatch(0, Buffer, 4096, Address, &Count, &Granularity))
|
|
bFlag = Count != 1;
|
|
|
|
EXIT_ROUTINE:
|
|
|
|
if (Buffer)
|
|
VirtualFree(Buffer, 0, MEM_RELEASE);
|
|
|
|
if (Address)
|
|
VirtualFree(Address, 0, MEM_RELEASE);
|
|
|
|
return bFlag;
|
|
}
|