From 7a6982d44a7c3e25d1f6a97ade61af7f0cbe7916 Mon Sep 17 00:00:00 2001 From: Aiken Harris Date: Thu, 9 Jul 2026 13:19:55 +0200 Subject: [PATCH] Add kernel handle masks --- sdk/xtdk/obtypes.h | 20 ++++++++++++++++++++ sdk/xtdk/xtstruct.h | 1 + 2 files changed, 21 insertions(+) diff --git a/sdk/xtdk/obtypes.h b/sdk/xtdk/obtypes.h index 7dcde43..fab3411 100644 --- a/sdk/xtdk/obtypes.h +++ b/sdk/xtdk/obtypes.h @@ -34,7 +34,9 @@ #define OBJECT_LOCK_STATE_INITIALIZED 0xFFFF1234 /* Object name attribute flags */ +#define OBJECT_PROTECT_CLOSE 0x00000001L #define OBJECT_INHERIT 0x00000002L +#define OBJECT_AUDIT_OBJECT_CLOSE 0x00000004L #define OBJECT_PERMANENT 0x00000010L #define OBJECT_EXCLUSIVE 0x00000020L #define OBJECT_CASE_INSENSITIVE 0x00000040L @@ -44,6 +46,14 @@ #define OBJECT_FORCE_ACCESS_CHECK 0x00000400L #define OBJECT_VALID_ATTRIBUTES 0x000007F2L +/* Object handle attributes */ +#define OBJECT_HANDLE_ATTRIBUTES (OBJECT_PROTECT_CLOSE | \ + OBJECT_INHERIT | \ + OBJECT_AUDIT_OBJECT_CLOSE) + +/* Object protect-on-close access bit */ +#define OBJECT_ACCESS_PROTECT_CLOSE_BIT 0x02000000L + /* Maximum number of defined object types */ #define OBJECT_MAX_DEFINED_OBJECT_TYPES 48 @@ -57,6 +67,9 @@ /* Object name path separator */ #define OBJECT_NAME_PATH_SEPARATOR ((WCHAR)L'\\') +/* Kernel mode object handle mask */ +#define OBJECT_HANDLE_KERNEL_MASK ((ULONG_PTR)((LONG)0x80000000)) + /* Number of hash buckets */ #define OBJECT_NUMBER_HASH_BUCKETS 37 @@ -201,6 +214,13 @@ typedef struct _OBJECT_HANDLE_INFO OBJECT_HANDLE_COUNT_INFORMATION HandleCounts; } OBJECT_HANDLE_INFO, *POBJECT_HANDLE_INFO; +/* Object Handle Information */ +typedef struct _OBJECT_HANDLE_INFORMATION +{ + ULONG HandleAttributes; + ACCESS_MASK GrantedAccess; +} OBJECT_HANDLE_INFORMATION, *POBJECT_HANDLE_INFORMATION; + /* Core object header */ typedef struct _OBJECT_HEADER { diff --git a/sdk/xtdk/xtstruct.h b/sdk/xtdk/xtstruct.h index 612ce59..08abe0c 100644 --- a/sdk/xtdk/xtstruct.h +++ b/sdk/xtdk/xtstruct.h @@ -381,6 +381,7 @@ typedef struct _OBJECT_HANDLE_COUNT_DATABASE OBJECT_HANDLE_COUNT_DATABASE, *POBJ typedef struct _OBJECT_HANDLE_COUNT_ENTRY OBJECT_HANDLE_COUNT_ENTRY, *POBJECT_HANDLE_COUNT_ENTRY; typedef struct _OBJECT_HANDLE_COUNT_INFORMATION OBJECT_HANDLE_COUNT_INFORMATION, *POBJECT_HANDLE_COUNT_INFORMATION; typedef struct _OBJECT_HANDLE_INFO OBJECT_HANDLE_INFO, *POBJECT_HANDLE_INFO; +typedef struct _OBJECT_HANDLE_INFORMATION OBJECT_HANDLE_INFORMATION, *POBJECT_HANDLE_INFORMATION; typedef struct _OBJECT_HEADER OBJECT_HEADER, *POBJECT_HEADER; typedef struct _OBJECT_HEADER_CREATOR_INFO OBJECT_HEADER_CREATOR_INFO, *POBJECT_HEADER_CREATOR_INFO; typedef struct _OBJECT_HEADER_NAME_INFO OBJECT_HEADER_NAME_INFO, *POBJECT_HEADER_NAME_INFO;