Reactos
at master 77 lines 3.5 kB view raw
1/* 2 * Definitions for Rtl exception handling functions 3 * 4 * Copyright 2024 Alexandre Julliard 5 * 6 * This library is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public 8 * License as published by the Free Software Foundation; either 9 * version 2.1 of the License, or (at your option) any later version. 10 * 11 * This library is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public 17 * License along with this library; if not, write to the Free Software 18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 19 */ 20 21#ifndef _APISETRTLSUPPORT_ 22#define _APISETRTLSUPPORT_ 23 24NTSYSAPI void WINAPI RtlCaptureContext(CONTEXT*); 25NTSYSAPI void WINAPI RtlCaptureContext2(CONTEXT*); 26NTSYSAPI USHORT WINAPI RtlCaptureStackBackTrace(ULONG,ULONG,void**,ULONG*); 27NTSYSAPI void WINAPI RtlGetCallersAddress(void**,void**); 28NTSYSAPI void WINAPI RtlRaiseException(EXCEPTION_RECORD*); 29NTSYSAPI void CDECL RtlRestoreContext(CONTEXT*,EXCEPTION_RECORD*); 30NTSYSAPI void WINAPI RtlUnwind(void*,void*,EXCEPTION_RECORD*,void*); 31NTSYSAPI void* WINAPI RtlPcToFileHeader(void*,void**); 32NTSYSAPI ULONG WINAPI RtlWalkFrameChain(void**,ULONG,ULONG); 33 34#ifndef __i386__ 35 36#define UNWIND_HISTORY_TABLE_SIZE 12 37 38typedef struct _UNWIND_HISTORY_TABLE_ENTRY 39{ 40 ULONG_PTR ImageBase; 41 PRUNTIME_FUNCTION FunctionEntry; 42} UNWIND_HISTORY_TABLE_ENTRY, *PUNWIND_HISTORY_TABLE_ENTRY; 43 44typedef struct _UNWIND_HISTORY_TABLE 45{ 46 DWORD Count; 47 BYTE LocalHint; 48 BYTE GlobalHint; 49 BYTE Search; 50 BYTE Once; 51 ULONG_PTR LowAddress; 52 ULONG_PTR HighAddress; 53 UNWIND_HISTORY_TABLE_ENTRY Entry[UNWIND_HISTORY_TABLE_SIZE]; 54} UNWIND_HISTORY_TABLE, *PUNWIND_HISTORY_TABLE; 55 56typedef PRUNTIME_FUNCTION (CALLBACK *PGET_RUNTIME_FUNCTION_CALLBACK)(DWORD_PTR,PVOID); 57 58#define RTL_VIRTUAL_UNWIND2_VALIDATE_PAC 0x0001 59 60NTSYSAPI BOOLEAN CDECL RtlAddFunctionTable(RUNTIME_FUNCTION*,ULONG,ULONG_PTR); 61NTSYSAPI NTSTATUS WINAPI RtlAddGrowableFunctionTable(void**,PRUNTIME_FUNCTION,ULONG,ULONG,ULONG_PTR,ULONG_PTR); 62NTSYSAPI BOOLEAN CDECL RtlDeleteFunctionTable(RUNTIME_FUNCTION*); 63NTSYSAPI void WINAPI RtlDeleteGrowableFunctionTable(void*); 64NTSYSAPI void WINAPI RtlGrowFunctionTable(void*,ULONG); 65NTSYSAPI BOOLEAN CDECL RtlInstallFunctionTableCallback(ULONG_PTR,ULONG_PTR,ULONG,PGET_RUNTIME_FUNCTION_CALLBACK,PVOID,PCWSTR); 66NTSYSAPI PRUNTIME_FUNCTION WINAPI RtlLookupFunctionEntry(ULONG_PTR,ULONG_PTR*,UNWIND_HISTORY_TABLE*); 67NTSYSAPI PRUNTIME_FUNCTION WINAPI RtlLookupFunctionTable(ULONG_PTR,ULONG_PTR*,ULONG*); 68NTSYSAPI void WINAPI RtlUnwindEx(void*,void*,EXCEPTION_RECORD*,void*,CONTEXT*,UNWIND_HISTORY_TABLE*); 69NTSYSAPI PEXCEPTION_ROUTINE WINAPI RtlVirtualUnwind(ULONG,ULONG_PTR,ULONG_PTR,RUNTIME_FUNCTION*,CONTEXT*,void**,ULONG_PTR*,KNONVOLATILE_CONTEXT_POINTERS*); 70NTSYSAPI NTSTATUS WINAPI RtlVirtualUnwind2(ULONG,ULONG_PTR,ULONG_PTR,RUNTIME_FUNCTION*,CONTEXT*,BOOLEAN*,void**,ULONG_PTR*,KNONVOLATILE_CONTEXT_POINTERS*,ULONG_PTR*,ULONG_PTR*,PEXCEPTION_ROUTINE*,ULONG); 71#ifdef __x86_64__ 72NTSYSAPI BOOLEAN WINAPI RtlIsEcCode(ULONG_PTR); 73#endif 74 75#endif /* __i386__ */ 76 77#endif /* _APISETRTLSUPPORT_ */