2008-04-08 04:25:00 +04:00
/*
libnetapi interface definition
*/
cpp_quote("#define LIBNETAPI_LOCAL_SERVER(x) (!x || is_myname_or_ipaddr(x))")
2008-05-27 14:05:31 +04:00
cpp_quote("#ifndef MAXSUBAUTHS")
cpp_quote("#define MAXSUBAUTHS 15 /* max sub authorities in a SID */")
cpp_quote("#endif")
2008-04-08 04:25:00 +04:00
[
pointer_default(unique)
]
interface libnetapi
{
2008-04-09 15:41:54 +04:00
const int ERROR_MORE_DATA = 234L;
2008-04-08 04:25:00 +04:00
[public] typedef [v1_enum] enum {
NERR_Success=0
} NET_API_STATUS;
2008-05-27 14:05:31 +04:00
[public] typedef struct {
uint8 sid_rev_num;
uint8 num_auths;
uint8 id_auth[6];
uint32 sub_auths[MAXSUBAUTHS];
} domsid;
2008-06-09 12:59:23 +04:00
/*******************************************/
/* NetJoinDomain */
/*******************************************/
2008-04-08 04:25:00 +04:00
[nopush,nopull] NET_API_STATUS NetJoinDomain(
[in,unique] string *server,
[in,ref] string *domain,
[in,unique] string *account_ou,
[in,unique] string *account,
[in,unique] string *password,
[in] uint32 join_flags
);
2008-06-09 12:59:23 +04:00
/*******************************************/
/* NetUnjoinDomain */
/*******************************************/
2008-04-08 04:25:00 +04:00
[nopush,nopull] NET_API_STATUS NetUnjoinDomain(
[in,unique] string *server_name,
[in,unique] string *account,
[in,unique] string *password,
[in] uint32 unjoin_flags
);
2008-06-09 12:59:23 +04:00
/*******************************************/
/* NetGetJoinInformation */
/*******************************************/
2008-04-08 04:25:00 +04:00
[nopush,nopull] NET_API_STATUS NetGetJoinInformation(
[in,unique] string *server_name,
[out] string **name_buffer,
[out] uint16 *name_type
);
2008-06-09 12:59:23 +04:00
/*******************************************/
/* NetGetJoinableOUs */
/*******************************************/
2008-04-08 04:25:00 +04:00
[nopush,nopull] NET_API_STATUS NetGetJoinableOUs(
[in,unique] string *server_name,
[in,ref] string *domain,
[in,unique] string *account,
[in,unique] string *password,
[out] uint32 *ou_count,
[out] string ***ous
);
2008-06-09 12:59:23 +04:00
/*******************************************/
/* NetServerGetInfo */
/*******************************************/
2008-04-10 23:28:17 +04:00
[public] typedef struct {
string sv1005_comment;
} SERVER_INFO_1005;
2008-04-08 04:25:00 +04:00
[nopush,nopull] NET_API_STATUS NetServerGetInfo(
[in,unique] string *server_name,
[in] uint32 level,
[out] uint8 **buffer
);
2008-06-09 12:59:23 +04:00
/*******************************************/
/* NetServerSetInfo */
/*******************************************/
2008-04-08 04:25:00 +04:00
[nopush,nopull] NET_API_STATUS NetServerSetInfo(
[in,unique] string *server_name,
[in] uint32 level,
[in] uint8 *buffer,
[out] uint32 *parm_error
);
2008-06-09 12:59:23 +04:00
/*******************************************/
/* NetGetDCName */
/*******************************************/
2008-04-08 04:25:00 +04:00
[nopush,nopull] NET_API_STATUS NetGetDCName(
[in,unique] string *server_name,
[in,unique] string *domain_name,
[out] uint8 **buffer
);
2008-06-09 12:59:23 +04:00
/*******************************************/
/* NetGetAnyDCName */
/*******************************************/
2008-04-08 04:25:00 +04:00
[nopush,nopull] NET_API_STATUS NetGetAnyDCName(
[in,unique] string *server_name,
[in,unique] string *domain_name,
[out] uint8 **buffer
);
2008-04-08 16:37:09 +04:00
2008-06-09 12:59:23 +04:00
/*******************************************/
/* DsGetDcName */
/*******************************************/
2008-04-08 16:37:09 +04:00
[public] typedef struct {
string domain_controller_name;
string domain_controller_address;
uint32 domain_controller_address_type;
GUID domain_guid;
string domain_name;
string dns_forest_name;
uint32 flags;
string dc_site_name;
string client_site_name;
} DOMAIN_CONTROLLER_INFO;
[nopush,nopull] NET_API_STATUS DsGetDcName(
[in,unique] string *server_name,
[in,ref] string *domain_name,
[in,unique] GUID *domain_guid,
[in,unique] string *site_name,
[in] uint32 flags,
[out,ref] DOMAIN_CONTROLLER_INFO **dc_info
);
2008-06-09 12:59:23 +04:00
/*******************************************/
/* NetUserAdd */
/*******************************************/
2008-04-09 14:35:09 +04:00
[public] typedef struct {
string usri0_name;
} USER_INFO_0;
[public] typedef struct {
string usri1_name;
string usri1_password;
uint32 usri1_password_age;
uint32 usri1_priv;
string usri1_home_dir;
string usri1_comment;
uint32 usri1_flags;
string usri1_script_path;
} USER_INFO_1;
2008-07-17 13:21:28 +04:00
[public] typedef struct {
string usri2_name;
string usri2_password;
uint32 usri2_password_age;
uint32 usri2_priv;
string usri2_home_dir;
string usri2_comment;
uint32 usri2_flags;
string usri2_script_path;
uint32 usri2_auth_flags;
string usri2_full_name;
string usri2_usr_comment;
string usri2_parms;
string usri2_workstations;
uint32 usri2_last_logon;
uint32 usri2_last_logoff;
uint32 usri2_acct_expires;
uint32 usri2_max_storage;
uint32 usri2_units_per_week;
uint8 *usri2_logon_hours;
uint32 usri2_bad_pw_count;
uint32 usri2_num_logons;
string usri2_logon_server;
uint32 usri2_country_code;
uint32 usri2_code_page;
} USER_INFO_2;
[public] typedef struct {
string usri3_name;
uint32 usri3_password_age;
uint32 usri3_priv;
string usri3_home_dir;
string usri3_comment;
uint32 usri3_flags;
string usri3_script_path;
uint32 usri3_auth_flags;
string usri3_full_name;
string usri3_usr_comment;
string usri3_parms;
string usri3_workstations;
uint32 usri3_last_logon;
uint32 usri3_last_logoff;
uint32 usri3_acct_expires;
uint32 usri3_max_storage;
uint32 usri3_units_per_week;
uint8 *usri3_logon_hours;
uint32 usri3_bad_pw_count;
uint32 usri3_num_logons;
string usri3_logon_server;
uint32 usri3_country_code;
uint32 usri3_code_page;
uint32 usri3_user_id;
uint32 usri3_primary_group_id;
string usri3_profile;
string usri3_home_dir_drive;
uint32 usri3_password_expired;
} USER_INFO_3;
[public] typedef struct {
string usri4_name;
string usri4_password;
uint32 usri4_password_age;
uint32 usri4_priv;
string usri4_home_dir;
string usri4_comment;
uint32 usri4_flags;
string usri4_script_path;
uint32 usri4_auth_flags;
string usri4_full_name;
string usri4_usr_comment;
string usri4_parms;
string usri4_workstations;
uint32 usri4_last_logon;
uint32 usri4_last_logoff;
uint32 usri4_acct_expires;
uint32 usri4_max_storage;
uint32 usri4_units_per_week;
uint8 *usri4_logon_hours;
uint32 usri4_bad_pw_count;
uint32 usri4_num_logons;
string usri4_logon_server;
uint32 usri4_country_code;
uint32 usri4_code_page;
dom_sid *usri4_user_sid;
uint32 usri4_primary_group_id;
string usri4_profile;
string usri4_home_dir_drive;
uint32 usri4_password_expired;
} USER_INFO_4;
[public] typedef struct {
string usri10_name;
string usri10_comment;
string usri10_usr_comment;
string usri10_full_name;
} USER_INFO_10;
[public] typedef struct {
string usri11_name;
string usri11_comment;
string usri11_usr_comment;
string usri11_full_name;
uint32 usri11_priv;
uint32 usri11_auth_flags;
uint32 usri11_password_age;
string usri11_home_dir;
string usri11_parms;
uint32 usri11_last_logon;
uint32 usri11_last_logoff;
uint32 usri11_bad_pw_count;
uint32 usri11_num_logons;
string usri11_logon_server;
uint32 usri11_country_code;
string usri11_workstations;
uint32 usri11_max_storage;
uint32 usri11_units_per_week;
uint8 *usri11_logon_hours;
uint32 usri11_code_page;
} USER_INFO_11;
[public] typedef struct {
string usri20_name;
string usri20_full_name;
string usri20_comment;
uint32 usri20_flags;
uint32 usri20_user_id;
} USER_INFO_20;
[public] typedef struct {
string usri23_name;
string usri23_full_name;
string usri23_comment;
uint32 usri23_flags;
domsid *usri23_user_sid;
} USER_INFO_23;
[public] typedef struct {
string usri1007_comment;
} USER_INFO_1007;
2008-07-18 21:40:13 +04:00
[public] typedef struct {
string usriX_name;
string usriX_password;
uint32 usriX_password_age;
uint32 usriX_priv;
string usriX_home_dir;
string usriX_comment;
uint32 usriX_flags;
string usriX_script_path;
uint32 usriX_auth_flags;
string usriX_full_name;
string usriX_usr_comment;
string usriX_parms;
string usriX_workstations;
uint32 usriX_last_logon;
uint32 usriX_last_logoff;
uint32 usriX_acct_expires;
uint32 usriX_max_storage;
uint32 usriX_units_per_week;
uint8 *usriX_logon_hours;
uint32 usriX_bad_pw_count;
uint32 usriX_num_logons;
string usriX_logon_server;
uint32 usriX_country_code;
uint32 usriX_code_page;
} USER_INFO_X;
2008-04-09 14:35:09 +04:00
[nopush,nopull] NET_API_STATUS NetUserAdd(
[in,unique] string *server_name,
[in] uint32 level,
[in,ref] uint8 *buffer,
[out,ref] uint32 *parm_error
);
2008-04-09 15:31:53 +04:00
2008-06-09 12:59:23 +04:00
/*******************************************/
/* NetUserDel */
/*******************************************/
2008-04-09 15:31:53 +04:00
[nopush,nopull] NET_API_STATUS NetUserDel(
[in,unique] string *server_name,
[in,ref] string *user_name
);
2008-04-09 15:41:54 +04:00
2008-06-09 12:59:23 +04:00
/*******************************************/
/* NetUserEnum */
/*******************************************/
2008-06-09 13:00:23 +04:00
const int FILTER_TEMP_DUPLICATE_ACCOUNT = 0x0001;
const int FILTER_NORMAL_ACCOUNT = 0x0002;
const int FILTER_INTERDOMAIN_TRUST_ACCOUNT = 0x0008;
const int FILTER_WORKSTATION_TRUST_ACCOUNT = 0x0010;
const int FILTER_SERVER_TRUST_ACCOUNT = 0x0020;
2008-04-09 15:41:54 +04:00
[nopush,nopull] NET_API_STATUS NetUserEnum(
[in,unique] string *server_name,
[in] uint32 level,
[in] uint32 filter,
[out,ref] uint8 **buffer,
[in] uint32 prefmaxlen,
[out,ref] uint32 *entries_read,
[out,ref] uint32 *total_entries,
[in,out,ref] uint32 *resume_handle
);
2008-04-13 20:59:42 +04:00
2008-06-25 02:29:06 +04:00
/*******************************************/
/* NetUserChangePassword */
/*******************************************/
[nopush,nopull] NET_API_STATUS NetUserChangePassword(
[in] string domain_name,
[in] string user_name,
[in] string old_password,
[in] string new_password
);
2008-07-16 12:45:11 +04:00
/*******************************************/
/* NetUserGetInfo */
/*******************************************/
[nopush,nopull] NET_API_STATUS NetUserGetInfo(
[in] string server_name,
[in] string user_name,
[in] uint32 level,
[out] uint8 **buffer
);
2008-07-17 02:59:13 +04:00
/*******************************************/
/* NetUserSetInfo */
/*******************************************/
[nopush,nopull] NET_API_STATUS NetUserSetInfo(
[in] string server_name,
[in] string user_name,
[in] uint32 level,
[in] uint8 *buffer,
[out] uint32 *parm_err
);
2008-06-09 12:59:23 +04:00
/*******************************************/
/* NetQueryDisplayInformation */
/*******************************************/
2008-04-13 20:59:42 +04:00
[public] typedef struct {
string usri1_name;
string usri1_comment;
uint32 usri1_flags;
string usri1_full_name;
uint32 usri1_user_id;
uint32 usri1_next_index;
} NET_DISPLAY_USER;
[public] typedef struct {
string usri2_name;
string usri2_comment;
uint32 usri2_flags;
uint32 usri2_user_id;
uint32 usri2_next_index;
} NET_DISPLAY_MACHINE;
[public] typedef struct {
string grpi3_name;
string grpi3_comment;
uint32 grpi3_group_id;
uint32 grpi3_attributes;
uint32 grpi3_next_index;
} NET_DISPLAY_GROUP;
[nopush,nopull] NET_API_STATUS NetQueryDisplayInformation(
[in,unique] string *server_name,
[in] uint32 level,
[in] uint32 idx,
[in] uint32 entries_requested,
[in] uint32 prefmaxlen,
[out,ref] uint32 *entries_read,
[out,ref,noprint] void **buffer
);
2008-05-27 14:05:31 +04:00
2008-06-09 12:59:23 +04:00
/*******************************************/
/* NetGroupAdd */
/*******************************************/
2008-05-27 14:05:31 +04:00
typedef struct {
string grpi0_name;
} GROUP_INFO_0;
typedef struct {
string grpi1_name;
string grpi1_comment;
} GROUP_INFO_1;
typedef struct {
string grpi2_name;
string grpi2_comment;
uint32 grpi2_group_id;
uint32 grpi2_attributes;
} GROUP_INFO_2;
typedef struct {
string grpi3_name;
string grpi3_comment;
2008-07-16 18:13:14 +04:00
domsid *grpi3_group_sid;
2008-05-27 14:05:31 +04:00
uint32 grpi3_attributes;
} GROUP_INFO_3;
2008-06-02 14:47:54 +04:00
typedef struct {
string grpi1002_comment;
} GROUP_INFO_1002;
typedef struct {
uint32 grpi1005_attributes;
} GROUP_INFO_1005;
2008-05-27 14:05:31 +04:00
[nopush,nopull] NET_API_STATUS NetGroupAdd(
[in] string server_name,
[in] uint32 level,
[in] uint8 *buf,
[out] uint32 *parm_err
);
2008-05-27 14:09:01 +04:00
2008-06-09 12:59:23 +04:00
/*******************************************/
/* NetGroupDel */
/*******************************************/
2008-05-27 14:09:01 +04:00
[nopush,nopull] NET_API_STATUS NetGroupDel(
[in] string server_name,
[in] string group_name
);
2008-06-02 14:47:54 +04:00
2008-06-09 12:59:23 +04:00
/*******************************************/
2008-07-01 22:09:46 +04:00
/* NetGroupEnum */
/*******************************************/
[nopush,nopull] NET_API_STATUS NetGroupEnum(
[in] string server_name,
[in] uint32 level,
[out,ref] uint8 **buffer,
[in] uint32 prefmaxlen,
[out,ref] uint32 *entries_read,
[out,ref] uint32 *total_entries,
[in,out,ref] uint32 *resume_handle
);
/*******************************************/
2008-06-09 12:59:23 +04:00
/* NetGroupSetInfo */
/*******************************************/
2008-06-02 14:47:54 +04:00
[nopush,nopull] NET_API_STATUS NetGroupSetInfo(
[in] string server_name,
[in] string group_name,
[in] uint32 level,
[in] uint8 *buf,
[out] uint32 *parm_err
);
2008-06-02 15:00:17 +04:00
2008-06-09 12:59:23 +04:00
/*******************************************/
/* NetGroupGetInfo */
/*******************************************/
2008-06-02 15:00:17 +04:00
[nopush,nopull] NET_API_STATUS NetGroupGetInfo(
[in] string server_name,
[in] string group_name,
[in] uint32 level,
[out] uint8 **buf
);
2008-06-02 15:41:35 +04:00
2008-06-09 12:59:23 +04:00
/*******************************************/
/* NetGroupAddUser */
/*******************************************/
2008-06-02 15:41:35 +04:00
[nopush,nopull] NET_API_STATUS NetGroupAddUser(
[in] string server_name,
[in] string group_name,
[in] string user_name
);
2008-06-09 12:59:23 +04:00
/*******************************************/
/* NetGroupDelUser */
/*******************************************/
2008-06-02 15:41:35 +04:00
[nopush,nopull] NET_API_STATUS NetGroupDelUser(
[in] string server_name,
[in] string group_name,
[in] string user_name
);
2008-06-02 19:31:38 +04:00
2008-06-09 12:59:23 +04:00
/*******************************************/
/* NetLocalGroupAdd */
/*******************************************/
2008-06-02 19:31:38 +04:00
typedef struct {
string lgrpi0_name;
} LOCALGROUP_INFO_0;
typedef struct {
string lgrpi1_name;
string lgrpi1_comment;
} LOCALGROUP_INFO_1;
typedef struct {
string lgrpi1002_comment;
} LOCALGROUP_INFO_1002;
[nopush,nopull] NET_API_STATUS NetLocalGroupAdd(
[in] string server_name,
[in] uint32 level,
[in] uint8 *buf,
[out,ref] uint32 *parm_err
);
2008-06-02 21:17:13 +04:00
2008-06-09 12:59:23 +04:00
/*******************************************/
/* NetLocalGroupDel */
/*******************************************/
2008-06-02 21:17:13 +04:00
[nopush,nopull] NET_API_STATUS NetLocalGroupDel(
[in] string server_name,
[in] string group_name
);
2008-06-02 22:19:18 +04:00
2008-06-09 12:59:23 +04:00
/*******************************************/
/* NetLocalGroupGetInfo */
/*******************************************/
2008-06-02 22:19:18 +04:00
[nopush,nopull] NET_API_STATUS NetLocalGroupGetInfo(
[in] string server_name,
[in] string group_name,
[in] uint32 level,
[out,ref] uint8 **buf
);
2008-06-03 00:25:07 +04:00
2008-06-09 12:59:23 +04:00
/*******************************************/
/* NetLocalGroupSetInfo */
/*******************************************/
2008-06-03 00:25:07 +04:00
[nopush,nopull] NET_API_STATUS NetLocalGroupSetInfo(
[in] string server_name,
[in] string group_name,
[in] uint32 level,
[in,ref] uint8 *buf,
[out,ref] uint32 *parm_err
);
2008-07-18 03:20:56 +04:00
/*******************************************/
/* NetLocalGroupEnum */
/*******************************************/
[nopush,nopull] NET_API_STATUS NetLocalGroupEnum(
[in] string server_name,
[in] uint32 level,
[out,ref] uint8 **buffer,
[in] uint32 prefmaxlen,
[out,ref] uint32 *entries_read,
[out,ref] uint32 *total_entries,
[in,out,ref] uint32 *resume_handle
);
2008-06-09 12:59:23 +04:00
/*******************************************/
/* NetRemoteTOD */
/*******************************************/
2008-06-06 14:50:02 +04:00
typedef struct {
uint32 tod_elapsedt;
uint32 tod_msecs;
uint32 tod_hours;
uint32 tod_mins;
uint32 tod_secs;
uint32 tod_hunds;
int32 tod_timezone;
uint32 tod_tinterval;
uint32 tod_day;
uint32 tod_month;
uint32 tod_year;
uint32 tod_weekday;
} TIME_OF_DAY_INFO;
[nopush,nopull] NET_API_STATUS NetRemoteTOD(
[in] string server_name,
[out,ref] uint8 **buf
);
2008-04-08 04:25:00 +04:00
}