+#include "idl_types.h"
+
/*
srvsvc interface definitions
*/
+import "security.idl", "svcctl.idl";
-[ uuid(4b324fc8-1670-01d3-1278-5a47bf6ee188),
+[ uuid("4b324fc8-1670-01d3-1278-5a47bf6ee188"),
version(3.0),
- pointer_default(unique)
+ endpoint("ncacn_np:[\\pipe\\srvsvc]", "ncacn_ip_tcp:", "ncalrpc:"),
+ pointer_default(unique),
+ helpstring("Server Service")
] interface srvsvc
{
+ typedef bitmap svcctl_ServerType svcctl_ServerType;
+ typedef bitmap security_secinfo security_secinfo;
+
+/**************************/
+/* srvsvc_NetCharDev */
+/**************************/
+ typedef struct {
+ [string,charset(UTF16)] uint16 *device;
+ } srvsvc_NetCharDevInfo0;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] srvsvc_NetCharDevInfo0 *array;
+ } srvsvc_NetCharDevCtr0;
+
+ typedef struct {
+ [string,charset(UTF16)] uint16 *device;
+ uint32 status;
+ [string,charset(UTF16)] uint16 *user;
+ uint32 time;
+ } srvsvc_NetCharDevInfo1;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] srvsvc_NetCharDevInfo1 *array;
+ } srvsvc_NetCharDevCtr1;
+
+ typedef union {
+ [case(0)] srvsvc_NetCharDevInfo0 *info0;
+ [case(1)] srvsvc_NetCharDevInfo1 *info1;
+ [default] ;
+ } srvsvc_NetCharDevInfo;
+
+ typedef union {
+ [case(0)] srvsvc_NetCharDevCtr0 *ctr0;
+ [case(1)] srvsvc_NetCharDevCtr1 *ctr1;
+ [default] ;
+ } srvsvc_NetCharDevCtr;
+
/******************/
/* Function: 0x00 */
- NTSTATUS srvsvc_00(
+ WERROR srvsvc_NetCharDevEnum(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in,out] uint32 level,
+ [in,out,switch_is(level)] srvsvc_NetCharDevCtr ctr,
+ [in] uint32 max_buffer,
+ [out] uint32 totalentries,
+ [in,out,unique] uint32 *resume_handle
);
/******************/
/* Function: 0x01 */
- NTSTATUS srvsvc_01(
+ WERROR srvsvc_NetCharDevGetInfo(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] [string,charset(UTF16)] uint16 device_name[],
+ [in] uint32 level,
+ [out,ref,switch_is(level)] srvsvc_NetCharDevInfo *info
);
/******************/
/* Function: 0x02 */
- NTSTATUS srvsvc_02(
+ WERROR srvsvc_NetCharDevControl(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] [string,charset(UTF16)] uint16 device_name[],
+ [in] uint32 opcode
);
+/**************************/
+/* srvsvc_NetCharDevQ */
+/**************************/
+ typedef struct {
+ [string,charset(UTF16)] uint16 *device;
+ } srvsvc_NetCharDevQInfo0;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] srvsvc_NetCharDevQInfo0 *array;
+ } srvsvc_NetCharDevQCtr0;
+
+ typedef struct {
+ [string,charset(UTF16)] uint16 *device;
+ uint32 priority;
+ [string,charset(UTF16)] uint16 *devices;
+ uint32 users;
+ uint32 num_ahead;
+ } srvsvc_NetCharDevQInfo1;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] srvsvc_NetCharDevQInfo1 *array;
+ } srvsvc_NetCharDevQCtr1;
+
+ typedef union {
+ [case(0)] srvsvc_NetCharDevQInfo0 *info0;
+ [case(1)] srvsvc_NetCharDevQInfo1 *info1;
+ [default] ;
+ } srvsvc_NetCharDevQInfo;
+
+ typedef union {
+ [case(0)] srvsvc_NetCharDevQCtr0 *ctr0;
+ [case(1)] srvsvc_NetCharDevQCtr1 *ctr1;
+ [default] ;
+ } srvsvc_NetCharDevQCtr;
+
/******************/
/* Function: 0x03 */
- NTSTATUS srvsvc_03(
+ WERROR srvsvc_NetCharDevQEnum(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in,unique] [string,charset(UTF16)] uint16 *user,
+ [in,out] uint32 level,
+ [in,out,switch_is(level)] srvsvc_NetCharDevQCtr ctr,
+ [in] uint32 max_buffer,
+ [out] uint32 totalentries,
+ [in,out,unique] uint32 *resume_handle
);
/******************/
/* Function: 0x04 */
- NTSTATUS srvsvc_04(
+ WERROR srvsvc_NetCharDevQGetInfo(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] [string,charset(UTF16)] uint16 queue_name[],
+ [in] [string,charset(UTF16)] uint16 user[],
+ [in] uint32 level,
+ [out,switch_is(level),ref] srvsvc_NetCharDevQInfo *info
);
/******************/
/* Function: 0x05 */
- NTSTATUS srvsvc_05(
+ WERROR srvsvc_NetCharDevQSetInfo(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] [string,charset(UTF16)] uint16 queue_name[],
+ [in] uint32 level,
+ [in,switch_is(level)] srvsvc_NetCharDevQInfo info,
+ [in,out,unique] uint32 *parm_error
);
/******************/
/* Function: 0x06 */
- NTSTATUS srvsvc_06(
+ WERROR srvsvc_NetCharDevQPurge(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] [string,charset(UTF16)] uint16 queue_name[]
);
/******************/
/* Function: 0x07 */
- NTSTATUS srvsvc_07(
+ WERROR srvsvc_NetCharDevQPurgeSelf(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] [string,charset(UTF16)] uint16 queue_name[],
+ [in] [string,charset(UTF16)] uint16 computer_name[]
);
- /******************/
- /* Function: 0x08 */
-
+/**************************/
+/* srvsvc_NetConn */
+/**************************/
typedef struct {
uint32 conn_id;
- } srvsvc_NetConn0;
+ } srvsvc_NetConnInfo0;
typedef struct {
uint32 count;
- [size_is(count)] srvsvc_NetConn0 *array;
+ [size_is(count)] srvsvc_NetConnInfo0 *array;
} srvsvc_NetConnCtr0;
typedef struct {
uint32 num_open;
uint32 num_users;
uint32 conn_time;
- unistr *user;
- unistr *client;
- } srvsvc_NetConn1;
+ [string,charset(UTF16)] uint16 *user;
+ [string,charset(UTF16)] uint16 *share;
+ } srvsvc_NetConnInfo1;
typedef struct {
uint32 count;
- [size_is(count)] srvsvc_NetConn1 *array;
+ [size_is(count)] srvsvc_NetConnInfo1 *array;
} srvsvc_NetConnCtr1;
- typedef struct {
- } srvsvc_NetConnCtrDefault;
-
- typedef [nodiscriminant,public] union {
- case(0) srvsvc_NetConnCtr0 *ctr0;
- case(1) srvsvc_NetConnCtr1 *ctr1;
- default srvsvc_NetConnCtrDefault ctrDefault;
- } srvsvc_NetConnSubCtr;
+ typedef union {
+ [case(0)] srvsvc_NetConnCtr0 *ctr0;
+ [case(1)] srvsvc_NetConnCtr1 *ctr1;
+ [default] ;
+ } srvsvc_NetConnCtr;
typedef struct {
uint32 level;
- uint32 level2;
- [switch_is(level)] srvsvc_NetConnSubCtr subctr;
- } srvsvc_NetConnCtr;
+ [switch_is(level)] srvsvc_NetConnCtr ctr;
+ } srvsvc_NetConnInfoCtr;
+ /******************/
+ /* Function: 0x08 */
WERROR srvsvc_NetConnEnum(
- [in] unistr *server_unc,
- [in] unistr *path,
- [in,out] srvsvc_NetConnCtr ctr,
- [in] uint32 preferred_len,
- [out] uint32 total,
- [in,out] uint32 *resume_handle
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in,unique] [string,charset(UTF16)] uint16 *path,
+ [in,out] uint32 level,
+ [in,out,switch_is(level)] srvsvc_NetConnCtr ctr,
+ [in] uint32 max_buffer,
+ [out] uint32 totalentries,
+ [in,out,unique] uint32 *resume_handle
);
- /******************/
- /* Function: 0x09 */
-
+/**************************/
+/* srvsvc_NetFile */
+/**************************/
typedef struct {
uint32 fid;
- } srvsvc_NetFile2;
+ } srvsvc_NetFileInfo2;
typedef struct {
uint32 count;
- [size_is(count)] srvsvc_NetFile2 *array;
+ [size_is(count)] srvsvc_NetFileInfo2 *array;
} srvsvc_NetFileCtr2;
typedef struct {
uint32 fid;
uint32 permissions;
uint32 num_locks;
- unistr *path;
- unistr *user;
- } srvsvc_NetFile3;
+ [string,charset(UTF16)] uint16 *path;
+ [string,charset(UTF16)] uint16 *user;
+ } srvsvc_NetFileInfo3;
typedef struct {
uint32 count;
- [size_is(count)] srvsvc_NetFile3 *array;
+ [size_is(count)] srvsvc_NetFileInfo3 *array;
} srvsvc_NetFileCtr3;
- typedef struct {
- } srvsvc_NetFileCtrDefault;
+ typedef union {
+ [case(2)] srvsvc_NetFileInfo2 *info2;
+ [case(3)] srvsvc_NetFileInfo3 *info3;
+ [default] ;
+ } srvsvc_NetFileInfo;
- typedef [nodiscriminant,public] union {
- case(2) srvsvc_NetFileCtr2 *ctr2;
- case(3) srvsvc_NetFileCtr3 *ctr3;
- default srvsvc_NetFileCtrDefault ctrDefault;
- } srvsvc_NetFileSubCtr;
+ typedef union {
+ [case(2)] srvsvc_NetFileCtr2 *ctr2;
+ [case(3)] srvsvc_NetFileCtr3 *ctr3;
+ [default] ;
+ } srvsvc_NetFileCtr;
typedef struct {
uint32 level;
- uint32 level2;
- [switch_is(level)] srvsvc_NetFileSubCtr subctr;
- } srvsvc_NetFileCtr;
+ [switch_is(level)] srvsvc_NetFileCtr ctr;
+ } srvsvc_NetFileInfoCtr;
+ /******************/
+ /* Function: 0x09 */
WERROR srvsvc_NetFileEnum(
- [in] unistr *server_unc,
- [in] unistr *path,
- [in] unistr *user,
- [in,out] srvsvc_NetFileCtr ctr,
- [in] uint32 preferred_len,
- [out] uint32 total,
- [in,out] uint32 *resume_handle
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in,unique] [string,charset(UTF16)] uint16 *path,
+ [in,unique] [string,charset(UTF16)] uint16 *user,
+ [in,out] uint32 level,
+ [in,out,switch_is(level)] srvsvc_NetFileCtr ctr,
+ [in] uint32 max_buffer,
+ [out] uint32 totalentries,
+ [in,out,unique] uint32 *resume_handle
);
/******************/
/* Function: 0x0a */
- NTSTATUS srvsvc_0a(
+ WERROR srvsvc_NetFileGetInfo(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] uint32 fid,
+ [in] uint32 level,
+ [out,switch_is(level),ref] srvsvc_NetFileInfo *info
);
/******************/
/* Function: 0x0b */
- NTSTATUS srvsvc_NET_FILE_CLOSE(
+ WERROR srvsvc_NetFileClose(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] uint32 fid
);
- /******************/
- /* Function: 0x0c */
-
+/**************************/
+/* srvsvc_NetSess */
+/**************************/
typedef struct {
- unistr *client;
- } srvsvc_NetSess0;
+ [string,charset(UTF16)] uint16 *client;
+ } srvsvc_NetSessInfo0;
typedef struct {
uint32 count;
- [size_is(count)] srvsvc_NetSess0 *array;
+ [size_is(count)] srvsvc_NetSessInfo0 *array;
} srvsvc_NetSessCtr0;
typedef struct {
- unistr *client;
- unistr *user;
+ [string,charset(UTF16)] uint16 *client;
+ [string,charset(UTF16)] uint16 *user;
uint32 num_open;
uint32 time;
uint32 idle_time;
uint32 user_flags;
- } srvsvc_NetSess1;
+ } srvsvc_NetSessInfo1;
typedef struct {
uint32 count;
- [size_is(count)] srvsvc_NetSess1 *array;
+ [size_is(count)] srvsvc_NetSessInfo1 *array;
} srvsvc_NetSessCtr1;
typedef struct {
- unistr *client;
- unistr *user;
+ [string,charset(UTF16)] uint16 *client;
+ [string,charset(UTF16)] uint16 *user;
uint32 num_open;
uint32 time;
uint32 idle_time;
uint32 user_flags;
- unistr *client_type;
- } srvsvc_NetSess2;
+ [string,charset(UTF16)] uint16 *client_type;
+ } srvsvc_NetSessInfo2;
typedef struct {
uint32 count;
- [size_is(count)] srvsvc_NetSess2 *array;
+ [size_is(count)] srvsvc_NetSessInfo2 *array;
} srvsvc_NetSessCtr2;
typedef struct {
- unistr *client;
- unistr *user;
+ [string,charset(UTF16)] uint16 *client;
+ [string,charset(UTF16)] uint16 *user;
uint32 time;
uint32 idle_time;
- } srvsvc_NetSess10;
+ } srvsvc_NetSessInfo10;
typedef struct {
uint32 count;
- [size_is(count)] srvsvc_NetSess10 *array;
+ [size_is(count)] srvsvc_NetSessInfo10 *array;
} srvsvc_NetSessCtr10;
typedef struct {
- unistr *client;
- unistr *user;
+ [string,charset(UTF16)] uint16 *client;
+ [string,charset(UTF16)] uint16 *user;
uint32 num_open;
uint32 time;
uint32 idle_time;
uint32 user_flags;
- unistr *client_type;
- unistr *transport;
- } srvsvc_NetSess502;
+ [string,charset(UTF16)] uint16 *client_type;
+ [string,charset(UTF16)] uint16 *transport;
+ } srvsvc_NetSessInfo502;
typedef struct {
uint32 count;
- [size_is(count)] srvsvc_NetSess502 *array;
+ [size_is(count)] srvsvc_NetSessInfo502 *array;
} srvsvc_NetSessCtr502;
- typedef struct {
- } srvsvc_NetSessCtrDefault;
+ 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;
- typedef [nodiscriminant,public] 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_NetSessCtrDefault ctrDefault;
- } srvsvc_NetSessSubCtr;
+ /******************/
+ /* Function: 0x0c */
typedef struct {
uint32 level;
- uint32 level2;
- [switch_is(level)] srvsvc_NetSessSubCtr subctr;
- } srvsvc_NetSessCtr;
+ [switch_is(level)] srvsvc_NetSessCtr ctr;
+ } srvsvc_NetSessInfoCtr;
WERROR srvsvc_NetSessEnum(
- [in] unistr *server_unc,
- [in] unistr *client,
- [in] unistr *user,
- [in,out] srvsvc_NetSessCtr ctr,
- [in] uint32 preferred_len,
- [out] uint32 total,
- [in,out] uint32 *resume_handle
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in,unique] [string,charset(UTF16)] uint16 *client,
+ [in,unique] [string,charset(UTF16)] uint16 *user,
+ [in,out] uint32 level,
+ [in,out,switch_is(level)] srvsvc_NetSessCtr ctr,
+ [in] uint32 max_buffer,
+ [out] uint32 totalentries,
+ [in,out,unique] uint32 *resume_handle
);
/******************/
/* Function: 0x0d */
- NTSTATUS srvsvc_0d(
+ WERROR srvsvc_NetSessDel(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in,unique] [string,charset(UTF16)] uint16 *client,
+ [in,unique] [string,charset(UTF16)] uint16 *user
);
- /******************/
- /* Function: 0x0e */
- NTSTATUS srvsvc_NET_SHARE_ADD(
- );
-
- /******************/
- /* Function: 0x0f */
+/**************************/
+/* srvsvc_NetShare */
+/**************************/
+
+ /* share types */
+ const uint32 STYPE_TEMPORARY = 0x40000000; /* share is a temporary one */
+ const uint32 STYPE_HIDDEN = 0x80000000; /* share is a hidden one */
+
+ typedef [v1_enum, flag(NDR_PAHEX)] enum {
+ STYPE_DISKTREE = 0,
+ STYPE_DISKTREE_TEMPORARY = STYPE_DISKTREE|STYPE_TEMPORARY,
+ STYPE_DISKTREE_HIDDEN = STYPE_DISKTREE|STYPE_HIDDEN,
+ STYPE_PRINTQ = 1,
+ STYPE_PRINTQ_TEMPORARY = STYPE_PRINTQ|STYPE_TEMPORARY,
+ STYPE_PRINTQ_HIDDEN = STYPE_PRINTQ|STYPE_HIDDEN,
+ STYPE_DEVICE = 2, /* Serial device */
+ STYPE_DEVICE_TEMPORARY = STYPE_DEVICE|STYPE_TEMPORARY,
+ STYPE_DEVICE_HIDDEN = STYPE_DEVICE|STYPE_HIDDEN,
+ STYPE_IPC = 3, /* Interprocess communication (IPC) */
+ STYPE_IPC_TEMPORARY = STYPE_IPC|STYPE_TEMPORARY,
+ STYPE_IPC_HIDDEN = STYPE_IPC|STYPE_HIDDEN
+ } srvsvc_ShareType;
typedef struct {
- unistr *name;
- } srvsvc_NetShare0;
+ [string,charset(UTF16)] uint16 *name;
+ } srvsvc_NetShareInfo0;
typedef struct {
uint32 count;
- [size_is(count)] srvsvc_NetShare0 *array;
+ [size_is(count)] srvsvc_NetShareInfo0 *array;
} srvsvc_NetShareCtr0;
typedef struct {
- unistr *name;
- uint32 type;
- unistr *comment;
- } srvsvc_NetShare1;
+ [string,charset(UTF16)] uint16 *name;
+ srvsvc_ShareType type;
+ [string,charset(UTF16)] uint16 *comment;
+ } srvsvc_NetShareInfo1;
typedef struct {
uint32 count;
- [size_is(count)] srvsvc_NetShare1 *array;
+ [size_is(count)] srvsvc_NetShareInfo1 *array;
} srvsvc_NetShareCtr1;
typedef struct {
- unistr *name;
- uint32 type;
- unistr *comment;
+ [string,charset(UTF16)] uint16 *name;
+ srvsvc_ShareType type;
+ [string,charset(UTF16)] uint16 *comment;
uint32 permissions;
uint32 max_users;
uint32 current_users;
- unistr *path;
- uint32 *password;
- } srvsvc_NetShare2;
+ [string,charset(UTF16)] uint16 *path;
+ [string,charset(UTF16)] uint16 *password;
+ } srvsvc_NetShareInfo2;
typedef struct {
uint32 count;
- [size_is(count)] srvsvc_NetShare2 *array;
+ [size_is(count)] srvsvc_NetShareInfo2 *array;
} srvsvc_NetShareCtr2;
typedef struct {
- unistr *name;
- uint32 type;
- unistr *comment;
+ [string,charset(UTF16)] uint16 *name;
+ srvsvc_ShareType type;
+ [string,charset(UTF16)] uint16 *comment;
uint32 csc_policy;
- } srvsvc_NetShare501;
+ } srvsvc_NetShareInfo501;
typedef struct {
uint32 count;
- [size_is(count)] srvsvc_NetShare501 *array;
+ [size_is(count)] srvsvc_NetShareInfo501 *array;
} srvsvc_NetShareCtr501;
typedef struct {
- unistr *name;
- uint32 type;
- unistr *comment;
+ [string,charset(UTF16)] uint16 *name;
+ srvsvc_ShareType type;
+ [string,charset(UTF16)] uint16 *comment;
uint32 permissions;
uint32 max_users;
uint32 current_users;
- unistr *path;
- uint32 *password;
- uint32 unknown;
- [subcontext] security_descriptor *sd;
- } srvsvc_NetShare502;
+ [string,charset(UTF16)] uint16 *path;
+ [string,charset(UTF16)] uint16 *password;
+ sec_desc_buf sd_buf;
+ } srvsvc_NetShareInfo502;
typedef struct {
uint32 count;
- [size_is(count)] srvsvc_NetShare502 *array;
+ [size_is(count)] srvsvc_NetShareInfo502 *array;
} srvsvc_NetShareCtr502;
typedef struct {
- } srvsvc_NetShareCtrDefault;
+ [string,charset(UTF16)] uint16 *comment;
+ } srvsvc_NetShareInfo1004;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] srvsvc_NetShareInfo1004 *array;
+ } srvsvc_NetShareCtr1004;
- typedef [nodiscriminant,public] 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_NetShareCtrDefault ctrDefault;
- } srvsvc_NetShareSubCtr;
+ typedef bitmap {
+ SHARE_1005_IN_DFS = 0x00000001,
+ SHARE_1005_DFS_ROOT = 0x00000002
+ } NetShareInfo1005Flags;
+
+ const uint32 SHARE_1005_CSC_POLICY_MASK = 0x00000030;
+ const uint32 SHARE_1005_CSC_POLICY_SHIFT = 4;
typedef struct {
- uint32 level;
- [switch_is(level)] srvsvc_NetShareSubCtr subctr;
+ NetShareInfo1005Flags dfs_flags;
+ } srvsvc_NetShareInfo1005;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] srvsvc_NetShareInfo1005 *array;
+ } srvsvc_NetShareCtr1005;
+
+ typedef struct {
+ uint32 max_users;
+ } srvsvc_NetShareInfo1006;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] srvsvc_NetShareInfo1006 *array;
+ } srvsvc_NetShareCtr1006;
+
+ typedef struct {
+ uint32 flags;
+ [string,charset(UTF16)] uint16 *alternate_directory_name;
+ } srvsvc_NetShareInfo1007;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] srvsvc_NetShareInfo1007 *array;
+ } srvsvc_NetShareCtr1007;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] sec_desc_buf *array;
+ } srvsvc_NetShareCtr1501;
+
+ typedef union {
+ [case(0)] srvsvc_NetShareInfo0 *info0;
+ [case(1)] srvsvc_NetShareInfo1 *info1;
+ [case(2)] srvsvc_NetShareInfo2 *info2;
+ [case(501)] srvsvc_NetShareInfo501 *info501;
+ [case(502)] srvsvc_NetShareInfo502 *info502;
+ [case(1004)] srvsvc_NetShareInfo1004 *info1004;
+ [case(1005)] srvsvc_NetShareInfo1005 *info1005;
+ [case(1006)] srvsvc_NetShareInfo1006 *info1006;
+ [case(1007)] srvsvc_NetShareInfo1007 *info1007;
+ [case(1501)] sec_desc_buf *info1501;
+ [default] ;
+ } srvsvc_NetShareInfo;
+
+ 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;
+ [case(1004)] srvsvc_NetShareCtr1004 *ctr1004;
+ [case(1005)] srvsvc_NetShareCtr1005 *ctr1005;
+ [case(1006)] srvsvc_NetShareCtr1006 *ctr1006;
+ [case(1007)] srvsvc_NetShareCtr1007 *ctr1007;
+ [case(1501)] srvsvc_NetShareCtr1501 *ctr1501;
+ [default] ;
} srvsvc_NetShareCtr;
-
- WERROR srvsvc_NetShareEnumAll(
- [in] unistr *server_unc,
- [in] uint32 level,
- [in,out] srvsvc_NetShareCtr ctr,
- [in] uint32 preferred_len,
- [out] uint32 totalentries,
- [in,out] uint32 *resume_handle
+
+ typedef struct {
+ uint32 level;
+ [switch_is(level)] srvsvc_NetShareCtr ctr;
+ } srvsvc_NetShareInfoCtr;
+
+ /******************/
+ /* Function: 0x0e */
+ WERROR srvsvc_NetShareAdd(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] uint32 level,
+ [in,ref,switch_is(level)] srvsvc_NetShareInfo *info,
+ [in,out,unique] uint32 *parm_error
+ );
+
+ /******************/
+ /* Function: 0x0f */
+ WERROR srvsvc_NetShareEnumAll (
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in,out] uint32 level,
+ [in,out,switch_is(level)] srvsvc_NetShareCtr ctr,
+ [in] uint32 max_buffer,
+ [out] uint32 totalentries,
+ [in,out,unique] uint32 *resume_handle
);
/******************/
/* Function: 0x10 */
- NTSTATUS srvsvc_NET_SHARE_GET_INFO(
+ WERROR srvsvc_NetShareGetInfo(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] [string,charset(UTF16)] uint16 share_name[],
+ [in] uint32 level,
+ [out,ref,switch_is(level)] srvsvc_NetShareInfo *info
);
/******************/
/* Function: 0x11 */
- NTSTATUS srvsvc_NET_SHARE_SET_INFO(
+ WERROR srvsvc_NetShareSetInfo(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] [string,charset(UTF16)] uint16 share_name[],
+ [in] uint32 level,
+ [in,ref,switch_is(level)] srvsvc_NetShareInfo *info,
+ [in,out,unique] uint32 *parm_error
);
/******************/
/* Function: 0x12 */
- NTSTATUS srvsvc_NET_SHARE_DEL(
+ WERROR srvsvc_NetShareDel(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] [string,charset(UTF16)] uint16 share_name[],
+ [in] uint32 reserved
);
/******************/
/* Function: 0x13 */
- NTSTATUS srvsvc_NET_SHARE_DEL_STICKY(
+ WERROR srvsvc_NetShareDelSticky(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] [string,charset(UTF16)] uint16 share_name[],
+ [in] uint32 reserved
);
/******************/
/* Function: 0x14 */
- NTSTATUS srvsvc_14(
+ WERROR srvsvc_NetShareCheck(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] [string,charset(UTF16)] uint16 device_name[],
+ [out,ref] srvsvc_ShareType *type
);
- /******************/
- /* Function: 0x15 */
- NTSTATUS srvsvc_NET_SRV_GET_INFO(
- );
-
- /******************/
- /* Function: 0x16 */
- NTSTATUS srvsvc_NET_SRV_SET_INFO(
- );
-
- /******************/
- /* Function: 0x17 */
+/**************************/
+/* srvsvc_NetSrv */
+/**************************/
+ typedef [public,v1_enum] enum {
+ PLATFORM_ID_DOS = 300,
+ PLATFORM_ID_OS2 = 400,
+ PLATFORM_ID_NT = 500,
+ PLATFORM_ID_OSF = 600,
+ PLATFORM_ID_VMS = 700
+ } srvsvc_PlatformId;
typedef struct {
- uint32 unknown;
- uint32 size;
- [size_is(size)] uint8 *disk;
- } srvsvc_NetDisk0;
+ srvsvc_PlatformId platform_id;
+ [string,charset(UTF16)] uint16 *server_name;
+ } srvsvc_NetSrvInfo100;
typedef struct {
- uint32 count;
- uint32 unknown1;
- uint32 unknown2;
- [size_is(count)] srvsvc_NetDisk0 *array;
- } srvsvc_NetDiskCtr0;
+ srvsvc_PlatformId platform_id;
+ [string,charset(UTF16)] uint16 *server_name;
+ uint32 version_major;
+ uint32 version_minor;
+ svcctl_ServerType server_type;
+ [string,charset(UTF16)] uint16 *comment;
+ } srvsvc_NetSrvInfo101;
typedef struct {
- uint32 dummy;
- } srvsvc_NetDisk1;
+ srvsvc_PlatformId platform_id;
+ [string,charset(UTF16)] uint16 *server_name;
+ uint32 version_major;
+ uint32 version_minor;
+ svcctl_ServerType server_type;
+ [string,charset(UTF16)] uint16 *comment;
+ uint32 users;
+ uint32 disc;
+ uint32 hidden;
+ uint32 announce;
+ uint32 anndelta;
+ uint32 licenses;
+ [string,charset(UTF16)] uint16 *userpath;
+ } srvsvc_NetSrvInfo102;
typedef struct {
- uint32 count;
- [size_is(count)] srvsvc_NetDisk1 *array;
- } srvsvc_NetDiskCtr1;
+ uint32 ulist_mtime;
+ uint32 glist_mtime;
+ uint32 alist_mtime;
+ [string,charset(UTF16)] uint16 *alerts;
+ uint32 security;
+ uint32 numadmin;
+ uint32 lanmask;
+ [string,charset(UTF16)] uint16 *guestaccount;
+ uint32 chdevs;
+ uint32 chdevqs;
+ uint32 chdevjobs;
+ uint32 connections;
+ uint32 shares;
+ uint32 openfiles;
+ uint32 sessopen;
+ uint32 sesssvc;
+ uint32 sessreqs;
+ uint32 opensearch;
+ uint32 activelocks;
+ uint32 sizereqbufs;
+ uint32 numbigbufs;
+ uint32 numfiletasks;
+ uint32 alertsched;
+ uint32 erroralert;
+ uint32 logonalert;
+ uint32 accessalert;
+ uint32 diskalert;
+ uint32 netioalert;
+ uint32 maxaudits;
+ [string,charset(UTF16)] uint16 *srvheuristics;
+ } srvsvc_NetSrvInfo402;
typedef struct {
- uint32 dummy;
- } srvsvc_NetDisk2;
+ uint32 ulist_mtime;
+ uint32 glist_mtime;
+ uint32 alist_mtime;
+ [string,charset(UTF16)] uint16 *alerts;
+ uint32 security;
+ uint32 numadmin;
+ uint32 lanmask;
+ [string,charset(UTF16)] uint16 *guestaccount;
+ uint32 chdevs;
+ uint32 chdevqs;
+ uint32 chdevjobs;
+ uint32 connections;
+ uint32 shares;
+ uint32 openfiles;
+ uint32 sessopen;
+ uint32 sesssvc;
+ uint32 sessreqs;
+ uint32 opensearch;
+ uint32 activelocks;
+ uint32 sizereqbufs;
+ uint32 numbigbufs;
+ uint32 numfiletasks;
+ uint32 alertsched;
+ uint32 eroralert;
+ uint32 logonalert;
+ uint32 accessalert;
+ uint32 diskalert;
+ uint32 netioalert;
+ uint32 maxaudits;
+ [string,charset(UTF16)] uint16 *srvheuristics;
+ uint32 auditedevents;
+ uint32 auditprofile;
+ [string,charset(UTF16)] uint16 *autopath;
+ } srvsvc_NetSrvInfo403;
typedef struct {
- uint32 count;
- [size_is(count)] srvsvc_NetDisk2 *array;
- } srvsvc_NetDiskCtr2;
+ uint32 sessopen;
+ uint32 sesssvc;
+ uint32 opensearch;
+ uint32 sizereqbufs;
+ uint32 initworkitems;
+ uint32 maxworkitems;
+ uint32 rawworkitems;
+ uint32 irpstacksize;
+ uint32 maxrawbuflen;
+ uint32 sessusers;
+ uint32 sessconns;
+ uint32 maxpagedmemoryusage;
+ uint32 maxnonpagedmemoryusage;
+ uint32 enablesoftcompat;
+ uint32 enableforcedlogoff;
+ uint32 timesource;
+ uint32 acceptdownlevelapis;
+ uint32 lmannounce;
+ } srvsvc_NetSrvInfo502;
+
+ typedef struct{
+ uint32 sessopen;
+ uint32 sesssvc;
+ uint32 opensearch;
+ uint32 sizereqbufs;
+ uint32 initworkitems;
+ uint32 maxworkitems;
+ uint32 rawworkitems;
+ uint32 irpstacksize;
+ uint32 maxrawbuflen;
+ uint32 sessusers;
+ uint32 sessconns;
+ uint32 maxpagedmemoryusage;
+ uint32 maxnonpagedmemoryusage;
+ uint32 enablesoftcompat;
+ uint32 enableforcedlogoff;
+ uint32 timesource;
+ uint32 acceptdownlevelapis;
+ uint32 lmannounce;
+ [string,charset(UTF16)] uint16 *domain;
+ uint32 maxcopyreadlen;
+ uint32 maxcopywritelen;
+ uint32 minkeepsearch;
+ uint32 maxkeepsearch;
+ uint32 minkeepcomplsearch;
+ uint32 maxkeepcomplsearch;
+ uint32 threadcountadd;
+ uint32 numlockthreads;
+ uint32 scavtimeout;
+ uint32 minrcvqueue;
+ uint32 minfreeworkitems;
+ uint32 xactmemsize;
+ uint32 threadpriority;
+ uint32 maxmpxct;
+ uint32 oplockbreakwait;
+ uint32 oplockbreakresponsewait;
+ uint32 enableoplocks;
+ uint32 enableoplockforceclose;
+ uint32 enablefcbopens;
+ uint32 enableraw;
+ uint32 enablesharednetdrives;
+ uint32 minfreeconnections;
+ uint32 maxfreeconnections;
+ } srvsvc_NetSrvInfo503;
+
+ typedef struct{
+ uint32 sessopen;
+ uint32 sesssvc;
+ uint32 opensearch;
+ uint32 sizereqbufs;
+ uint32 initworkitems;
+ uint32 maxworkitems;
+ uint32 rawworkitems;
+ uint32 irpstacksize;
+ uint32 maxrawbuflen;
+ uint32 sessusers;
+ uint32 sessconns;
+ uint32 maxpagedmemoryusage;
+ uint32 maxnonpagedmemoryusage;
+ uint32 enablesoftcompat;
+ uint32 enableforcedlogoff;
+ uint32 timesource;
+ uint32 acceptdownlevelapis;
+ uint32 lmannounce;
+ [string,charset(UTF16)] uint16 *domain;
+ uint32 maxcopyreadlen;
+ uint32 maxcopywritelen;
+ uint32 minkeepsearch;
+ uint32 minkeepcomplsearch;
+ uint32 maxkeepcomplsearch;
+ uint32 threadcountadd;
+ uint32 numlockthreads;
+ uint32 scavtimeout;
+ uint32 minrcvqueue;
+ uint32 minfreeworkitems;
+ uint32 xactmemsize;
+ uint32 threadpriority;
+ uint32 maxmpxct;
+ uint32 oplockbreakwait;
+ uint32 oplockbreakresponsewait;
+ uint32 enableoplocks;
+ uint32 enableoplockforceclose;
+ uint32 enablefcbopens;
+ uint32 enableraw;
+ uint32 enablesharednetdrives;
+ uint32 minfreeconnections;
+ uint32 maxfreeconnections;
+ uint32 initsesstable;
+ uint32 initconntable;
+ uint32 initfiletable;
+ uint32 initsearchtable;
+ uint32 alertsched;
+ uint32 errortreshold;
+ uint32 networkerrortreshold;
+ uint32 diskspacetreshold;
+ uint32 reserved;
+ uint32 maxlinkdelay;
+ uint32 minlinkthroughput;
+ uint32 linkinfovalidtime;
+ uint32 scavqosinfoupdatetime;
+ uint32 maxworkitemidletime;
+ } srvsvc_NetSrvInfo599;
+
+ typedef struct{
+ [string,charset(UTF16)] uint16 *comment;
+ } srvsvc_NetSrvInfo1005;
+
+ typedef struct{
+ uint32 disc;
+ } srvsvc_NetSrvInfo1010;
+
+ typedef struct{
+ uint32 hidden;
+ } srvsvc_NetSrvInfo1016;
+
+ typedef struct{
+ uint32 announce;
+ } srvsvc_NetSrvInfo1017;
+
+ typedef struct{
+ uint32 anndelta;
+ } srvsvc_NetSrvInfo1018;
+
+ typedef struct{
+ uint32 users;
+ } srvsvc_NetSrvInfo1107;
+
+ typedef struct{
+ uint32 sessopens;
+ } srvsvc_NetSrvInfo1501;
+
+ typedef struct{
+ uint32 sessvcs;
+ } srvsvc_NetSrvInfo1502;
+
+ typedef struct{
+ uint32 opensearch;
+ } srvsvc_NetSrvInfo1503;
+
+ typedef struct{
+ uint32 maxworkitems;
+ } srvsvc_NetSrvInfo1506;
+
+ typedef struct{
+ uint32 maxrawbuflen;
+ } srvsvc_NetSrvInfo1509;
+
+ typedef struct{
+ uint32 sessusers;
+ } srvsvc_NetSrvInfo1510;
+
+ typedef struct{
+ uint32 sesscons;
+ } srvsvc_NetSrvInfo1511;
+
+ typedef struct{
+ uint32 maxnonpagedmemoryusage;
+ } srvsvc_NetSrvInfo1512;
+
+ typedef struct{
+ uint32 maxpagedmemoryusage;
+ } srvsvc_NetSrvInfo1513;
+
+ typedef struct{
+ uint32 enablesoftcompat;
+ } srvsvc_NetSrvInfo1514;
+
+ typedef struct{
+ uint32 enableforcedlogoff;
+ } srvsvc_NetSrvInfo1515;
+
+ typedef struct{
+ uint32 timesource;
+ } srvsvc_NetSrvInfo1516;
+
+ typedef struct{
+ uint32 lmannounce;
+ } srvsvc_NetSrvInfo1518;
+
+ typedef struct{
+ uint32 maxcopyreadlen;
+ } srvsvc_NetSrvInfo1520;
+
+ typedef struct{
+ uint32 maxcopywritelen;
+ } srvsvc_NetSrvInfo1521;
+
+ typedef struct{
+ uint32 minkeepsearch;
+ } srvsvc_NetSrvInfo1522;
+
+ typedef struct{
+ uint32 maxkeepsearch;
+ } srvsvc_NetSrvInfo1523;
+
+ typedef struct{
+ uint32 minkeepcomplsearch;
+ } srvsvc_NetSrvInfo1524;
- typedef struct {
- uint32 dummy;
- } srvsvc_NetDisk3;
+ typedef struct{
+ uint32 maxkeepcomplsearch;
+ } srvsvc_NetSrvInfo1525;
- typedef struct {
- uint32 count;
- [size_is(count)] srvsvc_NetDisk3 *array;
- } srvsvc_NetDiskCtr3;
+ typedef struct{
+ uint32 scavtimeout;
+ } srvsvc_NetSrvInfo1528;
- typedef struct {
- } srvsvc_NetDiskCtrDefault;
+ typedef struct{
+ uint32 minrcvqueue;
+ } srvsvc_NetSrvInfo1529;
- typedef [nodiscriminant,public] union {
- case(0) srvsvc_NetDiskCtr0 ctr0;
- case(1) srvsvc_NetDiskCtr1 ctr1;
- case(2) srvsvc_NetDiskCtr2 ctr2;
- case(3) srvsvc_NetDiskCtr3 ctr3;
- default srvsvc_NetDiskCtrDefault ctrDefault;
- } srvsvc_NetDiskSubCtr;
+ typedef struct{
+ uint32 minfreeworkitems;
+ } srvsvc_NetSrvInfo1530;
- typedef struct {
- uint32 num1;
- srvsvc_NetDiskCtr0 *ctr0;
- } srvsvc_NetDiskCtr;
+ typedef struct{
+ uint32 maxmpxct;
+ } srvsvc_NetSrvInfo1533;
+
+ typedef struct{
+ uint32 oplockbreakwait;
+ } srvsvc_NetSrvInfo1534;
+
+ typedef struct{
+ uint32 oplockbreakresponsewait;
+ } srvsvc_NetSrvInfo1535;
+
+ typedef struct{
+ uint32 enableoplocks;
+ } srvsvc_NetSrvInfo1536;
+
+ typedef struct{
+ uint32 enableoplockforceclose;
+ } srvsvc_NetSrvInfo1537;
+
+ typedef struct{
+ uint32 enablefcbopens;
+ } srvsvc_NetSrvInfo1538;
+
+ typedef struct{
+ uint32 enableraw;
+ } srvsvc_NetSrvInfo1539;
+
+ typedef struct{
+ uint32 enablesharednetdrives;
+ } srvsvc_NetSrvInfo1540;
+
+ typedef struct{
+ uint32 minfreeconnections;
+ } srvsvc_NetSrvInfo1541;
+
+ typedef struct{
+ uint32 maxfreeconnections;
+ } srvsvc_NetSrvInfo1542;
+
+ typedef struct{
+ uint32 initsesstable;
+ } srvsvc_NetSrvInfo1543;
+
+ typedef struct{
+ uint32 initconntable;
+ } srvsvc_NetSrvInfo1544;
+
+ typedef struct{
+ uint32 initfiletable;
+ } srvsvc_NetSrvInfo1545;
+
+ typedef struct{
+ uint32 initsearchtable;
+ } srvsvc_NetSrvInfo1546;
+
+ typedef struct{
+ uint32 alertsched;
+ } srvsvc_NetSrvInfo1547;
+
+ typedef struct{
+ uint32 errortreshold;
+ } srvsvc_NetSrvInfo1548;
+
+ typedef struct{
+ uint32 networkerrortreshold;
+ } srvsvc_NetSrvInfo1549;
+
+ typedef struct{
+ uint32 diskspacetreshold;
+ } srvsvc_NetSrvInfo1550;
+
+ typedef struct{
+ uint32 maxlinkdelay;
+ } srvsvc_NetSrvInfo1552;
+
+ typedef struct{
+ uint32 minlinkthroughput;
+ } srvsvc_NetSrvInfo1553;
+
+ typedef struct{
+ uint32 linkinfovalidtime;
+ } srvsvc_NetSrvInfo1554;
+
+ typedef struct{
+ uint32 scavqosinfoupdatetime;
+ } srvsvc_NetSrvInfo1555;
+
+ typedef struct{
+ uint32 maxworkitemidletime;
+ } srvsvc_NetSrvInfo1556;
+
+
+ typedef union{
+ [case(100)] srvsvc_NetSrvInfo100 *info100;
+ [case(101)] srvsvc_NetSrvInfo101 *info101;
+ [case(102)] srvsvc_NetSrvInfo102 *info102;
+ [case(402)] srvsvc_NetSrvInfo402 *info402;
+ [case(403)] srvsvc_NetSrvInfo403 *info403;
+ [case(502)] srvsvc_NetSrvInfo502 *info502;
+ [case(503)] srvsvc_NetSrvInfo503 *info503;
+ [case(599)] srvsvc_NetSrvInfo599 *info599;
+ [case(1005)] srvsvc_NetSrvInfo1005 *info1005;
+ [case(1010)] srvsvc_NetSrvInfo1010 *info1010;
+ [case(1016)] srvsvc_NetSrvInfo1016 *info1016;
+ [case(1017)] srvsvc_NetSrvInfo1017 *info1017;
+ [case(1018)] srvsvc_NetSrvInfo1018 *info1018;
+ [case(1107)] srvsvc_NetSrvInfo1107 *info1107;
+ [case(1501)] srvsvc_NetSrvInfo1501 *info1501;
+ [case(1502)] srvsvc_NetSrvInfo1502 *info1502;
+ [case(1503)] srvsvc_NetSrvInfo1503 *info1503;
+ [case(1506)] srvsvc_NetSrvInfo1506 *info1506;
+ [case(1509)] srvsvc_NetSrvInfo1509 *info1509;
+ [case(1510)] srvsvc_NetSrvInfo1510 *info1510;
+ [case(1511)] srvsvc_NetSrvInfo1511 *info1511;
+ [case(1512)] srvsvc_NetSrvInfo1512 *info1512;
+ [case(1513)] srvsvc_NetSrvInfo1513 *info1513;
+ [case(1514)] srvsvc_NetSrvInfo1514 *info1514;
+ [case(1515)] srvsvc_NetSrvInfo1515 *info1515;
+ [case(1516)] srvsvc_NetSrvInfo1516 *info1516;
+ [case(1518)] srvsvc_NetSrvInfo1518 *info1518;
+ [case(1520)] srvsvc_NetSrvInfo1520 *info1520;
+ [case(1521)] srvsvc_NetSrvInfo1521 *info1521;
+ [case(1522)] srvsvc_NetSrvInfo1522 *info1522;
+ [case(1523)] srvsvc_NetSrvInfo1523 *info1523;
+ [case(1524)] srvsvc_NetSrvInfo1524 *info1524;
+ [case(1525)] srvsvc_NetSrvInfo1525 *info1525;
+ [case(1528)] srvsvc_NetSrvInfo1528 *info1528;
+ [case(1529)] srvsvc_NetSrvInfo1529 *info1529;
+ [case(1530)] srvsvc_NetSrvInfo1530 *info1530;
+ [case(1533)] srvsvc_NetSrvInfo1533 *info1533;
+ [case(1534)] srvsvc_NetSrvInfo1534 *info1534;
+ [case(1535)] srvsvc_NetSrvInfo1535 *info1535;
+ [case(1536)] srvsvc_NetSrvInfo1536 *info1536;
+ [case(1537)] srvsvc_NetSrvInfo1537 *info1537;
+ [case(1538)] srvsvc_NetSrvInfo1538 *info1538;
+ [case(1539)] srvsvc_NetSrvInfo1539 *info1539;
+ [case(1540)] srvsvc_NetSrvInfo1540 *info1540;
+ [case(1541)] srvsvc_NetSrvInfo1541 *info1541;
+ [case(1542)] srvsvc_NetSrvInfo1542 *info1542;
+ [case(1543)] srvsvc_NetSrvInfo1543 *info1543;
+ [case(1544)] srvsvc_NetSrvInfo1544 *info1544;
+ [case(1545)] srvsvc_NetSrvInfo1545 *info1545;
+ [case(1546)] srvsvc_NetSrvInfo1546 *info1546;
+ [case(1547)] srvsvc_NetSrvInfo1547 *info1547;
+ [case(1548)] srvsvc_NetSrvInfo1548 *info1548;
+ [case(1549)] srvsvc_NetSrvInfo1549 *info1549;
+ [case(1550)] srvsvc_NetSrvInfo1550 *info1550;
+ [case(1552)] srvsvc_NetSrvInfo1552 *info1552;
+ [case(1553)] srvsvc_NetSrvInfo1553 *info1553;
+ [case(1554)] srvsvc_NetSrvInfo1554 *info1554;
+ [case(1555)] srvsvc_NetSrvInfo1555 *info1555;
+ [case(1556)] srvsvc_NetSrvInfo1556 *info1556;
+ [default];
+ } srvsvc_NetSrvInfo;
- WERROR srvsvc_NetDiskEnum(
- [in] unistr *server_unc,
+ /******************/
+ /* Function: 0x15 */
+ WERROR srvsvc_NetSrvGetInfo(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in] uint32 level,
- [in] uint32 unknown1,
- [in] uint32 unknown2,
- [in] uint32 preferred_len,
- [out] srvsvc_NetDiskCtr ctr,
- [out] uint32 total,
- [in,out] uint32 *resume_handle
+ [out,ref,switch_is(level)] srvsvc_NetSrvInfo *info
);
/******************/
- /* Function: 0x18 */
- NTSTATUS srvsvc_18(
+ /* Function: 0x16 */
+ WERROR srvsvc_NetSrvSetInfo(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] uint32 level,
+ [in,ref,switch_is(level)] srvsvc_NetSrvInfo *info,
+ [in,out,unique] uint32 *parm_error
);
+/**************************/
+/* srvsvc_NetDisk */
+/**************************/
+ typedef struct {
+ /*
+ * In theory this should be:
+ * [charset(UTF16),string] uint16 annotation[3]
+ * But midl treats this as:
+ * [charset(UTF16),string] uint16 annotation[]
+ * and pidl doesn't support this yet
+ */
+ [value(0)] uint32 __disk_offset;
+ [value(strlen(disk)+1)] uint32 __disk_length;
+ [charset(UTF16)] uint16 disk[__disk_length];
+ } srvsvc_NetDiskInfo0;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count), length_is(count)] srvsvc_NetDiskInfo0 *disks;
+ } srvsvc_NetDiskInfo;
+
/******************/
- /* Function: 0x19 */
- NTSTATUS srvsvc_19(
+ /* Function: 0x17 */
+ WERROR srvsvc_NetDiskEnum(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] uint32 level,
+ [in,out] srvsvc_NetDiskInfo info,
+ [in] uint32 maxlen,
+ [out] uint32 totalentries,
+ [in,out,unique] uint32 *resume_handle
);
-
- /******************/
- /* Function: 0x1a */
+/**************************/
+/* srvsvc_NetStatistics */
+/**************************/
typedef struct {
- uint32 count;
- [size_is(count)] uint8 *addr;
- } srvsvc_TransportAddress;
+ uint32 start;
+ uint32 fopens;
+ uint32 devopens;
+ uint32 jobsqueued;
+ uint32 sopens;
+ uint32 stimeouts;
+ uint32 serrorout;
+ uint32 pwerrors;
+ uint32 permerrors;
+ uint32 syserrors;
+ uint32 bytessent_low;
+ uint32 bytessent_high;
+ uint32 bytesrcvd_low;
+ uint32 bytesrcvd_high;
+ uint32 avresponse;
+ uint32 reqbufneed;
+ uint32 bigbufneed;
+ } srvsvc_Statistics;
+
+ /******************/
+ /* Function: 0x18 */
+ WERROR srvsvc_NetServerStatisticsGet(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in,unique] [string,charset(UTF16)] uint16 *service,
+ [in] uint32 level,
+ [in] uint32 options,
+ [out,ref] srvsvc_Statistics **stats
+ );
+/**************************/
+/* srvsvc_NetTransport */
+/**************************/
typedef struct {
uint32 vcs;
- unistr *name;
- srvsvc_TransportAddress *addr;
+ [string,charset(UTF16)] uint16 *name;
+ [size_is(addr_len)] uint8 *addr;
uint32 addr_len;
- unistr *net_addr;
- } srvsvc_NetTransport0;
+ [string,charset(UTF16)] uint16 *net_addr;
+ } srvsvc_NetTransportInfo0;
+
+ /******************/
+ /* Function: 0x19 */
+ WERROR srvsvc_NetTransportAdd(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] uint32 level,
+ [in,switch_is(level)] srvsvc_NetTransportInfo info
+ );
typedef struct {
uint32 count;
- [size_is(count)] srvsvc_NetTransport0 *array;
+ [size_is(count)] srvsvc_NetTransportInfo0 *array;
} srvsvc_NetTransportCtr0;
typedef struct {
uint32 vcs;
- unistr *name;
- srvsvc_TransportAddress *addr;
+ [string,charset(UTF16)] uint16 *name;
+ [size_is(addr_len)] uint8 *addr;
uint32 addr_len;
- unistr *net_addr;
- unistr *domain;
- } srvsvc_NetTransport1;
+ [string,charset(UTF16)] uint16 *net_addr;
+ [string,charset(UTF16)] uint16 *domain;
+ } srvsvc_NetTransportInfo1;
typedef struct {
uint32 count;
- [size_is(count)] srvsvc_NetTransport1 *array;
+ [size_is(count)] srvsvc_NetTransportInfo1 *array;
} srvsvc_NetTransportCtr1;
typedef struct {
- uint32 dummy;
- } srvsvc_NetTransport2;
+ uint32 vcs;
+ [string,charset(UTF16)] uint16 *name;
+ [size_is(addr_len)] uint8 *addr;
+ uint32 addr_len;
+ [string,charset(UTF16)] uint16 *net_addr;
+ [string,charset(UTF16)] uint16 *domain;
+ uint32 unknown;
+ } srvsvc_NetTransportInfo2;
typedef struct {
uint32 count;
- [size_is(count)] srvsvc_NetTransport2 *array;
+ [size_is(count)] srvsvc_NetTransportInfo2 *array;
} srvsvc_NetTransportCtr2;
typedef struct {
- } srvsvc_NetTransportCtrDefault;
+ uint32 vcs;
+ [string,charset(UTF16)] uint16 *name;
+ [size_is(addr_len)] uint8 *addr;
+ uint32 addr_len;
+ [string,charset(UTF16)] uint16 *net_addr;
+ [string,charset(UTF16)] uint16 *domain;
+ uint32 unknown1;
+ uint32 unknown2;
+ uint8 unknown3[256];
+ } srvsvc_NetTransportInfo3;
- typedef [nodiscriminant,public] union {
- case(0) srvsvc_NetTransportCtr0 *ctr0;
- case(1) srvsvc_NetTransportCtr1 *ctr1;
- case(2) srvsvc_NetTransportCtr2 *ctr2;
- default srvsvc_NetTransportCtrDefault ctrDefault;
- } srvsvc_NetTransportSubCtr;
+ typedef struct {
+ uint32 count;
+ [size_is(count)] srvsvc_NetTransportInfo3 *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;
typedef struct {
uint32 level;
- uint32 level2;
- [switch_is(level)] srvsvc_NetTransportSubCtr subctr;
- } srvsvc_NetTransportCtr;
-
+ [switch_is(level)] srvsvc_NetTransportCtr ctr;
+ } srvsvc_NetTransportInfoCtr;
+
+ /******************/
+ /* Function: 0x1a */
WERROR srvsvc_NetTransportEnum(
- [in] unistr *server_unc,
- [in,out] srvsvc_NetTransportCtr ctr,
- [in] uint32 preferred_len,
- [out] uint32 total,
- [in,out] uint32 *resume_handle
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in,out,ref] srvsvc_NetTransportInfoCtr *transports,
+ [in] uint32 max_buffer,
+ [out,ref] uint32 *totalentries,
+ [in,out,unique] uint32 *resume_handle
);
/******************/
/* Function: 0x1b */
- NTSTATUS srvsvc_1b(
+ WERROR srvsvc_NetTransportDel(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] uint32 level,
+ [in] srvsvc_NetTransportInfo0 *info0
);
+/**************************/
+/* srvsvc_NetRemoteTOD */
+/**************************/
+ typedef struct {
+ uint32 elapsed; /* time(NULL) */
+ uint32 msecs; /* milliseconds till system reboot (uptime) */
+ uint32 hours;
+ uint32 mins;
+ uint32 secs;
+ uint32 hunds;
+ int32 timezone; /* in minutes */
+ uint32 tinterval; /* clock tick interval in 0.0001 second units; 310 on windows */
+ uint32 day;
+ uint32 month;
+ uint32 year;
+ uint32 weekday;
+ } srvsvc_NetRemoteTODInfo;
+
/******************/
/* Function: 0x1c */
- NTSTATUS srvsvc_NET_REMOTE_TOD(
+ WERROR srvsvc_NetRemoteTOD(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [out,ref] srvsvc_NetRemoteTODInfo **info
);
+/**************************/
+/* srvsvc_NetServiceBits */
+/**************************/
/******************/
/* Function: 0x1d */
- NTSTATUS srvsvc_1d(
+ WERROR srvsvc_NetSetServiceBits(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in,unique] [string,charset(UTF16)] uint16 *transport,
+ [in] uint32 servicebits,
+ [in] uint32 updateimmediately
);
+/**************************/
+/* srvsvc_NetPath */
+/**************************/
/******************/
/* Function: 0x1e */
- NTSTATUS srvsvc_1e(
+ WERROR srvsvc_NetPathType(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] [string,charset(UTF16)] uint16 path[],
+ [in] uint32 pathflags,
+ [out,ref] uint32 *pathtype
);
/******************/
/* Function: 0x1f */
- NTSTATUS srvsvc_1f(
+ WERROR srvsvc_NetPathCanonicalize(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] [string,charset(UTF16)] uint16 path[],
+ [out] [size_is(maxbuf)] uint8 can_path[],
+ [in] uint32 maxbuf,
+ [in] [string,charset(UTF16)] uint16 prefix[],
+ [in,out,ref] uint32 *pathtype,
+ [in] uint32 pathflags
);
/******************/
/* Function: 0x20 */
- NTSTATUS srvsvc_20(
+ WERROR srvsvc_NetPathCompare(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] [string,charset(UTF16)] uint16 path1[],
+ [in] [string,charset(UTF16)] uint16 path2[],
+ [in] uint32 pathtype,
+ [in] uint32 pathflags
);
+/**************************/
+/* srvsvc_NetName */
+/**************************/
/******************/
/* Function: 0x21 */
- NTSTATUS srvsvc_NET_NAME_VALIDATE(
+ WERROR srvsvc_NetNameValidate(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] [string,charset(UTF16)] uint16 name[],
+ [in] uint32 name_type,
+ [in] uint32 flags
);
/******************/
/* Function: 0x22 */
- NTSTATUS srvsvc_22(
+ [todo] WERROR srvsvc_NETRPRNAMECANONICALIZE(
);
/******************/
/* Function: 0x23 */
- NTSTATUS srvsvc_23(
+ WERROR srvsvc_NetPRNameCompare(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] [string,charset(UTF16)] uint16 name1[],
+ [in] [string,charset(UTF16)] uint16 name2[],
+ [in] uint32 name_type,
+ [in] uint32 flags
);
+/**************************/
+/* srvsvc_NetShare ... */
+/**************************/
/******************/
/* Function: 0x24 */
/* Note, there must be some way to return entries read vs
total entries ... */
WERROR srvsvc_NetShareEnum(
- [in] unistr *server_unc,
- [in] uint32 level,
- [in,out] srvsvc_NetShareCtr ctr,
- [in] uint32 preferred_len,
+ [in,unique] [string,charset(UTF16)] uint16 *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
+ [in,out,unique] uint32 *resume_handle
);
/******************/
/* Function: 0x25 */
- NTSTATUS srvsvc_25(
+ WERROR srvsvc_NetShareDelStart(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] [string,charset(UTF16)] uint16 share[],
+ [in] uint32 reserved,
+ [out,unique] policy_handle *hnd
);
/******************/
/* Function: 0x26 */
- NTSTATUS srvsvc_26(
+ WERROR srvsvc_NetShareDelCommit(
+ [in, out,unique] policy_handle *hnd
);
/******************/
/* Function: 0x27 */
- NTSTATUS srvsvc_NET_FILE_QUERY_SECDESC(
+ WERROR srvsvc_NetGetFileSecurity(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in,unique] [string,charset(UTF16)] uint16 *share,
+ [in] [string,charset(UTF16)] uint16 file[],
+ [in] security_secinfo securityinformation,
+ [out,ref] sec_desc_buf **sd_buf
);
/******************/
/* Function: 0x28 */
- NTSTATUS srvsvc_NET_FILE_SET_SECDESC(
+ WERROR srvsvc_NetSetFileSecurity(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in,unique] [string,charset(UTF16)] uint16 *share,
+ [in] [string,charset(UTF16)] uint16 file[],
+ [in] security_secinfo securityinformation,
+ [in,ref] sec_desc_buf *sd_buf
+ );
+
+
+
+ typedef [switch_type(uint32)] union {
+ [case(0)] srvsvc_NetTransportInfo0 info0;
+ [case(1)] srvsvc_NetTransportInfo1 info1;
+ [case(2)] srvsvc_NetTransportInfo2 info2;
+ [case(3)] srvsvc_NetTransportInfo3 info3;
+ } srvsvc_NetTransportInfo;
+
+ /******************/
+ /* Function: 0x29 */
+ WERROR srvsvc_NetServerTransportAddEx(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] uint32 level,
+ [in,switch_is(level)] srvsvc_NetTransportInfo info
+ );
+
+ /******************/
+ /* Function: 0x2a */
+ WERROR srvsvc_NetServerSetServiceBitsEx(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in,unique] [string,charset(UTF16)] uint16 *emulated_server_unc,
+ [in,unique] [string,charset(UTF16)] uint16 *transport,
+ [in] uint32 servicebitsofinterest,
+ [in] uint32 servicebits,
+ [in] uint32 updateimmediately
+ );
+
+ /******************/
+ /* Function: 0x2b */
+ [todo] WERROR srvsvc_NETRDFSGETVERSION(
+ );
+
+ /******************/
+ /* Function: 0x2c */
+ [todo] WERROR srvsvc_NETRDFSCREATELOCALPARTITION(
+ );
+
+ /******************/
+ /* Function: 0x2d */
+ [todo] WERROR srvsvc_NETRDFSDELETELOCALPARTITION(
+ );
+
+ /******************/
+ /* Function: 0x2e */
+ [todo] WERROR srvsvc_NETRDFSSETLOCALVOLUMESTATE(
+ );
+
+ /******************/
+ /* Function: 0x2f */
+ [todo] WERROR srvsvc_NETRDFSSETSERVERINFO(
+ );
+
+ /******************/
+ /* Function: 0x30 */
+ [todo] WERROR srvsvc_NETRDFSCREATEEXITPOINT(
+ );
+
+ /******************/
+ /* Function: 0x31 */
+ [todo] WERROR srvsvc_NETRDFSDELETEEXITPOINT(
+ );
+
+ /******************/
+ /* Function: 0x32 */
+ [todo] WERROR srvsvc_NETRDFSMODIFYPREFIX(
+ );
+
+ /******************/
+ /* Function: 0x33 */
+ [todo] WERROR srvsvc_NETRDFSFIXLOCALVOLUME(
+ );
+
+ /******************/
+ /* Function: 0x34 */
+ [todo] WERROR srvsvc_NETRDFSMANAGERREPORTSITEINFO(
+ );
+
+ /******************/
+ /* Function: 0x35 */
+ [todo] WERROR srvsvc_NETRSERVERTRANSPORTDELEX(
);
}