From 4ddc0c91c01b6895c019d331fad351dbd1fd231e Mon Sep 17 00:00:00 2001 From: Aiken Harris Date: Thu, 9 Jul 2026 15:59:28 +0200 Subject: [PATCH] Add handle table architecture definitions --- sdk/xtdk/extypes.h | 30 ++++++++++++++++++++++++++++++ sdk/xtdk/xtstruct.h | 1 + 2 files changed, 31 insertions(+) diff --git a/sdk/xtdk/extypes.h b/sdk/xtdk/extypes.h index 6de3672..59c4580 100644 --- a/sdk/xtdk/extypes.h +++ b/sdk/xtdk/extypes.h @@ -17,6 +17,24 @@ /* Rundown protection flags */ #define EX_RUNDOWN_ACTIVE 0x1 +/* Defines maximum number of handles */ +#define MAX_HANDLES (1<<24) + +/* Handle Table Architecture Dimensions */ +#define HANDLE_HILEVEL_COUNT MAX_HANDLES / (LOWLEVEL_COUNT * MIDLEVEL_COUNT) +#define HANDLE_MIDLEVEL_COUNT (MM_PAGE_SIZE / sizeof(PHANDLE_TABLE_ENTRY)) +#define HANDLE_LOWLEVEL_COUNT (MM_PAGE_SIZE / sizeof(HANDLE_TABLE_ENTRY)) + +/* Handle Value and Table Routing Constants */ +#define HANDLE_LEVEL_CODE_MASK 3 +#define HANDLE_VALUE_INCREMENT 4 + +/* Handle table entry lock bit */ +#define EXHANDLE_TABLE_ENTRY_LOCK_BIT 1 + +/* Handle additional information signature */ +#define HANDLE_ADDITIONAL_INFO_SIGNATURE (-2) + /* Number of lookaside lists */ #define POOL_LOOKASIDE_LISTS 32 @@ -81,6 +99,18 @@ typedef struct _ERESOURCE KSPIN_LOCK SpinLock; } ERESOURCE, *PERESOURCE; +/* Handle table interface union definition */ +typedef union _EXHANDLE +{ + struct + { + ULONG TagBits:2; + ULONG Index:30; + }; + HANDLE GenericHandleOverlay; + ULONG_PTR Value; +} EXHANDLE, *PEXHANDLE; + /* Executive rundown protection structure definition */ typedef union _EX_RUNDOWN_REFERENCE { diff --git a/sdk/xtdk/xtstruct.h b/sdk/xtdk/xtstruct.h index 08abe0c..8ae09ef 100644 --- a/sdk/xtdk/xtstruct.h +++ b/sdk/xtdk/xtstruct.h @@ -492,6 +492,7 @@ typedef union _EFI_HASH_OUTPUT EFI_HASH_OUTPUT, *PEFI_HASH_OUTPUT; typedef union _EFI_IA32_REGISTER_SET EFI_IA32_REGISTER_SET, *PEFI_IA32_REGISTER_SET; typedef union _EFI_IP_ADDRESS EFI_IP_ADDRESS, *PEFI_IP_ADDRESS; typedef union _EFI_PXE_BASE_CODE_PACKET EFI_PXE_BASE_CODE_PACKET, *PEFI_PXE_BASE_CODE_PACKET; +typedef union _EXHANDLE EXHANDLE, *PEXHANDLE; typedef union _EX_RUNDOWN_REFERENCE EX_RUNDOWN_REFERENCE, *PEX_RUNDOWN_REFERENCE; typedef union _KPUSH_LOCK KPUSH_LOCK, *PKPUSH_LOCK; typedef union _LARGE_INTEGER LARGE_INTEGER, *PLARGE_INTEGER;