From 0ccf20f0c9e2646ef4743115a6713ac5547f1ad4 Mon Sep 17 00:00:00 2001 From: Aiken Harris Date: Fri, 3 Jul 2026 23:39:20 +0200 Subject: [PATCH] Add SEH exception pointers structure and accessors --- sdk/xtdk/iotypes.h | 1 + sdk/xtdk/rtltypes.h | 13 +++++++++++++ sdk/xtdk/xtstruct.h | 1 + 3 files changed, 15 insertions(+) diff --git a/sdk/xtdk/iotypes.h b/sdk/xtdk/iotypes.h index 1f794dc..4e3a377 100644 --- a/sdk/xtdk/iotypes.h +++ b/sdk/xtdk/iotypes.h @@ -4,6 +4,7 @@ * FILE: sdk/xtdk/iotypes.h * DESCRIPTION: I/O related type definitions * DEVELOPERS: Rafal Kupiec + * Aiken Harris */ #ifndef __XTDK_IOTYPES_H diff --git a/sdk/xtdk/rtltypes.h b/sdk/xtdk/rtltypes.h index f35a7a0..3311b66 100644 --- a/sdk/xtdk/rtltypes.h +++ b/sdk/xtdk/rtltypes.h @@ -4,6 +4,7 @@ * FILE: sdk/xtdk/rtltypes.h * DESCRIPTION: Runtime library structures definitions * DEVELOPERS: Rafal Kupiec + * Aiken Harris */ #ifndef __XTDK_RTLTYPES_H @@ -11,6 +12,7 @@ #include #include +#include ARCH_HEADER(xtstruct.h) /* UUID string lengths */ @@ -42,6 +44,10 @@ #define EXCEPTION_TARGET_UNWIND 0x20 #define EXCEPTION_COLLIDED_UNWIND 0x40 +/* Exception Record accessors */ +#define EXCEPTION_CODE _exception_code() +#define EXCEPTION_INFORMATION (PEXCEPTION_POINTERS)_exception_info() + /* Maximum number of lead bytes for NLS */ #define NLS_MAXIMUM_LEADBYTES 12 @@ -114,6 +120,13 @@ typedef struct _CPTABLE_INFO PUSHORT DBCSOffsets; } CPTABLE_INFO, *PCPTABLE_INFO; +/* Exception Pointers structure definition */ +typedef struct _EXCEPTION_POINTERS +{ + PEXCEPTION_RECORD ExceptionRecord; + PCONTEXT ContextRecord; +} EXCEPTION_POINTERS, *PEXCEPTION_POINTERS; + /* 128-bit buffer containing a unique identifier value */ typedef struct _GUID { diff --git a/sdk/xtdk/xtstruct.h b/sdk/xtdk/xtstruct.h index 6d02b9b..646c41b 100644 --- a/sdk/xtdk/xtstruct.h +++ b/sdk/xtdk/xtstruct.h @@ -276,6 +276,7 @@ typedef struct _EPROCESS_QUOTA_BLOCK EPROCESS_QUOTA_BLOCK, *PEPROCESS_QUOTA_BLOC typedef struct _EPROCESS_QUOTA_ENTRY EPROCESS_QUOTA_ENTRY, *PEPROCESS_QUOTA_ENTRY; typedef struct _ERESOURCE ERESOURCE, *PERESOURCE; typedef struct _ETHREAD ETHREAD, *PETHREAD; +typedef struct _EXCEPTION_POINTERS EXCEPTION_POINTERS, *PEXCEPTION_POINTERS; typedef struct _EXCEPTION_RECORD EXCEPTION_RECORD, *PEXCEPTION_RECORD; typedef struct _EXCEPTION_REGISTRATION_RECORD EXCEPTION_REGISTRATION_RECORD, *PEXCEPTION_REGISTRATION_RECORD; typedef struct _FAST_IO_DISPATCH FAST_IO_DISPATCH, *PFAST_IO_DISPATCH;