New fields in the UPN_DNS_INFO buffer (which seems to be also called EXTRA_LOGON_INFO) #define PAC_EXTRA_LOGON_INFO_FLAGS_UPN_DEFAULTED 0x1 #define PAC_EXTRA_LOGON_INFO_FLAGS_HAS_SAM_NAME_AND_SID 0x2 // used when HAS_SAM_NAME is not set typedef struct _PAC_EXTRA_LOGON_INFO {​​​ USHORT UpnLength; USHORT UpnOffset; USHORT DnsDomainNameLength; USHORT DnsDomainNameOffset; ULONG Flags; }​​​ PAC_EXTRA_LOGON_INFO, *PPAC_EXTRA_LOGON_INFO; // used when HAS_SAM_NAME_AND_SID is set typedef struct _PAC_EXTRA_LOGON_INFO_EX {​​​ USHORT UpnLength; USHORT UpnOffset; USHORT DnsDomainNameLength; USHORT DnsDomainNameOffset; ULONG Flags; USHORT SamNameLength; USHORT SamNameOffset; USHORT SidLength; USHORT SidOffset; }​​​ PAC_EXTRA_LOGON_INFO_EX, * PPAC_EXTRA_LOGON_INFO_EX; // all lengths are rounded up to 8-byte alignment - not sure if that's required by MS-PAC or a Windows behavior