#include "idl_types.h" /* srvsvc interface definitions */ [ uuid(4b324fc8-1670-01d3-1278-5a47bf6ee188), version(3.0), pointer_default(unique) ] interface srvsvc { /******************/ /* Function: 0x00 */ NTSTATUS srvsvc_NETRCHARDEVENUM( ); /******************/ /* Function: 0x01 */ NTSTATUS srvsvc_NETRCHARDEVGETINFO( ); /******************/ /* Function: 0x02 */ NTSTATUS srvsvc_NETRCHARDEVCONTROL( ); /******************/ /* Function: 0x03 */ NTSTATUS srvsvc_NETRCHARDEVQENUM( ); /******************/ /* Function: 0x04 */ NTSTATUS srvsvc_NETRCHARDEVQGETINFO( ); /******************/ /* Function: 0x05 */ NTSTATUS srvsvc_NETRCHARDEVQSETINFO( ); /******************/ /* Function: 0x06 */ NTSTATUS srvsvc_NETRCHARDEVQPURGE( ); /******************/ /* Function: 0x07 */ NTSTATUS srvsvc_NETRCHARDEVQPURGESELF( ); /******************/ /* Function: 0x08 */ typedef struct { uint32 conn_id; } srvsvc_NetConn0; typedef struct { uint32 count; [size_is(count)] srvsvc_NetConn0 *array; } srvsvc_NetConnCtr0; typedef struct { uint32 conn_id; uint32 conn_type; uint32 num_open; uint32 num_users; uint32 conn_time; unistr *user; unistr *client; } srvsvc_NetConn1; typedef struct { uint32 count; [size_is(count)] srvsvc_NetConn1 *array; } srvsvc_NetConnCtr1; typedef union { [case(0)] srvsvc_NetConnCtr0 *ctr0; [case(1)] srvsvc_NetConnCtr1 *ctr1; [default] ; } srvsvc_NetConnCtr; WERROR srvsvc_NetConnEnum( [in] unistr *server_unc, [in] unistr *path, [in,out] uint32 level, [in,out,switch_is(level)] srvsvc_NetConnCtr ctr, [in] uint32 preferred_len, [out] uint32 total, [in,out] uint32 *resume_handle ); /******************/ /* Function: 0x09 */ typedef struct { uint32 fid; } srvsvc_NetFile2; typedef struct { uint32 count; [size_is(count)] srvsvc_NetFile2 *array; } srvsvc_NetFileCtr2; typedef struct { uint32 fid; uint32 permissions; uint32 num_locks; unistr *path; unistr *user; } srvsvc_NetFile3; typedef struct { uint32 count; [size_is(count)] srvsvc_NetFile3 *array; } srvsvc_NetFileCtr3; typedef union { [case(2)] srvsvc_NetFileCtr2 *ctr2; [case(3)] srvsvc_NetFileCtr3 *ctr3; [default] ; } srvsvc_NetFileCtr; WERROR srvsvc_NetFileEnum( [in] unistr *server_unc, [in] unistr *path, [in] unistr *user, [in,out] uint32 level, [in,out,switch_is(level)] srvsvc_NetFileCtr ctr, [in] uint32 preferred_len, [out] uint32 total, [in,out] uint32 *resume_handle ); /******************/ /* Function: 0x0a */ NTSTATUS srvsvc_NETRFILEGETINFO( ); /******************/ /* Function: 0x0b */ NTSTATUS srvsvc_NET_FILE_CLOSE( ); /******************/ /* Function: 0x0c */ typedef struct { unistr *client; } srvsvc_NetSess0; typedef struct { uint32 count; [size_is(count)] srvsvc_NetSess0 *array; } srvsvc_NetSessCtr0; typedef struct { unistr *client; unistr *user; uint32 num_open; uint32 time; uint32 idle_time; uint32 user_flags; } srvsvc_NetSess1; typedef struct { uint32 count; [size_is(count)] srvsvc_NetSess1 *array; } srvsvc_NetSessCtr1; typedef struct { unistr *client; unistr *user; uint32 num_open; uint32 time; uint32 idle_time; uint32 user_flags; unistr *client_type; } srvsvc_NetSess2; typedef struct { uint32 count; [size_is(count)] srvsvc_NetSess2 *array; } srvsvc_NetSessCtr2; typedef struct { unistr *client; unistr *user; uint32 time; uint32 idle_time; } srvsvc_NetSess10; typedef struct { uint32 count; [size_is(count)] srvsvc_NetSess10 *array; } srvsvc_NetSessCtr10; typedef struct { unistr *client; unistr *user; uint32 num_open; uint32 time; uint32 idle_time; uint32 user_flags; unistr *client_type; unistr *transport; } srvsvc_NetSess502; typedef struct { uint32 count; [size_is(count)] srvsvc_NetSess502 *array; } srvsvc_NetSessCtr502; typedef union { [case(0)] srvsvc_NetSessCtr0 *ctr0; [case(1)] srvsvc_NetSessCtr1 *ctr1; [case(2)] srvsvc_NetSessCtr2 *ctr2; [case(10)] srvsvc_NetSessCtr10 *ctr10; [case(502)] srvsvc_NetSessCtr502 *ctr502; [default] ; } srvsvc_NetSessCtr; WERROR srvsvc_NetSessEnum( [in] unistr *server_unc, [in] unistr *client, [in] unistr *user, [in,out] uint32 level, [in,out,switch_is(level)] srvsvc_NetSessCtr ctr, [in] uint32 preferred_len, [out] uint32 total, [in,out] uint32 *resume_handle ); /******************/ /* Function: 0x0d */ NTSTATUS srvsvc_NETRSESSIONDEL( ); /******************/ /* Function: 0x0e */ NTSTATUS srvsvc_NET_SHARE_ADD( ); /******************/ /* Function: 0x0f */ typedef struct { unistr *name; } srvsvc_NetShare0; typedef struct { uint32 count; [size_is(count)] srvsvc_NetShare0 *array; } srvsvc_NetShareCtr0; typedef struct { unistr *name; uint32 type; unistr *comment; } srvsvc_NetShare1; typedef struct { uint32 count; [size_is(count)] srvsvc_NetShare1 *array; } srvsvc_NetShareCtr1; typedef struct { unistr *name; uint32 type; unistr *comment; uint32 permissions; uint32 max_users; uint32 current_users; unistr *path; unistr *password; } srvsvc_NetShare2; typedef struct { uint32 count; [size_is(count)] srvsvc_NetShare2 *array; } srvsvc_NetShareCtr2; typedef struct { unistr *name; uint32 type; unistr *comment; uint32 csc_policy; } srvsvc_NetShare501; typedef struct { uint32 count; [size_is(count)] srvsvc_NetShare501 *array; } srvsvc_NetShareCtr501; typedef struct { unistr *name; uint32 type; unistr *comment; uint32 permissions; uint32 max_users; uint32 current_users; unistr *path; unistr *password; uint32 unknown; [subcontext(4)] security_descriptor *sd; } srvsvc_NetShare502; typedef struct { uint32 count; [size_is(count)] srvsvc_NetShare502 *array; } srvsvc_NetShareCtr502; typedef struct { unistr *comment; } srvsvc_NetShare1004; typedef union { [case(0)] srvsvc_NetShareCtr0 *ctr0; [case(1)] srvsvc_NetShareCtr1 *ctr1; [case(2)] srvsvc_NetShareCtr2 *ctr2; [case(501)] srvsvc_NetShareCtr501 *ctr501; [case(502)] srvsvc_NetShareCtr502 *ctr502; [default] ; } srvsvc_NetShareCtr; WERROR srvsvc_NetShareEnumAll ( [in] unistr *server_unc, [in,out] uint32 level, [in,out,switch_is(level)] srvsvc_NetShareCtr ctr, [in] uint32 max_buffer, [out] uint32 totalentries, [in,out] uint32 *resume_handle ); /******************/ /* Function: 0x10 */ NTSTATUS srvsvc_NET_SHARE_GET_INFO( ); /******************/ /* Function: 0x11 */ NTSTATUS srvsvc_NET_SHARE_SET_INFO( ); /******************/ /* Function: 0x12 */ NTSTATUS srvsvc_NET_SHARE_DEL( ); /******************/ /* Function: 0x13 */ NTSTATUS srvsvc_NET_SHARE_DEL_STICKY( ); /******************/ /* Function: 0x14 */ NTSTATUS srvsvc_NETRSHARECHECK( ); /******************/ /* Function: 0x15 */ NTSTATUS srvsvc_NET_SRV_GET_INFO( ); /******************/ /* Function: 0x16 */ NTSTATUS srvsvc_NET_SRV_SET_INFO( ); /******************/ /* Function: 0x17 */ typedef struct { uint32 unknown; lstring disk; uint16 unknown2; } srvsvc_NetDisk0; typedef struct { uint32 unknown; uint32 count; [size_is(count)] srvsvc_NetDisk0 array[]; } srvsvc_NetDiskCtr0; typedef union { [case(0)] srvsvc_NetDiskCtr0 *ctr0; } srvsvc_NetDiskCtr; WERROR srvsvc_NetDiskEnum( [in] unistr *server_unc, [in] uint32 level, [out] uint32 num_entries, [in,switch_is(level)] srvsvc_NetDiskCtr ctr, [out] srvsvc_NetDiskCtr0 *disks, [in] uint32 unknown, [out] uint32 max_entries, [in,out] uint32 *resume_handle ); /******************/ /* Function: 0x18 */ NTSTATUS srvsvc_NETRSERVERSTATISTICSGET( ); /******************/ /* Function: 0x19 */ NTSTATUS srvsvc_NETRSERVERTRANSPORTADD( ); /******************/ /* Function: 0x1a */ typedef struct { uint32 count; uint8 addr[count]; } srvsvc_TransportAddress; typedef struct { uint32 vcs; unistr *name; srvsvc_TransportAddress *addr; uint32 addr_len; unistr *net_addr; } srvsvc_NetTransport0; typedef struct { uint32 count; [size_is(count)] srvsvc_NetTransport0 *array; } srvsvc_NetTransportCtr0; typedef struct { uint32 vcs; unistr *name; srvsvc_TransportAddress *addr; uint32 addr_len; unistr *net_addr; unistr *domain; } srvsvc_NetTransport1; typedef struct { uint32 count; [size_is(count)] srvsvc_NetTransport1 *array; } srvsvc_NetTransportCtr1; typedef struct { uint32 dummy; } srvsvc_NetTransport2; typedef struct { uint32 count; [size_is(count)] srvsvc_NetTransport2 *array; } srvsvc_NetTransportCtr2; typedef struct { uint32 dummy; } srvsvc_NetTransport3; typedef struct { uint32 count; [size_is(count)] srvsvc_NetTransport3 *array; } srvsvc_NetTransportCtr3; typedef union { [case(0)] srvsvc_NetTransportCtr0 *ctr0; [case(1)] srvsvc_NetTransportCtr1 *ctr1; [case(2)] srvsvc_NetTransportCtr2 *ctr2; [case(3)] srvsvc_NetTransportCtr3 *ctr3; [default]; } srvsvc_NetTransportCtr; WERROR srvsvc_NetTransportEnum( [in] unistr *server_unc, [in,out] uint32 level, [in,out,switch_is(level)] srvsvc_NetTransportCtr ctr, [in] uint32 preferred_len, [out] uint32 total, [in,out] uint32 *resume_handle ); /******************/ /* Function: 0x1b */ NTSTATUS srvsvc_NETRSERVERTRANSPORTDEL( ); /******************/ /* Function: 0x1c */ NTSTATUS srvsvc_NET_REMOTE_TOD( ); /******************/ /* Function: 0x1d */ NTSTATUS srvsvc_NETRSERVERSETSERVICEBITS( ); /******************/ /* Function: 0x1e */ NTSTATUS srvsvc_NETRPRPATHTYPE( ); /******************/ /* Function: 0x1f */ NTSTATUS srvsvc_NETRPRPATHCANONICALIZE( ); /******************/ /* Function: 0x20 */ NTSTATUS srvsvc_NETRPRPATHCOMPARE( ); /******************/ /* Function: 0x21 */ NTSTATUS srvsvc_NET_NAME_VALIDATE( ); /******************/ /* Function: 0x22 */ NTSTATUS srvsvc_NETRPRNAMECANONICALIZE( ); /******************/ /* Function: 0x23 */ NTSTATUS srvsvc_NETRPRNAMECOMPARE( ); /******************/ /* Function: 0x24 */ /* Note, there must be some way to return entries read vs total entries ... */ WERROR srvsvc_NetShareEnum( [in] unistr *server_unc, [in,out] uint32 level, [in,out,switch_is(level)] srvsvc_NetShareCtr ctr, [in] uint32 preferred_len, [out] uint32 totalentries, [in,out] uint32 *resume_handle ); /******************/ /* Function: 0x25 */ NTSTATUS srvsvc_NETRSHAREDELSTART( ); /******************/ /* Function: 0x26 */ NTSTATUS srvsvc_NETRSHAREDELCOMMIT( ); /******************/ /* Function: 0x27 */ NTSTATUS srvsvc_NET_FILE_QUERY_SECDESC( ); /******************/ /* Function: 0x28 */ NTSTATUS srvsvc_NET_FILE_SET_SECDESC( ); /******************/ /* Function: 0x29 */ NTSTATUS srvsvc_NETRSERVERTRANSPORTADDEX( ); /******************/ /* Function: 0x2a */ NTSTATUS srvsvc_NETRSERVERSETSERVICEBITSEX( ); /******************/ /* Function: 0x2b */ NTSTATUS srvsvc_NETRDFSGETVERSION( ); /******************/ /* Function: 0x2c */ NTSTATUS srvsvc_NETRDFSCREATELOCALPARTITION( ); /******************/ /* Function: 0x2d */ NTSTATUS srvsvc_NETRDFSDELETELOCALPARTITION( ); /******************/ /* Function: 0x2e */ NTSTATUS srvsvc_NETRDFSSETLOCALVOLUMESTATE( ); /******************/ /* Function: 0x2f */ NTSTATUS srvsvc_NETRDFSSETSERVERINFO( ); /******************/ /* Function: 0x30 */ NTSTATUS srvsvc_NETRDFSCREATEEXITPOINT( ); /******************/ /* Function: 0x31 */ NTSTATUS srvsvc_NETRDFSDELETEEXITPOINT( ); /******************/ /* Function: 0x32 */ NTSTATUS srvsvc_NETRDFSMODIFYPREFIX( ); /******************/ /* Function: 0x33 */ NTSTATUS srvsvc_NETRDFSFIXLOCALVOLUME( ); /******************/ /* Function: 0x34 */ NTSTATUS srvsvc_NETRDFSMANAGERREPORTSITEINFO( ); /******************/ /* Function: 0x35 */ NTSTATUS srvsvc_NETRSERVERTRANSPORTDELEX( ); }