2.12 PAC_DEVICE_INFO

The PAC_DEVICE_INFO structure is a variable length buffer of the PAC that SHOULD<25> contain the device's logon and authorization information provided by the DC. A pointer to the PAC_DEVICE_INFO structure is serialized into an array of bytes and placed directly after the Buffers array of the topmost PACTYPE structure (section 2.3), at the offset specified in the Offset field of the corresponding PAC_INFO_BUFFER structure (section 2.4) in the Buffers array. The ulType field of the corresponding PAC_INFO_BUFFER is set to 0x0000000E.

The PAC_DEVICE_INFO structure is defined as follows.

 typedef struct_PAC_DEVICE_INFO {
   ULONG UserId;
   ULONG PrimaryGroupId;
   PISID AccountDomainId;
   ULONG AccountGroupCount;
   [size_is(AccountGroupCount)] PGROUP_MEMBERSHIP AccountGroupIds;
   ULONG SidCount;
   [size_is(SidCount)] PKERB_SID_AND_ATTRIBUTES ExtraSids;
   ULONG DomainGroupCount;
   [size_is(DomainGroupCount)] PDOMAIN_GROUP_MEMBERSHIP DomainGroup;
 } PAC_DEVICE_INFO, *PPAC_DEVICE_INFO;

UserId: A 32-bit unsigned integer that contains the RID of the account. If the UserId member equals 0x00000000, the first group SID in this member is the SID for this account.

PrimaryGroupId: A 32-bit unsigned integer that contains the RID for the primary group to which this account belongs.

AccountDomainId: A SID structure that contains the SID for the domain of the account. This member is used in conjunction with the UserId, and GroupIds members to create the user and group SIDs for the client.

AccountGroupCount: A 32-bit unsigned integer that contains the number of groups within the account domain to which the account belongs.

AccountGroupIds: A pointer to a list of GROUP_MEMBERSHIP (section 2.2.2) structures that contains the groups to which the account belongs in the account domain. The number of groups in this list MUST be equal to GroupCount.

SidCount: A 32-bit unsigned integer that contains the total number of SIDs present in the ExtraSids member.

ExtraSids: A pointer to a list of KERB_SID_AND_ATTRIBUTES structures (section 2.2.1) that contain a list of SIDs corresponding to groups not in domains. If the UserId member equals 0x00000000, the first group SID in this member is the SID for this account.

DomainGroupCount: A 32-bit unsigned integer that contains the number of domains with groups to which the account belongs.

DomainGroup: A pointer to a list of DOMAIN_GROUP_MEMBERSHIP structures (section 2.2.3) that contains the domains to which the account belongs to a group. The number of sets in this list MUST be equal to DomainCount.