/* wkssvc interface definitions */ [ uuid("6bffd098-a112-3610-9833-46c3f87e345a"), version(1.0), pointer_default(unique), pointer_default_top(unique), helpstring("Workstation Service"), depends(srvsvc), keepref ] interface wkssvc { declare [v1_enum] enum srvsvc_PlatformId; #define BOOL uint32 /******************/ /* Function: 0x00 */ typedef struct { srvsvc_PlatformId platform_id; [string,charset(UTF16)] uint16 *server_name; [string,charset(UTF16)] uint16 *domain_name; uint32 version_major; uint32 version_minor; } wkssvc_NetWkstaInfo100; typedef struct { srvsvc_PlatformId platform_id; [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 { srvsvc_PlatformId platform_id; [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; 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; typedef struct { uint32 max_threads; } wkssvc_NetWkstaInfo1033; 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; [case(1033)] wkssvc_NetWkstaInfo1033 *info1033; [default] ; } wkssvc_NetWkstaInfo; WERROR wkssvc_NetWkstaGetInfo( [in] [string,charset(UTF16)] uint16 *server_name, [in] uint32 level, [out,switch_is(level),ref] wkssvc_NetWkstaInfo *info ); /******************/ /* Function: 0x01 */ WERROR wkssvc_NetWkstaSetInfo( [in] [string,charset(UTF16)] uint16 *server_name, [in] uint32 level, [in,switch_is(level),ref] wkssvc_NetWkstaInfo *info, [in,out,ref] uint32 *parm_error ); /*****************************/ /* Function 0x02 */ typedef struct { [string,charset(UTF16)] uint16 *user; } USER_INFO_0; typedef struct { uint32 entries_read; [size_is(entries_read)] USER_INFO_0 *user0; } USER_INFO_0_CONTAINER; 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; typedef struct { uint32 entries_read; [size_is(entries_read)] USER_INFO_1 *user1; } USER_INFO_1_CONTAINER; typedef [switch_type(uint32)] union { [case(0)] USER_INFO_0_CONTAINER *user0; [case(1)] USER_INFO_1_CONTAINER *user1; } WKS_USER_ENUM_UNION; WERROR wkssvc_NetWkstaEnumUsers( [in] [string,charset(UTF16)] uint16 *server_name, [in] uint32 level, [in] [out] [ref] WKS_USER_ENUM_UNION *users, [in] uint32 prefmaxlen, [out] uint32 *entriesread, [out] uint32 *totalentries, [in] [out] [ref] uint32 *resumehandle ); /*****************************/ /* Function 0x03 */ WERROR WKSSVC_NETRWKSTAUSERGETINFO (); /*****************************/ /* Function 0x04 */ WERROR WKSSVC_NETRWKSTAUSERSETINFO (); /*****************************/ /* 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; [default] ; } wkssvc_NetWkstaTransportCtr; WERROR wkssvc_NetWkstaTransportEnum ( [in] [string,charset(UTF16)] uint16 *server_name, [in,out] uint32 level, [in,out,switch_is(level),ref] wkssvc_NetWkstaTransportCtr *ctr, [in] uint32 max_buffer, [out] uint32 totalentries, [in,out] uint32 *resume_handle ); /*****************************/ /* Function 0x06 */ WERROR WKSSVC_NETRWKSTATRANSPORTADD (); /*****************************/ /* Function 0x07 */ WERROR WKSSVC_NETRWKSTATRANSPORTDEL (); /*****************************/ /* Function 0x08 */ WERROR WKSSVC_NETRUSEADD (); /*****************************/ /* Function 0x09 */ WERROR WKSSVC_NETRUSEGETINFO (); /*****************************/ /* Function 0x0a */ WERROR WKSSVC_NETRUSEDEL (); /*****************************/ /* Function 0x0b */ WERROR WKSSVC_NETRUSEENUM (); /*****************************/ /* Function 0x0c */ WERROR WKSSVC_NETRMESSAGEBUFFERSEND (); /*****************************/ /* Function 0x0d */ WERROR WKSSVC_NETRWORKSTATIONSTATISTICSGET (); /*****************************/ /* Function 0x0e */ WERROR WKSSVC_NETRLOGONDOMAINNAMEADD (); /*****************************/ /* Function 0x0f */ WERROR WKSSVC_NETRLOGONDOMAINNAMEDEL (); /*****************************/ /* Function 0x10 */ WERROR WKSSVC_NETRJOINDOMAIN (); /*****************************/ /* Function 0x11 */ WERROR WKSSVC_NETRUNJOINDOMAIN (); /*****************************/ /* Function 0x12 */ WERROR WKSSVC_NETRRENAMEMACHINEINDOMAIN (); /*****************************/ /* Function 0x13 */ WERROR WKSSVC_NETRVALIDATENAME (); /*****************************/ /* Function 0x14 */ WERROR WKSSVC_NETRGETJOININFORMATION (); /*****************************/ /* Function 0x15 */ WERROR WKSSVC_NETRGETJOINABLEOUS (); typedef struct { uint8 data[524]; } wkssvc_PasswordBuffer; typedef [bitmap32bit] bitmap { /* 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, /* 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 } wkssvc_joinflags; /*****************************/ /* Function 0x16 */ WERROR wkssvc_NetrJoinDomain2 ( [in] [string,charset(UTF16)] uint16 *server_name, [in] [string,charset(UTF16),ref] uint16 *domain_name, [in] [string,charset(UTF16)] uint16 *account_name, [in] [string,charset(UTF16)] uint16 *admin_account, [in] wkssvc_PasswordBuffer *encrypted_password, [in] wkssvc_joinflags join_flags ); /*****************************/ /* 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] 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] wkssvc_renameflags RenameOptions ); /*****************************/ /* Function 0x19 */ WERROR WKSSVC_NETRVALIDATENAME2 (); /*****************************/ /* Function 0x1a */ WERROR WKSSVC_NETRGETJOINABLEOUS2 (); /*****************************/ /* 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] 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] uint32 Reserved ); /*****************************/ /* Function 0x1d */ WERROR WKSSVC_NETRSETPRIMARYCOMPUTERNAME (); /*****************************/ /* Function 0x1e */ WERROR WKSSVC_NETRENUMERATECOMPUTERNAMES (); }