2007-11-30 03:44:44 +03:00
#include "idl_types.h"
2006-09-18 23:02:06 +04:00
/*
wkssvc interface definitions
*/
2007-11-30 03:44:44 +03:00
import "srvsvc.idl", "lsa.idl";
2006-11-07 02:20:35 +03:00
2006-09-18 23:02:06 +04:00
[ uuid("6bffd098-a112-3610-9833-46c3f87e345a"),
version(1.0),
pointer_default(unique),
2007-11-30 03:44:44 +03:00
helpstring("Workstation Service"),
endpoint("ncacn_np:[\\pipe\\wkssvc]","ncacn_ip_tcp:","ncalrpc:")
2006-09-18 23:02:06 +04:00
] interface wkssvc
{
2008-01-13 03:22:23 +03:00
typedef [v1_enum] enum srvsvc_PlatformId srvsvc_PlatformId;
2006-09-18 23:02:06 +04:00
#define BOOL uint32
/******************/
/* Function: 0x00 */
typedef struct {
2007-11-30 03:44:44 +03:00
srvsvc_PlatformId platform_id;
2006-09-18 23:02:06 +04:00
[string,charset(UTF16)] uint16 *server_name;
[string,charset(UTF16)] uint16 *domain_name;
uint32 version_major;
uint32 version_minor;
} wkssvc_NetWkstaInfo100;
typedef struct {
2007-11-30 03:44:44 +03:00
srvsvc_PlatformId platform_id;
2006-09-18 23:02:06 +04:00
[string,charset(UTF16)] uint16 *server_name;
[string,charset(UTF16)] uint16 *domain_name;
uint32 version_major;
uint32 version_minor;
[string,charset(UTF16)] uint16 *lan_root;
} wkssvc_NetWkstaInfo101;
typedef struct {
2007-11-30 03:44:44 +03:00
srvsvc_PlatformId platform_id;
2006-09-18 23:02:06 +04:00
[string,charset(UTF16)] uint16 *server_name;
[string,charset(UTF16)] uint16 *domain_name;
uint32 version_major;
uint32 version_minor;
[string,charset(UTF16)] uint16 *lan_root;
uint32 logged_on_users;
} wkssvc_NetWkstaInfo102;
2007-11-30 03:44:44 +03:00
/* FIXME: 302, 402 */
2006-09-18 23:02:06 +04:00
typedef struct {
uint32 char_wait;
uint32 collection_time;
uint32 maximum_collection_count;
uint32 keep_connection;
uint32 max_commands;
uint32 session_timeout;
uint32 size_char_buf;
uint32 max_threads;
uint32 lock_quota;
uint32 lock_increment;
uint32 lock_maximum;
uint32 pipe_increment;
uint32 pipe_maximum;
uint32 cache_file_timeout;
uint32 dormant_file_limit;
uint32 read_ahead_throughput;
uint32 num_mailslot_buffers;
uint32 num_srv_announce_buffers;
uint32 max_illegal_dgram_events;
uint32 dgram_event_reset_freq;
BOOL log_election_packets;
BOOL use_opportunistic_locking;
BOOL use_unlock_behind;
BOOL use_close_behind;
BOOL buf_named_pipes;
BOOL use_lock_read_unlock;
BOOL utilize_nt_caching;
BOOL use_raw_read;
BOOL use_raw_write;
BOOL use_write_raw_data;
BOOL use_encryption;
BOOL buf_files_deny_write;
BOOL buf_read_only_files;
BOOL force_core_create_mode;
BOOL use_512_byte_max_transfer;
} wkssvc_NetWkstaInfo502;
typedef struct {
uint32 char_wait;
} wkssvc_NetWkstaInfo1010;
typedef struct {
uint32 collection_time;
} wkssvc_NetWkstaInfo1011;
typedef struct {
uint32 maximum_collection_count;
} wkssvc_NetWkstaInfo1012;
typedef struct {
uint32 keep_connection;
} wkssvc_NetWkstaInfo1013;
typedef struct {
uint32 session_timeout;
} wkssvc_NetWkstaInfo1018;
typedef struct {
uint32 size_char_buf;
} wkssvc_NetWkstaInfo1023;
typedef struct {
uint32 errorlog_sz;
} wkssvc_NetWkstaInfo1027;
2007-11-30 03:44:44 +03:00
/* downlevel */
typedef struct {
uint32 print_buf_time;
} wkssvc_NetWkstaInfo1028;
/* downlevel */
typedef struct {
uint32 wrk_heuristics;
} wkssvc_NetWkstaInfo1032;
2006-09-18 23:02:06 +04:00
typedef struct {
uint32 max_threads;
} wkssvc_NetWkstaInfo1033;
2007-11-30 03:44:44 +03:00
typedef struct {
uint32 lock_quota;
} wkssvc_NetWkstaInfo1041;
typedef struct {
uint32 lock_increment;
} wkssvc_NetWkstaInfo1042;
typedef struct {
uint32 lock_maximum;
} wkssvc_NetWkstaInfo1043;
typedef struct {
uint32 pipe_increment;
} wkssvc_NetWkstaInfo1044;
typedef struct {
uint32 pipe_maximum;
} wkssvc_NetWkstaInfo1045;
typedef struct {
uint32 dormant_file_limit;
} wkssvc_NetWkstaInfo1046;
typedef struct {
uint32 cache_file_timeout;
} wkssvc_NetWkstaInfo1047;
typedef struct {
uint32 use_opportunistic_locking;
} wkssvc_NetWkstaInfo1048;
typedef struct {
uint32 use_unlock_behind;
} wkssvc_NetWkstaInfo1049;
typedef struct {
uint32 use_close_behind;
} wkssvc_NetWkstaInfo1050;
typedef struct {
uint32 buf_named_pipes;
} wkssvc_NetWkstaInfo1051;
typedef struct {
uint32 use_lock_read_unlock;
} wkssvc_NetWkstaInfo1052;
typedef struct {
uint32 utilize_nt_caching;
} wkssvc_NetWkstaInfo1053;
typedef struct {
uint32 use_raw_read;
} wkssvc_NetWkstaInfo1054;
typedef struct {
uint32 use_raw_write;
} wkssvc_NetWkstaInfo1055;
typedef struct {
uint32 use_write_raw_data;
} wkssvc_NetWkstaInfo1056;
typedef struct {
uint32 use_encryption;
} wkssvc_NetWkstaInfo1057;
typedef struct {
uint32 buf_files_deny_write;
} wkssvc_NetWkstaInfo1058;
typedef struct {
uint32 buf_read_only_files;
} wkssvc_NetWkstaInfo1059;
typedef struct {
uint32 force_core_create_mode;
} wkssvc_NetWkstaInfo1060;
typedef struct {
uint32 use_512_byte_max_transfer;
} wkssvc_NetWkstaInfo1061;
typedef struct {
uint32 read_ahead_throughput;
} wkssvc_NetWkstaInfo1062;
2006-09-18 23:02:06 +04:00
typedef union {
[case(100)] wkssvc_NetWkstaInfo100 *info100;
[case(101)] wkssvc_NetWkstaInfo101 *info101;
[case(102)] wkssvc_NetWkstaInfo102 *info102;
[case(502)] wkssvc_NetWkstaInfo502 *info502;
[case(1010)] wkssvc_NetWkstaInfo1010 *info1010;
[case(1011)] wkssvc_NetWkstaInfo1011 *info1011;
[case(1012)] wkssvc_NetWkstaInfo1012 *info1012;
[case(1013)] wkssvc_NetWkstaInfo1013 *info1013;
[case(1018)] wkssvc_NetWkstaInfo1018 *info1018;
[case(1023)] wkssvc_NetWkstaInfo1023 *info1023;
[case(1027)] wkssvc_NetWkstaInfo1027 *info1027;
2007-11-30 03:44:44 +03:00
[case(1028)] wkssvc_NetWkstaInfo1028 *info1028;
[case(1032)] wkssvc_NetWkstaInfo1032 *info1032;
2006-09-18 23:02:06 +04:00
[case(1033)] wkssvc_NetWkstaInfo1033 *info1033;
2007-11-30 03:44:44 +03:00
[case(1041)] wkssvc_NetWkstaInfo1041 *info1041;
[case(1042)] wkssvc_NetWkstaInfo1042 *info1042;
[case(1043)] wkssvc_NetWkstaInfo1043 *info1043;
[case(1044)] wkssvc_NetWkstaInfo1044 *info1044;
[case(1045)] wkssvc_NetWkstaInfo1045 *info1045;
[case(1046)] wkssvc_NetWkstaInfo1046 *info1046;
[case(1047)] wkssvc_NetWkstaInfo1047 *info1047;
[case(1048)] wkssvc_NetWkstaInfo1048 *info1048;
[case(1049)] wkssvc_NetWkstaInfo1049 *info1049;
[case(1050)] wkssvc_NetWkstaInfo1050 *info1050;
[case(1051)] wkssvc_NetWkstaInfo1051 *info1051;
[case(1052)] wkssvc_NetWkstaInfo1052 *info1052;
[case(1053)] wkssvc_NetWkstaInfo1053 *info1053;
[case(1054)] wkssvc_NetWkstaInfo1054 *info1054;
[case(1055)] wkssvc_NetWkstaInfo1055 *info1055;
[case(1056)] wkssvc_NetWkstaInfo1056 *info1056;
[case(1057)] wkssvc_NetWkstaInfo1057 *info1057;
[case(1058)] wkssvc_NetWkstaInfo1058 *info1058;
[case(1059)] wkssvc_NetWkstaInfo1059 *info1059;
[case(1060)] wkssvc_NetWkstaInfo1060 *info1060;
[case(1061)] wkssvc_NetWkstaInfo1061 *info1061;
[case(1062)] wkssvc_NetWkstaInfo1062 *info1062;
2006-09-18 23:02:06 +04:00
[default] ;
} wkssvc_NetWkstaInfo;
WERROR wkssvc_NetWkstaGetInfo(
2008-02-04 14:58:07 +03:00
[in,unique] [string,charset(UTF16)] uint16 *server_name,
2006-09-18 23:02:06 +04:00
[in] uint32 level,
[out,switch_is(level),ref] wkssvc_NetWkstaInfo *info
);
/******************/
/* Function: 0x01 */
WERROR wkssvc_NetWkstaSetInfo(
2008-02-04 14:58:07 +03:00
[in,unique] [string,charset(UTF16)] uint16 *server_name,
2006-09-18 23:02:06 +04:00
[in] uint32 level,
[in,switch_is(level),ref] wkssvc_NetWkstaInfo *info,
[in,out,ref] uint32 *parm_error
);
/*****************************/
/* Function 0x02 */
typedef struct {
2007-11-30 03:44:44 +03:00
[string,charset(UTF16)] uint16 *user_name;
} wkssvc_NetrWkstaUserInfo0;
2006-09-18 23:02:06 +04:00
typedef struct {
uint32 entries_read;
2007-11-30 03:44:44 +03:00
[size_is(entries_read)] wkssvc_NetrWkstaUserInfo0 *user0;
} wkssvc_NetWkstaEnumUsersCtr0;
2006-09-18 23:02:06 +04:00
typedef struct {
[string,charset(UTF16)] uint16 *user_name;
[string,charset(UTF16)] uint16 *logon_domain;
[string,charset(UTF16)] uint16 *other_domains;
[string,charset(UTF16)] uint16 *logon_server;
2007-11-30 03:44:44 +03:00
} wkssvc_NetrWkstaUserInfo1;
2006-09-18 23:02:06 +04:00
typedef struct {
uint32 entries_read;
2007-11-30 03:44:44 +03:00
[size_is(entries_read)] wkssvc_NetrWkstaUserInfo1 *user1;
} wkssvc_NetWkstaEnumUsersCtr1;
2006-09-18 23:02:06 +04:00
typedef [switch_type(uint32)] union {
2007-11-30 03:44:44 +03:00
[case(0)] wkssvc_NetWkstaEnumUsersCtr0 *user0;
[case(1)] wkssvc_NetWkstaEnumUsersCtr1 *user1;
} wkssvc_NetWkstaEnumUsersCtr;
typedef struct {
uint32 level;
[switch_is(level)] wkssvc_NetWkstaEnumUsersCtr ctr;
} wkssvc_NetWkstaEnumUsersInfo;
2006-09-18 23:02:06 +04:00
WERROR wkssvc_NetWkstaEnumUsers(
2008-02-04 14:58:07 +03:00
[in,unique] [string,charset(UTF16)] uint16 *server_name,
2007-11-30 03:44:44 +03:00
[in,out,ref] wkssvc_NetWkstaEnumUsersInfo *info,
2006-09-18 23:02:06 +04:00
[in] uint32 prefmaxlen,
2007-11-30 03:44:44 +03:00
[out,ref] uint32 *entries_read,
2008-02-04 14:58:07 +03:00
[in,out,unique] uint32 *resume_handle
2006-09-18 23:02:06 +04:00
);
/*****************************/
/* Function 0x03 */
2007-11-30 03:44:44 +03:00
typedef struct {
[string,charset(UTF16)] uint16 *other_domains;
} wkssvc_NetrWkstaUserInfo1101;
typedef [switch_type(uint32)] union {
[case(0)] wkssvc_NetrWkstaUserInfo0 *info0;
[case(1)] wkssvc_NetrWkstaUserInfo1 *info1;
[case(1101)] wkssvc_NetrWkstaUserInfo1101 *info1101;
} wkssvc_NetrWkstaUserInfo;
WERROR wkssvc_NetrWkstaUserGetInfo(
2008-02-04 14:58:07 +03:00
[in,unique] [string,charset(UTF16)] uint16 *unknown,
2007-11-30 03:44:44 +03:00
[in] uint32 level,
[out,ref] [switch_is(level)] wkssvc_NetrWkstaUserInfo *info
);
2006-09-18 23:02:06 +04:00
/*****************************/
/* Function 0x04 */
2007-11-30 03:44:44 +03:00
WERROR wkssvc_NetrWkstaUserSetInfo(
2008-02-04 14:58:07 +03:00
[in,unique] [string,charset(UTF16)] uint16 *unknown,
2007-11-30 03:44:44 +03:00
[in] uint32 level,
[in,ref] [switch_is(level)] wkssvc_NetrWkstaUserInfo *info,
2008-02-04 14:58:07 +03:00
[in,out,unique] uint32 *parm_err
2007-11-30 03:44:44 +03:00
);
2006-09-18 23:02:06 +04:00
/*****************************/
/* Function 0x05 */
typedef struct {
uint32 quality_of_service;
uint32 vc_count;
[string,charset(UTF16)] uint16 *name;
[string,charset(UTF16)] uint16 *address;
uint32 wan_link;
} wkssvc_NetWkstaTransportInfo0;
typedef struct {
uint32 count;
[size_is(count)] wkssvc_NetWkstaTransportInfo0 *array;
} wkssvc_NetWkstaTransportCtr0;
typedef union {
[case(0)] wkssvc_NetWkstaTransportCtr0 *ctr0;
} wkssvc_NetWkstaTransportCtr;
2007-11-30 03:44:44 +03:00
typedef struct {
uint32 level;
[switch_is(level)] wkssvc_NetWkstaTransportCtr ctr;
} wkssvc_NetWkstaTransportInfo;
2006-09-18 23:02:06 +04:00
WERROR wkssvc_NetWkstaTransportEnum (
2008-02-04 14:58:07 +03:00
[in,unique] [string,charset(UTF16)] uint16 *server_name,
2007-11-30 03:44:44 +03:00
[in,out,ref] wkssvc_NetWkstaTransportInfo *info,
2006-09-18 23:02:06 +04:00
[in] uint32 max_buffer,
2007-11-30 03:44:44 +03:00
[out,ref] uint32 *total_entries,
2008-02-04 14:58:07 +03:00
[in,out,unique] uint32 *resume_handle
2006-09-18 23:02:06 +04:00
);
/*****************************/
/* Function 0x06 */
2007-11-30 03:44:44 +03:00
/* only supported on NT */
WERROR wkssvc_NetrWkstaTransportAdd(
2008-02-04 14:58:07 +03:00
[in,unique] [string,charset(UTF16)] uint16 *server_name,
2007-11-30 03:44:44 +03:00
[in] uint32 level, /* must be 0 */
[in,ref] wkssvc_NetWkstaTransportInfo0 *info0,
2008-02-04 14:58:07 +03:00
[in,out,unique] uint32 *parm_err
2007-11-30 03:44:44 +03:00
);
2006-09-18 23:02:06 +04:00
/*****************************/
/* Function 0x07 */
2007-11-30 03:44:44 +03:00
/* only supported on NT */
WERROR wkssvc_NetrWkstaTransportDel(
2008-02-04 14:58:07 +03:00
[in,unique] [string,charset(UTF16)] uint16 *server_name,
[in,unique] [string,charset(UTF16)] uint16 *transport_name,
2007-11-30 03:44:44 +03:00
[in] uint32 unknown3
);
2006-09-18 23:02:06 +04:00
/*****************************/
/* Function 0x08 */
2007-11-30 03:44:44 +03:00
typedef struct {
[string,charset(UTF16)] uint16 *unknown1;
[string,charset(UTF16)] uint16 *unknown2;
} wkssvc_NetrUseInfo3;
typedef struct {
[string,charset(UTF16)] uint16 *local;
[string,charset(UTF16)] uint16 *remote;
[string,charset(UTF16)] uint16 *password;
uint32 status;
uint32 asg_type;
uint32 ref_count;
uint32 use_count;
[string,charset(UTF16)] uint16 *user_name;
[string,charset(UTF16)] uint16 *domain_name;
} wkssvc_NetrUseInfo2;
typedef struct {
[string,charset(UTF16)] uint16 *local;
[string,charset(UTF16)] uint16 *remote;
[string,charset(UTF16)] uint16 *password;
uint32 status;
uint32 asg_type;
uint32 ref_count;
uint32 use_count;
} wkssvc_NetrUseInfo1;
typedef struct {
[string,charset(UTF16)] uint16 *local;
[string,charset(UTF16)] uint16 *remote;
} wkssvc_NetrUseInfo0;
typedef [switch_type(uint32)] union {
[case(0)] wkssvc_NetrUseInfo0 *info0;
[case(1)] wkssvc_NetrUseInfo1 *info1;
[case(2)] wkssvc_NetrUseInfo2 *info2;
[case(3)] wkssvc_NetrUseInfo3 *info3;
} wkssvc_NetrUseGetInfoCtr;
WERROR wkssvc_NetrUseAdd(
2008-02-04 14:58:07 +03:00
[in,unique] [string,charset(UTF16)] uint16 *server_name,
2007-11-30 03:44:44 +03:00
[in] uint32 level,
[in,ref] [switch_is(level)] wkssvc_NetrUseGetInfoCtr *ctr,
2008-02-04 14:58:07 +03:00
[in,out,unique] uint32 *parm_err
2007-11-30 03:44:44 +03:00
);
2006-09-18 23:02:06 +04:00
/*****************************/
/* Function 0x09 */
2007-11-30 03:44:44 +03:00
WERROR wkssvc_NetrUseGetInfo(
2008-02-04 14:58:07 +03:00
[in,unique] [string,charset(UTF16)] uint16 *server_name,
2007-11-30 03:44:44 +03:00
[in,ref] [string,charset(UTF16)] uint16 *use_name,
[in] uint32 level,
[out,ref] [switch_is(level)] wkssvc_NetrUseGetInfoCtr *ctr
);
2006-09-18 23:02:06 +04:00
/*****************************/
/* Function 0x0a */
2007-11-30 03:44:44 +03:00
WERROR wkssvc_NetrUseDel(
2008-02-04 14:58:07 +03:00
[in,unique] [string,charset(UTF16)] uint16 *server_name,
2007-11-30 03:44:44 +03:00
[in,ref] [string,charset(UTF16)] uint16 *use_name,
[in] uint32 force_cond
);
2006-09-18 23:02:06 +04:00
/*****************************/
/* Function 0x0b */
2007-11-30 03:44:44 +03:00
typedef struct {
uint32 count;
[size_is(count)] wkssvc_NetrUseInfo2 *array;
} wkssvc_NetrUseEnumCtr2;
typedef struct {
uint32 count;
[size_is(count)] wkssvc_NetrUseInfo1 *array;
} wkssvc_NetrUseEnumCtr1;
typedef struct {
uint32 count;
[size_is(count)] wkssvc_NetrUseInfo0 *array;
} wkssvc_NetrUseEnumCtr0;
typedef [switch_type(uint32)] union {
[case(0)] wkssvc_NetrUseEnumCtr0 *ctr0;
[case(1)] wkssvc_NetrUseEnumCtr1 *ctr1;
[case(2)] wkssvc_NetrUseEnumCtr2 *ctr2;
} wkssvc_NetrUseEnumCtr;
typedef struct {
uint32 level;
[switch_is(level)] wkssvc_NetrUseEnumCtr ctr;
} wkssvc_NetrUseEnumInfo;
WERROR wkssvc_NetrUseEnum(
2008-02-04 14:58:07 +03:00
[in,unique] [string,charset(UTF16)] uint16 *server_name,
2007-11-30 03:44:44 +03:00
[in,out,ref] wkssvc_NetrUseEnumInfo *info,
[in] uint32 prefmaxlen,
[out,ref] uint32 *entries_read,
2008-02-04 14:58:07 +03:00
[in,out,unique] uint32 *resume_handle
2007-11-30 03:44:44 +03:00
);
2006-09-18 23:02:06 +04:00
/*****************************/
/* Function 0x0c */
2007-11-30 03:44:44 +03:00
WERROR wkssvc_NetrMessageBufferSend(
2008-02-04 14:58:07 +03:00
[in,unique] [string,charset(UTF16)] uint16 *server_name,
2007-11-30 03:44:44 +03:00
[in,ref] [string,charset(UTF16)] uint16 *message_name,
2008-02-04 14:58:07 +03:00
[in,unique] [string,charset(UTF16)] uint16 *message_sender_name,
2007-11-30 03:44:44 +03:00
[in,ref] [size_is(message_size)] uint8 *message_buffer,
[in] uint32 message_size
);
2006-09-18 23:02:06 +04:00
/*****************************/
/* Function 0x0d */
2007-11-30 03:44:44 +03:00
typedef struct {
hyper unknown1;
hyper unknown2;
hyper unknown3;
hyper unknown4;
hyper unknown5;
hyper unknown6;
hyper unknown7;
hyper unknown8;
hyper unknown9;
hyper unknown10;
hyper unknown11;
hyper unknown12;
hyper unknown13;
uint32 unknown14;
uint32 unknown15;
uint32 unknown16;
uint32 unknown17;
uint32 unknown18;
uint32 unknown19;
uint32 unknown20;
uint32 unknown21;
uint32 unknown22;
uint32 unknown23;
uint32 unknown24;
uint32 unknown25;
uint32 unknown26;
uint32 unknown27;
uint32 unknown28;
uint32 unknown29;
uint32 unknown30;
uint32 unknown31;
uint32 unknown32;
uint32 unknown33;
uint32 unknown34;
uint32 unknown35;
uint32 unknown36;
uint32 unknown37;
uint32 unknown38;
uint32 unknown39;
uint32 unknown40;
} wkssvc_NetrWorkstationStatistics;
WERROR wkssvc_NetrWorkstationStatisticsGet(
2008-02-04 14:58:07 +03:00
[in,unique] [string,charset(UTF16)] uint16 *server_name,
[in,unique] [string,charset(UTF16)] uint16 *unknown2,
2007-11-30 03:44:44 +03:00
[in] uint32 unknown3,
[in] uint32 unknown4,
[out,ref] wkssvc_NetrWorkstationStatistics **info
);
2006-09-18 23:02:06 +04:00
/*****************************/
/* Function 0x0e */
2007-11-30 03:44:44 +03:00
WERROR wkssvc_NetrLogonDomainNameAdd(
[in,ref] [string,charset(UTF16)] uint16 *domain_name
);
2006-09-18 23:02:06 +04:00
/*****************************/
/* Function 0x0f */
2007-11-30 03:44:44 +03:00
WERROR wkssvc_NetrLogonDomainNameDel(
[in,ref] [string,charset(UTF16)] uint16 *domain_name
);
2006-09-18 23:02:06 +04:00
/*****************************/
/* Function 0x10 */
2007-11-30 03:44:44 +03:00
WERROR wkssvc_NetrJoinDomain(
2008-02-04 14:58:07 +03:00
[in,unique] [string,charset(UTF16)] uint16 *server_name,
2007-11-30 03:44:44 +03:00
[in,ref] [string,charset(UTF16)] uint16 *domain_name,
2008-02-04 14:58:07 +03:00
[in,unique] [string,charset(UTF16)] uint16 *account_ou,
[in,unique] [string,charset(UTF16)] uint16 *Account,
[in,unique] [string,charset(UTF16)] uint16 *password,
2007-11-30 03:44:44 +03:00
[in] wkssvc_joinflags join_flags
);
2006-09-18 23:02:06 +04:00
/*****************************/
/* Function 0x11 */
2007-11-30 03:44:44 +03:00
WERROR wkssvc_NetrUnjoinDomain(
2008-02-04 14:58:07 +03:00
[in,unique] [string,charset(UTF16)] uint16 *server_name,
[in,unique] [string,charset(UTF16)] uint16 *Account,
[in,unique] [string,charset(UTF16)] uint16 *password,
2007-11-30 03:44:44 +03:00
[in] wkssvc_joinflags unjoin_flags
);
2006-09-18 23:02:06 +04:00
/*****************************/
/* Function 0x12 */
2007-11-30 03:44:44 +03:00
typedef [bitmap32bit] bitmap {
/* TRUE: create the account in the domain */
WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE = 0x00000002
} wkssvc_renameflags;
WERROR wkssvc_NetrRenameMachineInDomain(
2008-02-04 14:58:07 +03:00
[in,unique] [string,charset(UTF16)] uint16 *server_name,
[in,unique] [string,charset(UTF16)] uint16 *NewMachineName,
[in,unique] [string,charset(UTF16)] uint16 *Account,
[in,unique] [string,charset(UTF16)] uint16 *password,
2007-11-30 03:44:44 +03:00
[in] wkssvc_renameflags RenameOptions
);
2006-09-18 23:02:06 +04:00
/*****************************/
/* Function 0x13 */
2007-11-30 03:44:44 +03:00
typedef enum {
NetSetupUnknown = 0,
NetSetupMachine = 1,
NetSetupWorkgroup = 2,
NetSetupDomain = 3,
NetSetupNonExistentDomain = 4,
NetSetupDnsMachine = 5
} wkssvc_NetValidateNameType;
WERROR wkssvc_NetrValidateName(
2008-02-04 14:58:07 +03:00
[in,unique] [string,charset(UTF16)] uint16 *server_name,
2007-11-30 03:44:44 +03:00
[in,ref] [string,charset(UTF16)] uint16 *name,
2008-02-04 14:58:07 +03:00
[in,unique] [string,charset(UTF16)] uint16 *Account,
[in,unique] [string,charset(UTF16)] uint16 *Password,
2007-11-30 03:44:44 +03:00
[in] wkssvc_NetValidateNameType name_type
);
2006-09-18 23:02:06 +04:00
/*****************************/
/* Function 0x14 */
2007-11-30 03:44:44 +03:00
typedef enum {
2008-09-02 16:32:16 +04:00
NET_SETUP_UNKNOWN_STATUS = 0,
NET_SETUP_UNJOINED = 1,
NET_SETUP_WORKGROUP_NAME = 2,
NET_SETUP_DOMAIN_NAME = 3
2007-11-30 03:44:44 +03:00
} wkssvc_NetJoinStatus;
WERROR wkssvc_NetrGetJoinInformation(
2008-02-04 14:58:07 +03:00
[in,unique] [string,charset(UTF16)] uint16 *server_name,
2007-11-30 03:44:44 +03:00
[in,out,ref] [string,charset(UTF16)] uint16 **name_buffer,
[out,ref] wkssvc_NetJoinStatus *name_type
);
2006-09-18 23:02:06 +04:00
/*****************************/
/* Function 0x15 */
2007-11-30 03:44:44 +03:00
WERROR wkssvc_NetrGetJoinableOus(
2008-02-04 14:58:07 +03:00
[in,unique] [string,charset(UTF16)] uint16 *server_name,
2007-11-30 03:44:44 +03:00
[in,ref] [string,charset(UTF16)] uint16 *domain_name,
2008-02-04 14:58:07 +03:00
[in,unique] [string,charset(UTF16)] uint16 *Account,
[in,unique] [string,charset(UTF16)] uint16 *unknown,
2007-11-30 03:44:44 +03:00
[in,out,ref] uint32 *num_ous,
2008-02-03 04:54:23 +03:00
/*
* this is a [ref] pointer to a [unique] pointer to an
* array of [unique] pointers to a string array
*/
[out,ref] [size_is(,*num_ous)] [string,charset(UTF16)] uint16 ***ous
2007-11-30 03:44:44 +03:00
);
2006-09-18 23:02:06 +04:00
2007-11-30 03:44:44 +03:00
typedef [flag(NDR_PAHEX)] struct {
2006-09-18 23:02:06 +04:00
uint8 data[524];
} wkssvc_PasswordBuffer;
typedef [bitmap32bit] bitmap {
2007-11-30 03:44:44 +03:00
WKSSVC_JOIN_FLAGS_JOIN_WITH_NEW_NAME = 0x00000400,
WKSSVC_JOIN_FLAGS_JOIN_DC_ACCOUNT = 0x00000200,
2006-09-18 23:02:06 +04:00
/* TRUE: defer setting the SPN and dNSHostName until a rename operation */
WKSSVC_JOIN_FLAGS_DEFER_SPN = 0x00000100,
/* TRUE: set the machine password to the provided one after the join completes */
WKSSVC_JOIN_FLAGS_MACHINE_PWD_PASSED = 0x00000080,
/* TRUE: perform an unsecured join */
WKSSVC_JOIN_FLAGS_JOIN_UNSECURE = 0x00000040,
/* TRUE: allow the join to complete even if the account already exists */
WKSSVC_JOIN_FLAGS_DOMAIN_JOIN_IF_JOINED = 0x00000020,
2007-11-30 03:44:44 +03:00
2006-09-18 23:02:06 +04:00
/* TRUE: this join is part of a w9x upgrade */
WKSSVC_JOIN_FLAGS_WIN9X_UPGRADE = 0x00000010,
/* TRUE: delete the account when the domain is left */
WKSSVC_JOIN_FLAGS_ACCOUNT_DELETE = 0x00000004,
/* TRUE: create the account in the domain */
WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE = 0x00000002,
/* TRUE: join domain FALSE: join workgroup */
WKSSVC_JOIN_FLAGS_JOIN_TYPE = 0x00000001
2007-11-30 03:44:44 +03:00
2006-09-18 23:02:06 +04:00
} wkssvc_joinflags;
/*****************************/
/* Function 0x16 */
WERROR wkssvc_NetrJoinDomain2 (
2008-02-04 14:58:07 +03:00
[in,unique] [string,charset(UTF16)] uint16 *server_name,
2007-11-30 03:44:44 +03:00
[in,ref] [string,charset(UTF16)] uint16 *domain_name,
2008-02-04 14:58:07 +03:00
[in,unique] [string,charset(UTF16)] uint16 *account_ou,
[in,unique] [string,charset(UTF16)] uint16 *admin_account,
[in,unique] wkssvc_PasswordBuffer *encrypted_password,
2006-09-18 23:02:06 +04:00
[in] wkssvc_joinflags join_flags
);
/*****************************/
/* Function 0x17 */
WERROR wkssvc_NetrUnjoinDomain2 (
2008-02-04 14:58:07 +03:00
[in,unique] [string,charset(UTF16)] uint16 *server_name,
[in,unique] [string,charset(UTF16)] uint16 *account,
[in,unique] wkssvc_PasswordBuffer *encrypted_password,
2006-09-18 23:02:06 +04:00
[in] wkssvc_joinflags unjoin_flags
);
/*****************************/
/* Function 0x18 */
WERROR wkssvc_NetrRenameMachineInDomain2(
2008-02-04 14:58:07 +03:00
[in,unique] [string,charset(UTF16)] uint16 *server_name,
[in,unique] [string,charset(UTF16)] uint16 *NewMachineName,
[in,unique] [string,charset(UTF16)] uint16 *Account,
[in,unique] wkssvc_PasswordBuffer *EncryptedPassword,
2006-09-18 23:02:06 +04:00
[in] wkssvc_renameflags RenameOptions
);
/*****************************/
/* Function 0x19 */
2007-11-30 03:44:44 +03:00
WERROR wkssvc_NetrValidateName2(
2008-02-04 14:58:07 +03:00
[in,unique] [string,charset(UTF16)] uint16 *server_name,
2007-11-30 03:44:44 +03:00
[in,ref] [string,charset(UTF16)] uint16 *name,
2008-02-04 14:58:07 +03:00
[in,unique] [string,charset(UTF16)] uint16 *Account,
[in,unique] wkssvc_PasswordBuffer *EncryptedPassword,
2007-11-30 03:44:44 +03:00
[in] wkssvc_NetValidateNameType name_type
);
2006-09-18 23:02:06 +04:00
/*****************************/
/* Function 0x1a */
2007-11-30 03:44:44 +03:00
WERROR wkssvc_NetrGetJoinableOus2(
2008-02-04 14:58:07 +03:00
[in,unique] [string,charset(UTF16)] uint16 *server_name,
2007-11-30 03:44:44 +03:00
[in,ref] [string,charset(UTF16)] uint16 *domain_name,
2008-02-04 14:58:07 +03:00
[in,unique] [string,charset(UTF16)] uint16 *Account,
[in,unique] wkssvc_PasswordBuffer *EncryptedPassword,
2007-11-30 03:44:44 +03:00
[in,out,ref] uint32 *num_ous,
2008-02-03 04:54:23 +03:00
/*
* this is a [ref] pointer to a [unique] pointer to an
* array of [unique] pointers to a string array
*/
[out,ref] [size_is(,*num_ous)] [string,charset(UTF16)] uint16 ***ous
2007-11-30 03:44:44 +03:00
);
2006-09-18 23:02:06 +04:00
/*****************************/
/* Function 0x1b */
WERROR wkssvc_NetrAddAlternateComputerName(
2008-02-04 14:58:07 +03:00
[in,unique] [string,charset(UTF16)] uint16 *server_name,
[in,unique] [string,charset(UTF16)] uint16 *NewAlternateMachineName,
[in,unique] [string,charset(UTF16)] uint16 *Account,
[in,unique] wkssvc_PasswordBuffer *EncryptedPassword,
2006-09-18 23:02:06 +04:00
[in] uint32 Reserved
);
/*****************************/
/* Function 0x1c */
WERROR wkssvc_NetrRemoveAlternateComputerName(
2008-02-04 14:58:07 +03:00
[in,unique] [string,charset(UTF16)] uint16 *server_name,
[in,unique] [string,charset(UTF16)] uint16 *AlternateMachineNameToRemove,
[in,unique] [string,charset(UTF16)] uint16 *Account,
[in,unique] wkssvc_PasswordBuffer *EncryptedPassword,
2006-09-18 23:02:06 +04:00
[in] uint32 Reserved
);
/*****************************/
/* Function 0x1d */
2007-11-30 03:44:44 +03:00
WERROR wkssvc_NetrSetPrimaryComputername(
2008-02-04 14:58:07 +03:00
[in,unique] [string,charset(UTF16)] uint16 *server_name,
[in,unique] [string,charset(UTF16)] uint16 *primary_name,
[in,unique] [string,charset(UTF16)] uint16 *Account,
[in,unique] wkssvc_PasswordBuffer *EncryptedPassword,
2007-11-30 03:44:44 +03:00
[in] uint32 Reserved
);
2006-09-18 23:02:06 +04:00
/*****************************/
/* Function 0x1e */
2007-11-30 03:44:44 +03:00
typedef enum {
NetPrimaryComputerName = 0,
NetAlternateComputerNames = 1,
NetAllComputerNames = 2,
NetComputerNameTypeMax = 3
} wkssvc_ComputerNameType;
typedef struct {
uint32 count;
[size_is(count)] lsa_String *computer_name;
} wkssvc_ComputerNamesCtr;
WERROR wkssvc_NetrEnumerateComputerNames(
2008-02-04 14:58:07 +03:00
[in,unique] [string,charset(UTF16)] uint16 *server_name,
2007-11-30 03:44:44 +03:00
[in] wkssvc_ComputerNameType name_type,
[in] uint32 Reserved,
[out,ref] wkssvc_ComputerNamesCtr **ctr
);
2006-09-18 23:02:06 +04:00
}