} 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