Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/***
*sehsupp.c - helper functions for Structured Exception Handling support * * Copyright (C) 1993-2001, Microsoft Corporation. All rights reserved. * *Purpose: * Contains _rt_probe_read. Helper for the SEH runtime support * routines (longjmp in particular). Much of the SEH code is written * in asm, so these routines are available when probing memory in ways * that must be guarded with __try/__except in case of access violation. * *Revision History: * 12-05-93 PML Module created. * 12-22-93 GJF Made #define WIN32_LEAN_AND_MEAN conditional. * 01-12-94 PML Rewritten - still need helpers, just different ones * *******************************************************************************/
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN 1
#endif
#include <windows.h>
/***
*BOOL __stdcall _rt_probe_read4 - Check if a DWORD is readable * *Purpose: * Internal support function called by longjmp. Check if a DWORD is * readable under a __try/__except. * *Entry: * DWORD * p - Pointer to DWORD to be probed * *Exit: * Success: TRUE - Able to read * Failure: FALSE - Access violation while reading * ******************************************************************************/
BOOL __stdcall _rt_probe_read4( DWORD * ptr) { BOOL readable;
__try { *(volatile DWORD *)ptr; readable = TRUE; } __except (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) { readable = FALSE; }
return readable; }
|