| @@ -1966,6 +1966,66 @@ typedef DWORD LCID; · 1965 unmodified lines |
| 1966 | PEXCEPTION_RECORD ExceptionRecord; | 1966 | PEXCEPTION_RECORD ExceptionRecord; |
| 1967 | PCONTEXT ContextRecord; | 1967 | PCONTEXT ContextRecord; |
| 1968 | } EXCEPTION_POINTERS,*PEXCEPTION_POINTERS; | 1968 | } EXCEPTION_POINTERS,*PEXCEPTION_POINTERS; |
| | 1969 | |
| | 1970 | #ifdef __x86_64__ |
| | 1971 | |
| | 1972 | typedef EXCEPTION_DISPOSITION NTAPI EXCEPTION_ROUTINE (struct _EXCEPTION_RECORD *ExceptionRecord, PVOID EstablisherFrame, struct _CONTEXT *ContextRecord, PVOID DispatcherContext); |
| | 1973 | #ifndef __PEXCEPTION_ROUTINE_DEFINED |
| | 1974 | #define __PEXCEPTION_ROUTINE_DEFINED |
| | 1975 | typedef EXCEPTION_ROUTINE *PEXCEPTION_ROUTINE; |
| | 1976 | #endif |
| | 1977 | |
| | 1978 | /* http://msdn.microsoft.com/en-us/library/ms680597(VS.85).aspx */ |
| | 1979 | |
| | 1980 | #define UNWIND_HISTORY_TABLE_SIZE 12 |
| | 1981 | |
| | 1982 | typedef struct _UNWIND_HISTORY_TABLE_ENTRY { |
| | 1983 | ULONG64 ImageBase; |
| | 1984 | PRUNTIME_FUNCTION FunctionEntry; |
| | 1985 | } UNWIND_HISTORY_TABLE_ENTRY, *PUNWIND_HISTORY_TABLE_ENTRY; |
| | 1986 | |
| | 1987 | #define UNWIND_HISTORY_TABLE_NONE 0 |
| | 1988 | #define UNWIND_HISTORY_TABLE_GLOBAL 1 |
| | 1989 | #define UNWIND_HISTORY_TABLE_LOCAL 2 |
| | 1990 | |
| | 1991 | typedef struct _UNWIND_HISTORY_TABLE { |
| | 1992 | ULONG Count; |
| | 1993 | UCHAR Search; |
| | 1994 | ULONG64 LowAddress; |
| | 1995 | ULONG64 HighAddress; |
| | 1996 | UNWIND_HISTORY_TABLE_ENTRY Entry[UNWIND_HISTORY_TABLE_SIZE]; |
| | 1997 | } UNWIND_HISTORY_TABLE, *PUNWIND_HISTORY_TABLE; |
| | 1998 | |
| | 1999 | /* http://msdn.microsoft.com/en-us/library/b6sf5kbd(VS.80).aspx */ |
| | 2000 | |
| | 2001 | struct _DISPATCHER_CONTEXT; |
| | 2002 | typedef struct _DISPATCHER_CONTEXT DISPATCHER_CONTEXT; |
| | 2003 | typedef struct _DISPATCHER_CONTEXT *PDISPATCHER_CONTEXT; |
| | 2004 | |
| | 2005 | struct _DISPATCHER_CONTEXT { |
| | 2006 | ULONG64 ControlPc; |
| | 2007 | ULONG64 ImageBase; |
| | 2008 | PRUNTIME_FUNCTION FunctionEntry; |
| | 2009 | ULONG64 EstablisherFrame; |
| | 2010 | ULONG64 TargetIp; |
| | 2011 | PCONTEXT ContextRecord; |
| | 2012 | PEXCEPTION_ROUTINE LanguageHandler; |
| | 2013 | PVOID HandlerData; |
| | 2014 | /* http://www.nynaeve.net/?p=99 */ |
| | 2015 | PUNWIND_HISTORY_TABLE HistoryTable; |
| | 2016 | ULONG ScopeIndex; |
| | 2017 | ULONG Fill0; |
| | 2018 | }; |
| | 2019 | |
| | 2020 | /* http://msdn.microsoft.com/en-us/library/ms680617(VS.85).aspx */ |
| | 2021 | |
| | 2022 | typedef struct _KNONVOLATILE_CONTEXT_POINTERS |
| | 2023 | { |
| | 2024 | PM128A FloatingContext[16]; |
| | 2025 | PULONG64 IntegerContext[16]; |
| | 2026 | } KNONVOLATILE_CONTEXT_POINTERS, *PKNONVOLATILE_CONTEXT_POINTERS; |
| | 2027 | #endif /* defined(__x86_64__) */ |
| | 2028 | |
| 1969 | typedef PVOID PACCESS_TOKEN; | 2029 | typedef PVOID PACCESS_TOKEN; |
| 1970 | typedef PVOID PSECURITY_DESCRIPTOR; | 2030 | typedef PVOID PSECURITY_DESCRIPTOR; |
| 1971 | typedef PVOID PSID; | 2031 | typedef PVOID PSID; |
| @@ -4877,6 +4937,11 @@ typedef DWORD LCID; · 2905 unmodified lines |
| 4877 | } IMAGE_COR20_HEADER,*PIMAGE_COR20_HEADER; | 4937 | } IMAGE_COR20_HEADER,*PIMAGE_COR20_HEADER; |
| 4878 | #endif | 4938 | #endif |
| 4879 | | 4939 | |
| | 4940 | #if defined (__x86_64__) |
| | 4941 | NTSYSAPI PRUNTIME_FUNCTION NTAPI RtlLookupFunctionEntry (DWORD64 ControlPc, PDWORD64 ImageBase, PUNWIND_HISTORY_TABLE HistoryTable); |
| | 4942 | NTSYSAPI VOID NTAPI RtlUnwindEx (PVOID TargetFrame, PVOID TargetIp, PEXCEPTION_RECORD ExceptionRecord, PVOID ReturnValue, PCONTEXT ContextRecord, PUNWIND_HISTORY_TABLE HistoryTable); |
| | 4943 | #endif |
| | 4944 | |
| 4880 | #include <string.h> | 4945 | #include <string.h> |
| 4881 | | 4946 | |
| 4882 | #ifndef _SLIST_HEADER_ | 4947 | #ifndef _SLIST_HEADER_ |