/* libnetapi interface definition */ cpp_quote("#define LIBNETAPI_LOCAL_SERVER(x) (!x || is_myname_or_ipaddr(x))") cpp_quote("#ifndef MAXSUBAUTHS") cpp_quote("#define MAXSUBAUTHS 15 /* max sub authorities in a SID */") cpp_quote("#endif") [ pointer_default(unique) ] interface libnetapi { const int ERROR_MORE_DATA = 234L; [public] typedef [v1_enum] enum { NERR_Success=0 } NET_API_STATUS; [public] typedef struct { uint8 sid_rev_num; uint8 num_auths; uint8 id_auth[6]; uint32 sub_auths[MAXSUBAUTHS]; } domsid; /*******************************************/ /* NetJoinDomain */ /*******************************************/ [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 ); /*******************************************/ /* NetUnjoinDomain */ /*******************************************/ [nopush,nopull] NET_API_STATUS NetUnjoinDomain( [in,unique] string *server_name, [in,unique] string *account, [in,unique] string *password, [in] uint32 unjoin_flags ); /*******************************************/ /* NetGetJoinInformation */ /*******************************************/ [nopush,nopull] NET_API_STATUS NetGetJoinInformation( [in,unique] string *server_name, [out] string **name_buffer, [out] uint16 *name_type ); /*******************************************/ /* NetGetJoinableOUs */ /*******************************************/ [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 ); /*******************************************/ /* NetServerGetInfo */ /*******************************************/ [public] typedef struct { string sv1005_comment; } SERVER_INFO_1005; [nopush,nopull] NET_API_STATUS NetServerGetInfo( [in,unique] string *server_name, [in] uint32 level, [out] uint8 **buffer ); /*******************************************/ /* NetServerSetInfo */ /*******************************************/ [nopush,nopull] NET_API_STATUS NetServerSetInfo( [in,unique] string *server_name, [in] uint32 level, [in] uint8 *buffer, [out] uint32 *parm_error ); /*******************************************/ /* NetGetDCName */ /*******************************************/ [nopush,nopull] NET_API_STATUS NetGetDCName( [in,unique] string *server_name, [in,unique] string *domain_name, [out] uint8 **buffer ); /*******************************************/ /* NetGetAnyDCName */ /*******************************************/ [nopush,nopull] NET_API_STATUS NetGetAnyDCName( [in,unique] string *server_name, [in,unique] string *domain_name, [out] uint8 **buffer ); /*******************************************/ /* DsGetDcName */ /*******************************************/ [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 ); /*******************************************/ /* NetUserAdd */ /*******************************************/ [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; [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; [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; [nopush,nopull] NET_API_STATUS NetUserAdd( [in,unique] string *server_name, [in] uint32 level, [in,ref] uint8 *buffer, [out,ref] uint32 *parm_error ); /*******************************************/ /* NetUserDel */ /*******************************************/ [nopush,nopull] NET_API_STATUS NetUserDel( [in,unique] string *server_name, [in,ref] string *user_name ); /*******************************************/ /* NetUserEnum */ /*******************************************/ 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; [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 ); /*******************************************/ /* NetUserChangePassword */ /*******************************************/ [nopush,nopull] NET_API_STATUS NetUserChangePassword( [in] string domain_name, [in] string user_name, [in] string old_password, [in] string new_password ); /*******************************************/ /* NetUserGetInfo */ /*******************************************/ [nopush,nopull] NET_API_STATUS NetUserGetInfo( [in] string server_name, [in] string user_name, [in] uint32 level, [out] uint8 **buffer ); /*******************************************/ /* 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 ); /*******************************************/ /* NetQueryDisplayInformation */ /*******************************************/ [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 ); /*******************************************/ /* NetGroupAdd */ /*******************************************/ 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; domsid *grpi3_group_sid; uint32 grpi3_attributes; } GROUP_INFO_3; typedef struct { string grpi1002_comment; } GROUP_INFO_1002; typedef struct { uint32 grpi1005_attributes; } GROUP_INFO_1005; [nopush,nopull] NET_API_STATUS NetGroupAdd( [in] string server_name, [in] uint32 level, [in] uint8 *buf, [out] uint32 *parm_err ); /*******************************************/ /* NetGroupDel */ /*******************************************/ [nopush,nopull] NET_API_STATUS NetGroupDel( [in] string server_name, [in] string group_name ); /*******************************************/ /* 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 ); /*******************************************/ /* NetGroupSetInfo */ /*******************************************/ [nopush,nopull] NET_API_STATUS NetGroupSetInfo( [in] string server_name, [in] string group_name, [in] uint32 level, [in] uint8 *buf, [out] uint32 *parm_err ); /*******************************************/ /* NetGroupGetInfo */ /*******************************************/ [nopush,nopull] NET_API_STATUS NetGroupGetInfo( [in] string server_name, [in] string group_name, [in] uint32 level, [out] uint8 **buf ); /*******************************************/ /* NetGroupAddUser */ /*******************************************/ [nopush,nopull] NET_API_STATUS NetGroupAddUser( [in] string server_name, [in] string group_name, [in] string user_name ); /*******************************************/ /* NetGroupDelUser */ /*******************************************/ [nopush,nopull] NET_API_STATUS NetGroupDelUser( [in] string server_name, [in] string group_name, [in] string user_name ); /*******************************************/ /* NetLocalGroupAdd */ /*******************************************/ 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 ); /*******************************************/ /* NetLocalGroupDel */ /*******************************************/ [nopush,nopull] NET_API_STATUS NetLocalGroupDel( [in] string server_name, [in] string group_name ); /*******************************************/ /* NetLocalGroupGetInfo */ /*******************************************/ [nopush,nopull] NET_API_STATUS NetLocalGroupGetInfo( [in] string server_name, [in] string group_name, [in] uint32 level, [out,ref] uint8 **buf ); /*******************************************/ /* NetLocalGroupSetInfo */ /*******************************************/ [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 ); /*******************************************/ /* 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 ); /*******************************************/ /* NetRemoteTOD */ /*******************************************/ 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 ); }