int Guardmemory(ulong base,ulong size,int guard);
or removes one-shot memory breakpoint (guarding page) to the specified
memory range. When application accesses guarded page, Windows raises
EXCEPTION_GUARD_PAGE and removes breakpoint from the accessed memory
page. Note that if one-shot breakpoint is set on several memory
pages 4096 bytes each, the remaining pages will not be automatically
unguarded. This function will not work on the Windows 95 based OSes.
(in) Base address of the memory block to guard. Windows align this address on the page boundary (4096 bytes)
(in) Size of the memory to guard. Windows align base+size to the next page boundary (4096 bytes)
(in) Flag that indicates whether one-shot breakpoint should be set (guard!=0) or reset (guard=0).
It is allowed to set one-shot breakpoint onto the already guarded
memory range or attempt to remove breakpoint from the pages that are
Returns 0 on success (all specified memory pages are guarded) and -1 on error (some pages remain unguarded)