From 404e806f1e0cbd6af884f49a11d8ca87ee692d2f Mon Sep 17 00:00:00 2001 From: Ratin Gao Date: Thu, 9 Jul 2026 01:38:26 +0800 Subject: [PATCH] phnt: fix ALPC structure layouts --- phnt/include/ntlpcapi.h | 51 +++++++++++++++++++++++++---------------- 1 file changed, 31 insertions(+), 20 deletions(-) diff --git a/phnt/include/ntlpcapi.h b/phnt/include/ntlpcapi.h index 4b1f9983d94e..9aea30a9f5ee 100644 --- a/phnt/include/ntlpcapi.h +++ b/phnt/include/ntlpcapi.h @@ -700,41 +700,52 @@ typedef struct _ALPC_CONTEXT_ATTR // begin_rev #define ALPC_HANDLEFLG_DUPLICATE_SAME_ACCESS 0x10000 #define ALPC_HANDLEFLG_DUPLICATE_SAME_ATTRIBUTES 0x20000 +#define ALPC_HANDLEFLG_INDIRECT 0x40000 #define ALPC_HANDLEFLG_DUPLICATE_INHERIT 0x80000 // end_rev +#define ALPC_INDIRECT_HANDLE_MAX 512 + // private typedef struct _ALPC_HANDLE_ATTR32 { ULONG Flags; - ULONG Reserved0; - ULONG SameAccess; - ULONG SameAttributes; - ULONG Indirect; - ULONG Inherit; - ULONG Reserved1; ULONG Handle; ULONG ObjectType; // ObjectTypeCode, not ObjectTypeIndex ACCESS_MASK DesiredAccess; - ACCESS_MASK GrantedAccess; } ALPC_HANDLE_ATTR32, *PALPC_HANDLE_ATTR32; // private typedef struct _ALPC_HANDLE_ATTR { - ULONG Flags; - ULONG Reserved0; - ULONG SameAccess; - ULONG SameAttributes; - ULONG Indirect; - ULONG Inherit; - ULONG Reserved1; - HANDLE Handle; - PALPC_HANDLE_ATTR32 HandleAttrArray; - ULONG ObjectType; // ObjectTypeCode, not ObjectTypeIndex - ULONG HandleCount; - ACCESS_MASK DesiredAccess; - ACCESS_MASK GrantedAccess; + union + { + ULONG Flags; + struct + { + ULONG Reserved0 : 16; + ULONG SameAccess : 1; + ULONG SameAttributes : 1; + ULONG Indirect : 1; + ULONG Inherit : 1; + ULONG Reserved1 : 12; + }; + }; + + union + { + struct + { + HANDLE Handle; + ULONG ObjectType; // ObjectTypeCode, not ObjectTypeIndex + ACCESS_MASK DesiredAccess; + }; + struct + { + PALPC_HANDLE_ATTR32 HandleAttrArray; + ULONG HandleCount; + }; + }; } ALPC_HANDLE_ATTR, *PALPC_HANDLE_ATTR; /*