aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/pidl
diff options
context:
space:
mode:
authorRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2007-11-28 06:21:28 +0000
committerRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2007-11-28 06:21:28 +0000
commitc79cf40b3bb4583fe309edbc3a2a61778f3247be (patch)
tree74d2391c708ba3ee9197548f5a6859b644a36264 /epan/dissectors/pidl
parent9d83eb39fc98f58bb04b4dea1c16046967896c56 (diff)
update to most recent wkssvc.idl from the samba4 repository
svn path=/trunk/; revision=23641
Diffstat (limited to 'epan/dissectors/pidl')
-rw-r--r--epan/dissectors/pidl/wkssvc.cnf43
-rw-r--r--epan/dissectors/pidl/wkssvc.idl538
2 files changed, 512 insertions, 69 deletions
diff --git a/epan/dissectors/pidl/wkssvc.cnf b/epan/dissectors/pidl/wkssvc.cnf
index 479c48974f..3b94423f67 100644
--- a/epan/dissectors/pidl/wkssvc.cnf
+++ b/epan/dissectors/pidl/wkssvc.cnf
@@ -32,6 +32,9 @@ PARAM_VALUE wkssvc_dissect_element_NetWkstaInfo102_domain_name_ 5
PARAM_VALUE wkssvc_dissect_element_NetWkstaTransportEnum_server_name_ 1|PIDL_SET_COL_INFO
+TYPE lsa_String "offset=cnf_dissect_lsa_String(tvb, offset, pinfo, tree, drep, @PARAM@, @HF@);" FT_STRING BASE_NONE 0 NULL 4
+TYPE hyper "offset=cnf_dissect_hyper(tvb, offset, pinfo, tree, drep, @PARAM@, @HF@);" FT_UINT64 BASE_DEC 0 NULL 8
+
CODE START
/* Bug in pidl. Can not handle these dependencies properly yet */
static int
@@ -42,4 +45,44 @@ wkssvc_dissect_struct_srvsvc_PlatformId(tvbuff_t *tvb, int offset, packet_info *
return offset;
}
+static int
+cnf_dissect_lsa_String(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, guint32 param, int hfindex)
+{
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ int old_offset;
+ header_field_info *hf_info;
+
+ ALIGN_TO_4_BYTES;
+
+ old_offset = offset;
+ hf_info=proto_registrar_get_nth(hfindex);
+
+ if (parent_tree) {
+ item = proto_tree_add_text(parent_tree, tvb, offset, 0, "%s: ", hf_info->name);
+ tree = proto_item_add_subtree(item, ett_wkssvc_lsa_String);
+ }
+
+ offset = wkssvc_dissect_element_lsa_String_name_len(tvb, offset, pinfo, tree, drep);
+ offset = wkssvc_dissect_element_lsa_String_name_size(tvb, offset, pinfo, tree, drep);
+
+ offset = dissect_ndr_pointer_cb(
+ tvb, offset, pinfo, tree, drep,
+ dissect_ndr_wchar_cvstring, NDR_POINTER_UNIQUE,
+ hf_info->name, hfindex, cb_wstr_postprocess,
+ GINT_TO_POINTER(param));
+
+ proto_item_set_len(item, offset-old_offset);
+
+ return offset;
+}
+
+static int
+cnf_dissect_hyper(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep, guint32 param _U_, int hfindex)
+{
+ offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, drep, hfindex, NULL);
+
+ return offset;
+}
+
CODE END
diff --git a/epan/dissectors/pidl/wkssvc.idl b/epan/dissectors/pidl/wkssvc.idl
index 3ee88bcac1..05e4c4ba0e 100644
--- a/epan/dissectors/pidl/wkssvc.idl
+++ b/epan/dissectors/pidl/wkssvc.idl
@@ -1,20 +1,29 @@
+#include "idl_types.h"
+
/*
wkssvc interface definitions
*/
-import "srvsvc.idl";
+import "srvsvc.idl", "lsa.idl";
[ uuid("6bffd098-a112-3610-9833-46c3f87e345a"),
version(1.0),
pointer_default(unique),
pointer_default_top(unique),
- helpstring("Workstation Service")
+ helpstring("Workstation Service"),
+ endpoint("ncacn_np:[\\pipe\\wkssvc]","ncacn_ip_tcp:","ncalrpc:")
] interface wkssvc
{
declare [v1_enum] enum srvsvc_PlatformId;
#define BOOL uint32
+ typedef [public,noejs] struct {
+ [value(strlen_m_term(name)*2)] uint16 name_len;
+ [value(strlen_m_term(name)*2)] uint16 name_size;
+ [string,charset(UTF16)] uint16 *name;
+ } lsa_String;
+
/******************/
/* Function: 0x00 */
@@ -45,6 +54,8 @@ import "srvsvc.idl";
uint32 logged_on_users;
} wkssvc_NetWkstaInfo102;
+ /* FIXME: 302, 402 */
+
typedef struct {
uint32 char_wait;
uint32 collection_time;
@@ -111,10 +122,108 @@ import "srvsvc.idl";
uint32 errorlog_sz;
} wkssvc_NetWkstaInfo1027;
+ /* downlevel */
+ typedef struct {
+ uint32 print_buf_time;
+ } wkssvc_NetWkstaInfo1028;
+
+ /* downlevel */
+ typedef struct {
+ uint32 wrk_heuristics;
+ } wkssvc_NetWkstaInfo1032;
+
typedef struct {
uint32 max_threads;
} wkssvc_NetWkstaInfo1033;
+ 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;
+
typedef union {
[case(100)] wkssvc_NetWkstaInfo100 *info100;
[case(101)] wkssvc_NetWkstaInfo101 *info101;
@@ -127,7 +236,31 @@ import "srvsvc.idl";
[case(1018)] wkssvc_NetWkstaInfo1018 *info1018;
[case(1023)] wkssvc_NetWkstaInfo1023 *info1023;
[case(1027)] wkssvc_NetWkstaInfo1027 *info1027;
+ [case(1028)] wkssvc_NetWkstaInfo1028 *info1028;
+ [case(1032)] wkssvc_NetWkstaInfo1032 *info1032;
[case(1033)] wkssvc_NetWkstaInfo1033 *info1033;
+ [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;
[default] ;
} wkssvc_NetWkstaInfo;
@@ -151,49 +284,70 @@ import "srvsvc.idl";
/*****************************/
/* Function 0x02 */
typedef struct {
- [string,charset(UTF16)] uint16 *user;
- } USER_INFO_0;
+ [string,charset(UTF16)] uint16 *user_name;
+ } wkssvc_NetrWkstaUserInfo0;
typedef struct {
uint32 entries_read;
- [size_is(entries_read)] USER_INFO_0 *user0;
- } USER_INFO_0_CONTAINER;
+ [size_is(entries_read)] wkssvc_NetrWkstaUserInfo0 *user0;
+ } wkssvc_NetWkstaEnumUsersCtr0;
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;
- } USER_INFO_1;
+ } wkssvc_NetrWkstaUserInfo1;
typedef struct {
uint32 entries_read;
- [size_is(entries_read)] USER_INFO_1 *user1;
- } USER_INFO_1_CONTAINER;
+ [size_is(entries_read)] wkssvc_NetrWkstaUserInfo1 *user1;
+ } wkssvc_NetWkstaEnumUsersCtr1;
typedef [switch_type(uint32)] union {
- [case(0)] USER_INFO_0_CONTAINER *user0;
- [case(1)] USER_INFO_1_CONTAINER *user1;
- } WKS_USER_ENUM_UNION;
+ [case(0)] wkssvc_NetWkstaEnumUsersCtr0 *user0;
+ [case(1)] wkssvc_NetWkstaEnumUsersCtr1 *user1;
+ } wkssvc_NetWkstaEnumUsersCtr;
+
+ typedef struct {
+ uint32 level;
+ [switch_is(level)] wkssvc_NetWkstaEnumUsersCtr ctr;
+ } wkssvc_NetWkstaEnumUsersInfo;
WERROR wkssvc_NetWkstaEnumUsers(
[in] [string,charset(UTF16)] uint16 *server_name,
- [in] uint32 level,
- [in] [out] [ref] WKS_USER_ENUM_UNION *users,
+ [in,out,ref] wkssvc_NetWkstaEnumUsersInfo *info,
[in] uint32 prefmaxlen,
- [out] uint32 *entriesread,
- [out] uint32 *totalentries,
- [in] [out] [ref] uint32 *resumehandle
+ [out,ref] uint32 *entries_read,
+ [in,out] uint32 *resume_handle
);
/*****************************/
/* Function 0x03 */
- WERROR WKSSVC_NETRWKSTAUSERGETINFO ();
+ 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(
+ [in] [string,charset(UTF16)] uint16 *unknown,
+ [in] uint32 level,
+ [out,ref] [switch_is(level)] wkssvc_NetrWkstaUserInfo *info
+ );
/*****************************/
/* Function 0x04 */
- WERROR WKSSVC_NETRWKSTAUSERSETINFO ();
-
+ WERROR wkssvc_NetrWkstaUserSetInfo(
+ [in] [string,charset(UTF16)] uint16 *unknown,
+ [in] uint32 level,
+ [in,ref] [switch_is(level)] wkssvc_NetrWkstaUserInfo *info,
+ [in,out] uint32 *parm_err
+ );
/*****************************/
/* Function 0x05 */
@@ -213,88 +367,303 @@ import "srvsvc.idl";
typedef union {
[case(0)] wkssvc_NetWkstaTransportCtr0 *ctr0;
- [default] ;
} wkssvc_NetWkstaTransportCtr;
+ typedef struct {
+ uint32 level;
+ [switch_is(level)] wkssvc_NetWkstaTransportCtr ctr;
+ } wkssvc_NetWkstaTransportInfo;
+
WERROR wkssvc_NetWkstaTransportEnum (
[in] [string,charset(UTF16)] uint16 *server_name,
- [in,out] uint32 level,
- [in,out,switch_is(level),ref] wkssvc_NetWkstaTransportCtr *ctr,
+ [in,out,ref] wkssvc_NetWkstaTransportInfo *info,
[in] uint32 max_buffer,
- [out] uint32 totalentries,
+ [out,ref] uint32 *total_entries,
[in,out] uint32 *resume_handle
);
-
/*****************************/
/* Function 0x06 */
- WERROR WKSSVC_NETRWKSTATRANSPORTADD ();
+ /* only supported on NT */
+ WERROR wkssvc_NetrWkstaTransportAdd(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in] uint32 level, /* must be 0 */
+ [in,ref] wkssvc_NetWkstaTransportInfo0 *info0,
+ [in,out] uint32 *parm_err
+ );
/*****************************/
/* Function 0x07 */
- WERROR WKSSVC_NETRWKSTATRANSPORTDEL ();
+ /* only supported on NT */
+ WERROR wkssvc_NetrWkstaTransportDel(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in] [string,charset(UTF16)] uint16 *transport_name,
+ [in] uint32 unknown3
+ );
/*****************************/
/* Function 0x08 */
- WERROR WKSSVC_NETRUSEADD ();
+ 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(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in] uint32 level,
+ [in,ref] [switch_is(level)] wkssvc_NetrUseGetInfoCtr *ctr,
+ [in,out] uint32 *parm_err
+ );
/*****************************/
/* Function 0x09 */
- WERROR WKSSVC_NETRUSEGETINFO ();
+ WERROR wkssvc_NetrUseGetInfo(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in,ref] [string,charset(UTF16)] uint16 *use_name,
+ [in] uint32 level,
+ [out,ref] [switch_is(level)] wkssvc_NetrUseGetInfoCtr *ctr
+ );
/*****************************/
/* Function 0x0a */
- WERROR WKSSVC_NETRUSEDEL ();
+ WERROR wkssvc_NetrUseDel(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in,ref] [string,charset(UTF16)] uint16 *use_name,
+ [in] uint32 force_cond
+ );
/*****************************/
/* Function 0x0b */
- WERROR WKSSVC_NETRUSEENUM ();
+ 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(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in,out,ref] wkssvc_NetrUseEnumInfo *info,
+ [in] uint32 prefmaxlen,
+ [out,ref] uint32 *entries_read,
+ [in,out] uint32 *resume_handle
+ );
/*****************************/
/* Function 0x0c */
- WERROR WKSSVC_NETRMESSAGEBUFFERSEND ();
+ WERROR wkssvc_NetrMessageBufferSend(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in,ref] [string,charset(UTF16)] uint16 *message_name,
+ [in] [string,charset(UTF16)] uint16 *message_sender_name,
+ [in,ref] [size_is(message_size)] uint8 *message_buffer,
+ [in] uint32 message_size
+ );
/*****************************/
/* Function 0x0d */
- WERROR WKSSVC_NETRWORKSTATIONSTATISTICSGET ();
+ 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(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in] [string,charset(UTF16)] uint16 *unknown2,
+ [in] uint32 unknown3,
+ [in] uint32 unknown4,
+ [out,ref] wkssvc_NetrWorkstationStatistics **info
+ );
/*****************************/
/* Function 0x0e */
- WERROR WKSSVC_NETRLOGONDOMAINNAMEADD ();
+ WERROR wkssvc_NetrLogonDomainNameAdd(
+ [in,ref] [string,charset(UTF16)] uint16 *domain_name
+ );
/*****************************/
/* Function 0x0f */
- WERROR WKSSVC_NETRLOGONDOMAINNAMEDEL ();
+ WERROR wkssvc_NetrLogonDomainNameDel(
+ [in,ref] [string,charset(UTF16)] uint16 *domain_name
+ );
/*****************************/
/* Function 0x10 */
- WERROR WKSSVC_NETRJOINDOMAIN ();
+ WERROR wkssvc_NetrJoinDomain(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in,ref] [string,charset(UTF16)] uint16 *domain_name,
+ [in] [string,charset(UTF16)] uint16 *account_ou,
+ [in] [string,charset(UTF16)] uint16 *Account,
+ [in] [string,charset(UTF16)] uint16 *unknown,
+ [in] wkssvc_joinflags join_flags
+ );
/*****************************/
/* Function 0x11 */
- WERROR WKSSVC_NETRUNJOINDOMAIN ();
+ WERROR wkssvc_NetrUnjoinDomain(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in] [string,charset(UTF16)] uint16 *Account,
+ [in] [string,charset(UTF16)] uint16 *password,
+ [in] wkssvc_joinflags unjoin_flags
+ );
/*****************************/
/* Function 0x12 */
- WERROR WKSSVC_NETRRENAMEMACHINEINDOMAIN ();
+ typedef [bitmap32bit] bitmap {
+ /* TRUE: create the account in the domain */
+ WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE = 0x00000002
+ } wkssvc_renameflags;
+
+ WERROR wkssvc_NetrRenameMachineInDomain(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in] [string,charset(UTF16)] uint16 *NewMachineName,
+ [in] [string,charset(UTF16)] uint16 *Account,
+ [in] [string,charset(UTF16)] uint16 *password,
+ [in] wkssvc_renameflags RenameOptions
+ );
/*****************************/
/* Function 0x13 */
- WERROR WKSSVC_NETRVALIDATENAME ();
+ typedef enum {
+ NetSetupUnknown = 0,
+ NetSetupMachine = 1,
+ NetSetupWorkgroup = 2,
+ NetSetupDomain = 3,
+ NetSetupNonExistentDomain = 4,
+ NetSetupDnsMachine = 5
+ } wkssvc_NetValidateNameType;
+
+ WERROR wkssvc_NetrValidateName(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in,ref] [string,charset(UTF16)] uint16 *name,
+ [in] [string,charset(UTF16)] uint16 *Account,
+ [in] [string,charset(UTF16)] uint16 *Password,
+ [in] wkssvc_NetValidateNameType name_type
+ );
/*****************************/
/* Function 0x14 */
- WERROR WKSSVC_NETRGETJOININFORMATION ();
+ typedef enum {
+ NetSetupUnknownStatus = 0,
+ NetSetupUnjoined = 1,
+ NetSetupWorkgroupName = 2,
+ NetSetupDomainName = 3
+ } wkssvc_NetJoinStatus;
+
+ WERROR wkssvc_NetrGetJoinInformation(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in,out,ref] [string,charset(UTF16)] uint16 **name_buffer,
+ [out,ref] wkssvc_NetJoinStatus *name_type
+ );
/*****************************/
/* Function 0x15 */
- WERROR WKSSVC_NETRGETJOINABLEOUS ();
+ WERROR wkssvc_NetrGetJoinableOus(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in,ref] [string,charset(UTF16)] uint16 *domain_name,
+ [in] [string,charset(UTF16)] uint16 *Account,
+ [in] [string,charset(UTF16)] uint16 *unknown,
+ [in,out,ref] uint32 *num_ous,
+ [out,ref] [size_is(*num_ous)] [string,charset(UTF16)] uint16 ***ous
+ );
- typedef struct {
+ typedef [flag(NDR_PAHEX)] struct {
uint8 data[524];
} wkssvc_PasswordBuffer;
typedef [bitmap32bit] bitmap {
+ WKSSVC_JOIN_FLAGS_JOIN_WITH_NEW_NAME = 0x00000400,
+ WKSSVC_JOIN_FLAGS_JOIN_DC_ACCOUNT = 0x00000200,
/* TRUE: defer setting the SPN and dNSHostName until a rename operation */
WKSSVC_JOIN_FLAGS_DEFER_SPN = 0x00000100,
@@ -306,7 +675,7 @@ import "srvsvc.idl";
/* TRUE: allow the join to complete even if the account already exists */
WKSSVC_JOIN_FLAGS_DOMAIN_JOIN_IF_JOINED = 0x00000020,
-
+
/* TRUE: this join is part of a w9x upgrade */
WKSSVC_JOIN_FLAGS_WIN9X_UPGRADE = 0x00000010,
@@ -318,14 +687,14 @@ import "srvsvc.idl";
/* TRUE: join domain FALSE: join workgroup */
WKSSVC_JOIN_FLAGS_JOIN_TYPE = 0x00000001
-
+
} wkssvc_joinflags;
/*****************************/
/* Function 0x16 */
WERROR wkssvc_NetrJoinDomain2 (
[in] [string,charset(UTF16)] uint16 *server_name,
- [in] [string,charset(UTF16),ref] uint16 *domain_name,
+ [in,ref] [string,charset(UTF16)] uint16 *domain_name,
[in] [string,charset(UTF16)] uint16 *account_name,
[in] [string,charset(UTF16)] uint16 *admin_account,
[in] wkssvc_PasswordBuffer *encrypted_password,
@@ -335,60 +704,91 @@ import "srvsvc.idl";
/*****************************/
/* Function 0x17 */
WERROR wkssvc_NetrUnjoinDomain2 (
- [in] [unique] [string,charset(UTF16)] uint16 *server_name,
- [in] [unique] [string,charset(UTF16)] uint16 *account,
- [in] [unique] wkssvc_PasswordBuffer *encrypted_password,
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in] [string,charset(UTF16)] uint16 *account,
+ [in] wkssvc_PasswordBuffer *encrypted_password,
[in] wkssvc_joinflags unjoin_flags
);
- typedef [bitmap32bit] bitmap {
- /* TRUE: create the account in the domain */
- WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE = 0x00000002
- } wkssvc_renameflags;
-
/*****************************/
/* Function 0x18 */
WERROR wkssvc_NetrRenameMachineInDomain2(
- [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,
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in] [string,charset(UTF16)] uint16 *NewMachineName,
+ [in] [string,charset(UTF16)] uint16 *Account,
+ [in] wkssvc_PasswordBuffer *EncryptedPassword,
[in] wkssvc_renameflags RenameOptions
);
/*****************************/
/* Function 0x19 */
- WERROR WKSSVC_NETRVALIDATENAME2 ();
+ WERROR wkssvc_NetrValidateName2(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in,ref] [string,charset(UTF16)] uint16 *name,
+ [in] [string,charset(UTF16)] uint16 *Account,
+ [in] wkssvc_PasswordBuffer *EncryptedPassword,
+ [in] wkssvc_NetValidateNameType name_type
+ );
/*****************************/
/* Function 0x1a */
- WERROR WKSSVC_NETRGETJOINABLEOUS2 ();
+ WERROR wkssvc_NetrGetJoinableOus2(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in,ref] [string,charset(UTF16)] uint16 *domain_name,
+ [in] [string,charset(UTF16)] uint16 *Account,
+ [in] wkssvc_PasswordBuffer *EncryptedPassword,
+ [in,out,ref] uint32 *num_ous,
+ [out,ref] [size_is(*num_ous)] [string,charset(UTF16)] uint16 ***ous
+ );
/*****************************/
/* Function 0x1b */
WERROR wkssvc_NetrAddAlternateComputerName(
- [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,
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in] [string,charset(UTF16)] uint16 *NewAlternateMachineName,
+ [in] [string,charset(UTF16)] uint16 *Account,
+ [in] wkssvc_PasswordBuffer *EncryptedPassword,
[in] uint32 Reserved
);
/*****************************/
/* Function 0x1c */
WERROR wkssvc_NetrRemoveAlternateComputerName(
- [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,
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in] [string,charset(UTF16)] uint16 *AlternateMachineNameToRemove,
+ [in] [string,charset(UTF16)] uint16 *Account,
+ [in] wkssvc_PasswordBuffer *EncryptedPassword,
[in] uint32 Reserved
);
/*****************************/
/* Function 0x1d */
- WERROR WKSSVC_NETRSETPRIMARYCOMPUTERNAME ();
+ WERROR wkssvc_NetrSetPrimaryComputername(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in] [string,charset(UTF16)] uint16 *primary_name,
+ [in] [string,charset(UTF16)] uint16 *Account,
+ [in] wkssvc_PasswordBuffer *EncryptedPassword,
+ [in] uint32 Reserved
+ );
/*****************************/
/* Function 0x1e */
- WERROR WKSSVC_NETRENUMERATECOMPUTERNAMES ();
+ 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(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in] wkssvc_ComputerNameType name_type,
+ [in] uint32 Reserved,
+ [out,ref] wkssvc_ComputerNamesCtr **ctr
+ );
}