diff --git a/sdk/xtdk/extypes.h b/sdk/xtdk/extypes.h index 59c45808c..351ab1626 100644 --- a/sdk/xtdk/extypes.h +++ b/sdk/xtdk/extypes.h @@ -17,24 +17,6 @@ /* 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 @@ -99,18 +81,6 @@ 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 { @@ -169,56 +139,6 @@ typedef struct _GENERAL_LOOKASIDE ULONG Future[2]; } GENERAL_LOOKASIDE, *PGENERAL_LOOKASIDE; -/* Handle table entry structure definition */ -typedef struct _HANDLE_TABLE_ENTRY -{ - union - { - PVOID Object; - ULONG_PTR ObAttributes; - PHANDLE_TABLE_ENTRY_INFO InfoTable; - ULONG_PTR Value; - }; - union - { - ULONG GrantedAccess; - struct - { - USHORT GrantedAccessIndex; - USHORT CreatorBackTraceIndex; - }; - LONG NextFreeTableEntry; - }; -} HANDLE_TABLE_ENTRY, *PHANDLE_TABLE_ENTRY; - -/* Handle table entry info structure definition */ -typedef struct _HANDLE_TABLE_ENTRY_INFO -{ - ULONG AuditMask; -} HANDLE_TABLE_ENTRY_INFO, *PHANDLE_TABLE_ENTRY_INFO; - -/* Handle table structure definition */ -typedef struct _HANDLE_TABLE -{ - ULONG_PTR TableCode; - PEPROCESS QuotaProcess; - PVOID UniqueProcessId; - KPUSH_LOCK HandleTableLock[4]; - LIST_ENTRY HandleTableList; - KPUSH_LOCK HandleContentionEvent; - PVOID Reserved; - LONG ExtraInfoPages; - union - { - ULONG Flags; - UCHAR StrictFIFO:1; - }; - PHANDLE_TABLE_ENTRY FirstFreeHandle; - PHANDLE_TABLE_ENTRY LastFreeHandle; - LONG HandleCount; - ULONG NextHandleNeedingPool; -} HANDLE_TABLE, *PHANDLE_TABLE; - /* Lookaside list pointers structure definition */ typedef struct _LOOKASIDE_LIST { diff --git a/sdk/xtdk/obtypes.h b/sdk/xtdk/obtypes.h index fab3411d0..32d503014 100644 --- a/sdk/xtdk/obtypes.h +++ b/sdk/xtdk/obtypes.h @@ -51,6 +51,32 @@ OBJECT_INHERIT | \ OBJECT_AUDIT_OBJECT_CLOSE) +/* Defines maximum number of handles */ +#define OBJECT_MAX_HANDLES (1<<24) + +/* Handle Table Architecture Dimensions */ +#define OBJECT_HANDLE_HIGHLEVEL_COUNT OBJECT_MAX_HANDLES / (OBJECT_HANDLE_LOWLEVEL_COUNT * OBJECT_HANDLE_MEDIUMLEVEL_COUNT) +#define OBJECT_HANDLE_MEDIUMLEVEL_COUNT (MM_PAGE_SIZE / sizeof(PHANDLE_TABLE_ENTRY)) +#define OBJECT_HANDLE_LOWLEVEL_COUNT (MM_PAGE_SIZE / sizeof(HANDLE_TABLE_ENTRY)) +#define OBJECT_HANDLE_HIGHLEVEL_SIZE (OBJECT_HANDLE_HIGHLEVEL_COUNT * sizeof(PHANDLE_TABLE_ENTRY)) +#define OBJECT_HANDLE_MEDIUMLEVEL_THRESHOLD (OBJECT_HANDLE_MEDIUMLEVEL_COUNT * OBJECT_HANDLE_LOWLEVEL_COUNT) + +/* Handle Value and Table Routing Constants */ +#define OBJECT_HANDLE_LEVEL_CODE_MASK 3 +#define OBJECT_HANDLE_VALUE_INCREMENT 4 + +/* Handle free mask */ +#define OBJECT_FREE_HANDLE_MASK 0xFFFFFFFF + +/* Handle table entry lock bit */ +#define OBJECT_HANDLE_TABLE_ENTRY_LOCK_BIT 1 + +/* Handle additional information signature */ +#define OBJECT_HANDLE_ADDITIONAL_INFO_SIGNATURE (-2) + +/* Handle tracing constants */ +#define OBJECT_HANDLE_TRACE_DB_STACK_SIZE 8 + /* Object protect-on-close access bit */ #define OBJECT_ACCESS_PROTECT_CLOSE_BIT 0x02000000L @@ -128,6 +154,56 @@ typedef struct _DEVICE_MAP UCHAR DriveType[32]; } DEVICE_MAP, *PDEVICE_MAP; +/* Handle table entry structure definition */ +typedef struct _HANDLE_TABLE_ENTRY +{ + union + { + PVOID Object; + ULONG_PTR ObAttributes; + PHANDLE_TABLE_ENTRY_INFO InfoTable; + ULONG_PTR Value; + }; + union + { + ULONG GrantedAccess; + struct + { + USHORT GrantedAccessIndex; + USHORT CreatorBackTraceIndex; + }; + LONG NextFreeTableEntry; + }; +} HANDLE_TABLE_ENTRY, *PHANDLE_TABLE_ENTRY; + +/* Handle table entry info structure definition */ +typedef struct _HANDLE_TABLE_ENTRY_INFO +{ + ULONG AuditMask; +} HANDLE_TABLE_ENTRY_INFO, *PHANDLE_TABLE_ENTRY_INFO; + +/* Handle table structure definition */ +typedef struct _HANDLE_TABLE +{ + ULONG_PTR TableCode; + PEPROCESS QuotaProcess; + PVOID UniqueProcessId; + KPUSH_LOCK HandleTableLock[4]; + LIST_ENTRY HandleTableList; + KPUSH_LOCK HandleContentionEvent; + PVOID Reserved; + LONG ExtraInfoPages; + union + { + ULONG Flags; + UCHAR StrictFIFO:1; + }; + PHANDLE_TABLE_ENTRY FirstFreeHandle; + PHANDLE_TABLE_ENTRY LastFreeHandle; + LONG HandleCount; + ULONG NextHandleNeedingPool; +} HANDLE_TABLE, *PHANDLE_TABLE; + /* Parameters provided by a caller when creating or opening an object */ typedef struct _OBJECT_ATTRIBUTES { @@ -185,6 +261,18 @@ typedef struct _OBJECT_DUMP_CONTROL ULONG Detail; } OBJECT_DUMP_CONTROL, *POBJECT_DUMP_CONTROL; +/* Handle table interface union definition */ +typedef union _OBJECT_HANDLE +{ + struct + { + ULONG TagBits:2; + ULONG Index:30; + }; + HANDLE GenericHandleOverlay; + ULONG_PTR Value; +} OBJECT_HANDLE, *POBJECT_HANDLE; + /* Entry tracking the number of open handles a specific process holds */ typedef struct _OBJECT_HANDLE_COUNT_ENTRY { diff --git a/sdk/xtdk/xtstruct.h b/sdk/xtdk/xtstruct.h index ea4a4684f..bf941feaa 100644 --- a/sdk/xtdk/xtstruct.h +++ b/sdk/xtdk/xtstruct.h @@ -504,10 +504,10 @@ 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; +typedef union _OBJECT_HANDLE OBJECT_HANDLE, *POBJECT_HANDLE; typedef union _OBJECT_HEADER_HANDLE_INFO OBJECT_HEADER_HANDLE_INFO, *POBJECT_HEADER_HANDLE_INFO; typedef union _POWER_STATE POWER_STATE, *PPOWER_STATE; typedef union _ULARGE_INTEGER ULARGE_INTEGER, *PULARGE_INTEGER;