Hi,
recently I was blocked on my code because for some weird reason all of a sudden the destination memory (which was part of a structure) was not readable and the program was crashing.
Just the fact to try to manually check if there was something at this memory was making the program to crash.
By digging throught MSDN I found a set of API very usefull

Code: Select all
; before a CopyMemory, want to check that destination memory is writeable ?
if IsBadWritePtr_(*dst_addr, size) = 0
debug "memory writeable, let's go"
CopyMemory(*src_addr, *dst_addr, size)
else
debug "memory not writeable, give up"
Endif
Code: Select all
; before reading memory, want to check that it is readable ?
if IsBadCodePtr_(*dst_addr) = 0
debug "memory readable, let's go"
var$ = PeekS(*dst_addr)
else
debug "memory not readable, give up"
Endif
; or if you need to check a defined size, use this instead :
if IsBadReadPtr_(*dst_addr, size) = 0
debug "memory writeable, let's go"
var$ = PeekS(*dst_addr, size)
else
debug "memory not readable, give up"
Endif
