pointer_default(unique)
] interface samr
{
- /* a 4 byte aligned 64-bit integer */
- typedef struct {
- uint32 low;
- uint32 high;
- } ULONG8;
-
-
/******************/
/* Function: 0x00 */
NTSTATUS samr_Connect (
/******************/
/* Function: 0x02 */
- NTSTATUS samr_SetSecurity ();
-
- /******************/
- /* Function: 0x03 */
typedef struct {
[value(ndr_size_security_descriptor(r->sd))] uint32 sd_size;
[subcontext(4)] security_descriptor *sd;
} samr_SdBuf;
+ NTSTATUS samr_SetSecurity (
+ [in,ref] policy_handle *handle,
+ [in] uint32 sec_info,
+ [in,ref] samr_SdBuf *sdbuf
+ );
+
+ /******************/
+ /* Function: 0x03 */
+
NTSTATUS samr_QuerySecurity (
[in,ref] policy_handle *handle,
[in] uint32 sec_info,
/************************/
/* Function 0x0e */
- NTSTATUS samr_CREATE_DOM_ALIAS();
+ NTSTATUS samr_CreateDomAlias(
+ [in,ref] policy_handle *handle,
+ [in,ref] samr_Name *aliasname,
+ [in] uint32 access_mask,
+ [out,ref] policy_handle *acct_handle,
+ [out,ref] uint32 *rid
+ );
/************************/
/* Function 0x0f */
/************************/
/* Function 0x10 */
- typedef struct {
- uint32 count;
- [size_is(count)] dom_sid2 *sids;
- } samr_Sids;
-
typedef struct {
uint32 count;
[size_is(count)] uint32 *ids;
NTSTATUS samr_GetAliasMembership(
[in,ref] policy_handle *handle,
- [in] samr_Sids *sids,
+ [in,ref] lsa_SidArray *sids,
[out] samr_Ids *rids
);
samr_Name description;
} samr_GroupInfoAll;
- typedef struct {
- samr_Name Name;
- } samr_GroupInfoName;
-
typedef struct {
uint32 unknown;
} samr_GroupInfoX;
} GroupInfo;
typedef union {
- [case(GroupInfoAll)] samr_GroupInfoAll all;
- [case(GroupInfoName)] samr_GroupInfoName name;
- [case(GroupInfoX)] samr_GroupInfoX unknown;
- [case(GroupInfoDescription)] samr_GroupInfoDesciption description;
+ [case(GroupInfoAll)] samr_GroupInfoAll all;
+ [case(GroupInfoName)] samr_Name name;
+ [case(GroupInfoX)] samr_GroupInfoX unknown;
+ [case(GroupInfoDescription)] samr_Name description;
} samr_GroupInfo;
NTSTATUS samr_QueryGroupInfo(
samr_Name description;
} samr_AliasInfoAll;
- typedef struct {
- samr_Name name;
- } samr_AliasInfoName;
-
- typedef struct {
- samr_Name description;
- } samr_AliasInfoDescription;
-
typedef union {
[case(1)] samr_AliasInfoAll all;
- [case(2)] samr_AliasInfoName name;
- [case(3)] samr_AliasInfoDescription description;
+ [case(2)] samr_Name name;
+ [case(3)] samr_Name description;
} samr_AliasInfo;
NTSTATUS samr_QueryAliasInfo(
/************************/
/* Function 0x1d */
- NTSTATUS samr_SET_ALIASINFO();
+ NTSTATUS samr_SetAliasInfo(
+ [in,ref] policy_handle *handle,
+ [in] uint16 level,
+ [in,switch_is(level)] samr_AliasInfo info
+ );
/************************/
/* Function 0x1e */
- NTSTATUS samr_DELETE_DOM_ALIAS();
+ NTSTATUS samr_DeleteDomAlias(
+ [in,out,ref] policy_handle *handle
+ );
/************************/
/* Function 0x1f */
- NTSTATUS samr_ADD_ALIASMEM();
+ NTSTATUS samr_AddAliasMem(
+ [in,ref] policy_handle *handle,
+ [in,ref] dom_sid2 *sid
+ );
/************************/
/* Function 0x20 */
- NTSTATUS samr_DEL_ALIASMEM();
+ NTSTATUS samr_DelAliasMem(
+ [in,ref] policy_handle *handle,
+ [in,ref] dom_sid2 *sid
+ );
/************************/
/* Function 0x21 */
- NTSTATUS samr_GET_MEMBERS_IN_ALIAS();
+ NTSTATUS samr_GetMembersInAlias(
+ [in,ref] policy_handle *handle,
+ [out,ref] lsa_SidArray *sids
+ );
/************************/
/* Function 0x22 */
NTTIME last_pwd_change;
NTTIME allow_pwd_change;
NTTIME force_pwd_change;
- uint32 units_per_week;
- [size_is(1260), length_is(units_per_week/8)] uint8 *logon_hours;
+ samr_LogonHours logon_hours;
uint16 bad_pwd_count;
uint16 num_logons;
uint32 acct_flags;
} samr_UserInfo3;
typedef struct {
- uint32 units_per_week;
- [size_is(1260), length_is(units_per_week/8)] uint8 *logon_hours;
+ samr_LogonHours logon_hours;
} samr_UserInfo4;
typedef struct {
samr_Name workstations;
NTTIME last_logon;
NTTIME last_logoff;
- uint32 units_per_week;
- [size_is(1260), length_is(units_per_week/8)] uint8 *logon_hours;
+ samr_LogonHours logon_hours;
uint16 bad_pwd_count;
uint16 num_logons;
NTTIME last_pwd_change;
uint32 primary_gid;
uint32 acct_flags;
uint32 fields_present;
- uint32 units_per_week;
- [size_is(1260), length_is(units_per_week/8)] uint8 *logon_hours;
+ samr_LogonHours logon_hours;
uint16 bad_pwd_count;
uint16 num_logons;
uint16 country_code;
/************************/
/* Function 0x27 */
- NTSTATUS samr_GET_GROUPS_FOR_USER();
+
+ typedef struct {
+ uint32 rid;
+ uint32 type;
+ } samr_RidType;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] samr_RidType *rid;
+ } samr_RidArray;
+
+ NTSTATUS samr_GetGroupsForUser(
+ [in,ref] policy_handle *handle,
+ [out] samr_RidArray *rids
+ );
/************************/
/* Function 0x28 */
/************************/
/* Function 0x32 */
- NTSTATUS samr_CREATE_USER2_IN_DOMAIN();
+ NTSTATUS samr_CreateUser2(
+ /************************/
+ [in,ref] policy_handle *handle,
+ [in,ref] samr_Name *username,
+ [in] uint32 acct_flags,
+ [in] uint32 access_mask,
+ [out,ref] policy_handle *acct_handle,
+ [out,ref] uint32 *access_granted,
+ [out,ref] uint32 *rid
+ );
+
/************************/
/* Function 0x33 */
/************************/
/* Function 0x39 */
- NTSTATUS samr_CONNECT2();
+ NTSTATUS samr_Connect2(
+ [in] unistr *system_name,
+ [in] uint32 access_mask,
+ [out,ref] policy_handle *handle
+ );
/************************/
/* Function 0x3a */
/************************/
/* Function 0x40 */
- NTSTATUS samr_CONNECT5();
+ NTSTATUS samr_Connect5(
+ [in] unistr *system_name,
+ [in] uint32 access_mask,
+ [in] uint32 unknown0,
+ [in] uint32 unknown1,
+ [in] uint32 unknown2,
+ [in] uint32 unknown3,
+ [out] uint32 unknown4,
+ [out] uint32 unknown5,
+ [out] uint32 unknown6,
+ [out] uint32 unknown7,
+ [out,ref] policy_handle *handle
+ );
/************************/
/* Function 0x41 */