ReactOS 0.4.16-dev-289-g096a551
|
#include <rtl.h>
#include <debug.h>
Go to the source code of this file.
Classes | |
union | _UNWIND_CODE |
struct | _UNWIND_INFO |
Typedefs | |
typedef unsigned char | UBYTE |
typedef union _UNWIND_CODE | UNWIND_CODE |
typedef union _UNWIND_CODE * | PUNWIND_CODE |
typedef struct _UNWIND_INFO | UNWIND_INFO |
typedef struct _UNWIND_INFO * | PUNWIND_INFO |
typedef union _UNWIND_CODE * PUNWIND_CODE |
typedef struct _UNWIND_INFO * PUNWIND_INFO |
typedef union _UNWIND_CODE UNWIND_CODE |
typedef struct _UNWIND_INFO UNWIND_INFO |
|
static |
https://docs.microsoft.com/en-us/cpp/build/unwind-data-definitions-in-c
Definition at line 433 of file unwind.c.
Referenced by RtlVirtualUnwind().
Definition at line 237 of file unwind.c.
Referenced by GetEstablisherFrame(), RtlpTryToUnwindEpilog(), and RtlVirtualUnwind().
|
static |
Definition at line 247 of file unwind.c.
Referenced by RtlpTryToUnwindEpilog(), and RtlVirtualUnwind().
RtlGetCallersAddress http://undocumented.ntinternals.net/UserMode/Undocumented%20Functions/Debug/RtlGetCallersAddress.html
Definition at line 1044 of file unwind.c.
PRUNTIME_FUNCTION NTAPI RtlLookupFunctionEntry | ( | IN DWORD64 | ControlPc, |
OUT PDWORD64 | ImageBase, | ||
OUT PUNWIND_HISTORY_TABLE | HistoryTable | ||
) |
Locates the RUNTIME_FUNCTION entry corresponding to a code address. http://msdn.microsoft.com/en-us/library/ms680597(VS.85).aspx.
RtlLookupFunctionEntry
Definition at line 124 of file unwind.c.
Referenced by RtlpCaptureNonVolatileContextPointers(), RtlpUnwindInternal(), and RtlWalkFrameChain().
PRUNTIME_FUNCTION NTAPI RtlLookupFunctionTable | ( | IN DWORD64 | ControlPc, |
OUT PDWORD64 | ImageBase, | ||
OUT PULONG | Length | ||
) |
Locates the table of RUNTIME_FUNCTION entries for a code address.
RtlLookupFunctionTable
ControlPc | Address of the code, for which the table should be searched. |
ImageBase | Pointer to a DWORD64 that receives the base address of the corresponding executable image. |
Length | Pointer to an ULONG that receives the number of table entries present in the table. |
Definition at line 82 of file unwind.c.
Referenced by RtlLookupFunctionEntry().
|
static |
Definition at line 1063 of file unwind.c.
Referenced by RtlSetUnwindContext().
PRUNTIME_FUNCTION NTAPI RtlpLookupDynamicFunctionEntry | ( | _In_ DWORD64 | ControlPc, |
_Out_ PDWORD64 | ImageBase, | ||
_In_ PUNWIND_HISTORY_TABLE | HistoryTable | ||
) |
Definition at line 271 of file dynfntbl.c.
Referenced by RtlLookupFunctionEntry().
Referenced by RtlRestoreContext().
|
static |
Helper function that tries to unwind epilog instructions.
RtlpTryToUnwindEpilog
Definition at line 304 of file unwind.c.
Referenced by RtlVirtualUnwind().
BOOLEAN NTAPI RtlpUnwindInternal | ( | _In_opt_ PVOID | TargetFrame, |
_In_opt_ PVOID | TargetIp, | ||
_In_ PEXCEPTION_RECORD | ExceptionRecord, | ||
_In_ PVOID | ReturnValue, | ||
_In_ PCONTEXT | ContextRecord, | ||
_In_opt_ struct _UNWIND_HISTORY_TABLE * | HistoryTable, | ||
_In_ ULONG | HandlerType | ||
) |
Differences to the desciption: - Instead of using 2 pointers to the unwind context and previous context, that are being swapped and the context copied, the unwind context is kept in the local context and copied back into the context passed in by the caller.
TODO: Handle DPC stack
TODO: call RtlpExecuteHandlerForUnwind instead
TODO
TODO
TODO: Check for DPC stack
Definition at line 665 of file unwind.c.
Referenced by RtlDispatchException(), and RtlUnwindEx().
VOID RtlRestoreContext | ( | _In_ PCONTEXT | ContextRecord, |
_In_ PEXCEPTION_RECORD | ExceptionRecord | ||
) |
Definition at line 1146 of file unwind.c.
Referenced by RtlpUnwindInternal().
Definition at line 1115 of file unwind.c.
Referenced by KiSetTrapContextInternal().
VOID NTAPI RtlUnwind | ( | _In_opt_ PVOID TargetFrame TargetFrame | , |
_In_opt_ PVOID | TargetIp, | ||
_In_opt_ PEXCEPTION_RECORD | ExceptionRecord, | ||
_In_ PVOID | ReturnValue | ||
) |
Definition at line 918 of file unwind.c.
Referenced by _local_unwind(), and _SEH2GlobalUnwind().
VOID NTAPI RtlUnwindEx | ( | _In_opt_ PVOID | TargetFrame, |
_In_opt_ PVOID | TargetIp, | ||
_In_opt_ PEXCEPTION_RECORD | ExceptionRecord, | ||
_In_ PVOID | ReturnValue, | ||
_In_ PCONTEXT | ContextRecord, | ||
_In_opt_ struct _UNWIND_HISTORY_TABLE * | HistoryTable | ||
) |
Definition at line 875 of file unwind.c.
Referenced by __C_specific_handler(), and RtlUnwind().
PEXCEPTION_ROUTINE NTAPI RtlVirtualUnwind | ( | _In_ ULONG | HandlerType, |
_In_ ULONG64 | ImageBase, | ||
_In_ ULONG64 | ControlPc, | ||
_In_ PRUNTIME_FUNCTION | FunctionEntry, | ||
_Inout_ PCONTEXT | Context, | ||
_Outptr_ PVOID * | HandlerData, | ||
_Out_ PULONG64 | EstablisherFrame, | ||
_Inout_opt_ PKNONVOLATILE_CONTEXT_POINTERS | ContextPointers | ||
) |
Definition at line 478 of file unwind.c.
Referenced by RtlpCaptureNonVolatileContextPointers(), RtlpUnwindInternal(), and RtlWalkFrameChain().
Definition at line 936 of file unwind.c.
Referenced by RtlGetCallersAddress().
Definition at line 210 of file unwind.c.
Referenced by SetRegFromStackValue().
|
static |
Definition at line 221 of file unwind.c.
Referenced by PopReg(), and RtlVirtualUnwind().
|
static |
Definition at line 270 of file unwind.c.
Referenced by RtlVirtualUnwind().
|
static |
Definition at line 177 of file unwind.c.
Referenced by GetEstablisherFrame(), and RtlVirtualUnwind().