Move handle table definitions to OB
This commit is contained in:
@@ -17,24 +17,6 @@
|
|||||||
/* Rundown protection flags */
|
/* Rundown protection flags */
|
||||||
#define EX_RUNDOWN_ACTIVE 0x1
|
#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 */
|
/* Number of lookaside lists */
|
||||||
#define POOL_LOOKASIDE_LISTS 32
|
#define POOL_LOOKASIDE_LISTS 32
|
||||||
|
|
||||||
@@ -99,18 +81,6 @@ typedef struct _ERESOURCE
|
|||||||
KSPIN_LOCK SpinLock;
|
KSPIN_LOCK SpinLock;
|
||||||
} ERESOURCE, *PERESOURCE;
|
} 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 */
|
/* Executive rundown protection structure definition */
|
||||||
typedef union _EX_RUNDOWN_REFERENCE
|
typedef union _EX_RUNDOWN_REFERENCE
|
||||||
{
|
{
|
||||||
@@ -169,56 +139,6 @@ typedef struct _GENERAL_LOOKASIDE
|
|||||||
ULONG Future[2];
|
ULONG Future[2];
|
||||||
} GENERAL_LOOKASIDE, *PGENERAL_LOOKASIDE;
|
} 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 */
|
/* Lookaside list pointers structure definition */
|
||||||
typedef struct _LOOKASIDE_LIST
|
typedef struct _LOOKASIDE_LIST
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -51,6 +51,32 @@
|
|||||||
OBJECT_INHERIT | \
|
OBJECT_INHERIT | \
|
||||||
OBJECT_AUDIT_OBJECT_CLOSE)
|
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 */
|
/* Object protect-on-close access bit */
|
||||||
#define OBJECT_ACCESS_PROTECT_CLOSE_BIT 0x02000000L
|
#define OBJECT_ACCESS_PROTECT_CLOSE_BIT 0x02000000L
|
||||||
|
|
||||||
@@ -128,6 +154,56 @@ typedef struct _DEVICE_MAP
|
|||||||
UCHAR DriveType[32];
|
UCHAR DriveType[32];
|
||||||
} DEVICE_MAP, *PDEVICE_MAP;
|
} 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 */
|
/* Parameters provided by a caller when creating or opening an object */
|
||||||
typedef struct _OBJECT_ATTRIBUTES
|
typedef struct _OBJECT_ATTRIBUTES
|
||||||
{
|
{
|
||||||
@@ -185,6 +261,18 @@ typedef struct _OBJECT_DUMP_CONTROL
|
|||||||
ULONG Detail;
|
ULONG Detail;
|
||||||
} OBJECT_DUMP_CONTROL, *POBJECT_DUMP_CONTROL;
|
} 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 */
|
/* Entry tracking the number of open handles a specific process holds */
|
||||||
typedef struct _OBJECT_HANDLE_COUNT_ENTRY
|
typedef struct _OBJECT_HANDLE_COUNT_ENTRY
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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_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_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 _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 _EX_RUNDOWN_REFERENCE EX_RUNDOWN_REFERENCE, *PEX_RUNDOWN_REFERENCE;
|
||||||
typedef union _KPUSH_LOCK KPUSH_LOCK, *PKPUSH_LOCK;
|
typedef union _KPUSH_LOCK KPUSH_LOCK, *PKPUSH_LOCK;
|
||||||
typedef union _LARGE_INTEGER LARGE_INTEGER, *PLARGE_INTEGER;
|
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 _OBJECT_HEADER_HANDLE_INFO OBJECT_HEADER_HANDLE_INFO, *POBJECT_HEADER_HANDLE_INFO;
|
||||||
typedef union _POWER_STATE POWER_STATE, *PPOWER_STATE;
|
typedef union _POWER_STATE POWER_STATE, *PPOWER_STATE;
|
||||||
typedef union _ULARGE_INTEGER ULARGE_INTEGER, *PULARGE_INTEGER;
|
typedef union _ULARGE_INTEGER ULARGE_INTEGER, *PULARGE_INTEGER;
|
||||||
|
|||||||
Reference in New Issue
Block a user