} GROUP_INFO4;
-/* SAMR_R_QUERY_GROUPINFO - SAM Group Info */
-typedef struct r_samr_query_groupinfo_info
+/* GROUP_INFO_CTR */
+typedef struct group_info_ctr
{
- uint32 ptr;
- uint16 switch_value; /* 0x0001 seen */
- /* uint8[2] padding */
+ uint16 switch_value;
union
{
+ GROUP_INFO4 info4;
GROUP_INFO1 info1;
} group;
+} GROUP_INFO_CTR;
+
+/* SAMR_R_QUERY_GROUPINFO - SAM Group Info */
+typedef struct r_samr_query_groupinfo_info
+{
+ uint32 ptr;
+ GROUP_INFO_CTR *ctr;
+
uint32 status;
} SAMR_R_QUERY_GROUPINFO;
typedef struct q_samr_set_group_info
{
POLICY_HND pol; /* policy handle */
- uint16 switch_value1; /* 0x0004 seen */
- uint16 switch_value2; /* 0x0004 seen */
-
- union
- {
- GROUP_INFO4 info4;
-
- } group;
+ GROUP_INFO_CTR *ctr;
} SAMR_Q_SET_GROUPINFO;
uint32 num_entries2;
DOM_RID3 dom_rid[MAX_LOOKUP_SIDS]; /* domain RIDs being looked up */
- uint32 num_entries3;
-
uint32 status; /* return code */
} SAMR_R_LOOKUP_NAMES;
/* SAMR_R_UNKNOWN_12 */
typedef struct r_samr_unknown_12_info
{
- POLICY_HND pol; /* policy handle */
+ POLICY_HND pol; /* policy handle */
- uint32 num_aliases1; /* number of aliases being looked up */
- uint32 ptr_aliases; /* pointer to aliases */
- uint32 num_aliases2; /* number of aliases being looked up */
+ uint32 num_names1; /* number of aliases being looked up */
+ uint32 ptr_names; /* pointer to aliases */
+ uint32 num_names2; /* number of aliases being looked up */
- UNIHDR hdr_als_name[MAX_LOOKUP_SIDS]; /* unicode account name header */
- UNISTR2 uni_als_name[MAX_LOOKUP_SIDS]; /* unicode account name string */
+ UNIHDR hdr_name[MAX_LOOKUP_SIDS]; /* unicode account name header */
+ UNISTR2 uni_name[MAX_LOOKUP_SIDS]; /* unicode account name string */
- uint32 num_als_usrs1; /* number of users in aliases being looked up */
- uint32 ptr_als_usrs; /* pointer to users in aliases */
- uint32 num_als_usrs2; /* number of users in aliases being looked up */
+ uint32 num_types1; /* number of users in aliases being looked up */
+ uint32 ptr_types; /* pointer to users in aliases */
+ uint32 num_types2; /* number of users in aliases being looked up */
- uint32 num_als_usrs[MAX_LOOKUP_SIDS]; /* number of users per group */
+ uint32 type[MAX_LOOKUP_SIDS]; /* SID_ENUM type */
uint32 status;
} SAMR_R_UNKNOWN_32;
+/* SAMR_Q_QUERY_GROUPMEM - query group members */
+typedef struct q_samr_query_groupmem_info
+{
+ POLICY_HND group_pol; /* policy handle */
+
+} SAMR_Q_QUERY_GROUPMEM;
+
+
+/* SAMR_R_QUERY_GROUPMEM - query group members */
+typedef struct r_samr_query_groupmem_info
+{
+ uint32 ptr;
+ uint32 num_entries;
+
+ uint32 ptr_rids;
+ uint32 ptr_attrs;
+
+ uint32 num_rids;
+ uint32 *rid;
+
+ uint32 num_attrs;
+ uint32 *attr;
+
+ uint32 status;
+
+} SAMR_R_QUERY_GROUPMEM;
+
/* SAMR_Q_ADD_GROUPMEM - probably an add group member */
typedef struct q_samr_add_group_mem_info
} SAMR_R_OPEN_GROUP;
-/* SAMR_Q_UNKNOWN_21 - probably an open group in domain */
-typedef struct q_samr_unknown_21_info
+/* SAMR_Q_QUERY_ALIASMEM - query alias members */
+typedef struct q_samr_query_aliasmem_info
{
- POLICY_HND group_pol; /* policy handle */
+ POLICY_HND alias_pol; /* policy handle */
+
+} SAMR_Q_QUERY_ALIASMEM;
- uint16 unknown_1; /* 16 bit unknown - 0x0477 */
- uint16 unknown_2; /* 16 bit unknown - 0x0000 */
-} SAMR_Q_UNKNOWN_21;
+/* SAMR_R_QUERY_ALIASMEM - query alias members */
+typedef struct r_samr_query_aliasmem_info
+{
+ uint32 num_sids;
+ uint32 ptr;
+ uint32 num_sids1;
+
+ DOM_SID2 *sid;
+
+ uint32 status;
+
+} SAMR_R_QUERY_ALIASMEM;
/* SAMR_Q_UNK_ALIASMEM - don't know! */
/* SAMR_Q_OPEN_ALIAS - probably an open */
typedef struct q_samr_open_alias_info
{
+ POLICY_HND dom_pol;
+
uint32 unknown_0; /* 0x0000 0008 */
uint32 rid_alias; /* rid */