s4-srvsvc: merge srvsvc_NetFileGetInfo from s3 idl.
[ira/wip.git] / source4 / librpc / idl / srvsvc.idl
index d573e54721d1d4643140dec9b56f73f6fc9489f2..bb186e1a9472cc34f04be0da4001fe3c8748b870 100644 (file)
@@ -3,17 +3,17 @@
 /*
   srvsvc interface definitions
 */
+import "security.idl", "svcctl.idl";
 
 [ uuid("4b324fc8-1670-01d3-1278-5a47bf6ee188"),
   version(3.0),
   endpoint("ncacn_np:[\\pipe\\srvsvc]", "ncacn_ip_tcp:", "ncalrpc:"),
   pointer_default(unique),
-  pointer_default_top(unique),
-  helpstring("Server Service"),
-  depends(security,svcctl)
+  helpstring("Server Service")
 ] interface srvsvc
 {
-       declare bitmap svcctl_ServerType;
+       typedef bitmap svcctl_ServerType svcctl_ServerType;
+       typedef bitmap security_secinfo security_secinfo;
 
 /**************************/
 /* srvsvc_NetCharDev      */
        /******************/
        /* Function: 0x00 */
        WERROR srvsvc_NetCharDevEnum(
-               [in]   [string,charset(UTF16)] uint16 *server_unc, 
+               [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]   uint32 *resume_handle
+               [in,out,unique]   uint32 *resume_handle
                );
 
        /******************/
        /* Function: 0x01 */
        WERROR srvsvc_NetCharDevGetInfo(
-               [in]   [string,charset(UTF16)] uint16 *server_unc,
+               [in,unique] [string,charset(UTF16)] uint16 *server_unc,
                [in]   [string,charset(UTF16)] uint16 device_name[],
                [in]   uint32 level,
-               [out,switch_is(level)]   srvsvc_NetCharDevInfo info
+               [out,ref,switch_is(level)]   srvsvc_NetCharDevInfo *info
                );
 
        /******************/
        /* Function: 0x02 */
        WERROR srvsvc_NetCharDevControl(
-               [in]   [string,charset(UTF16)] uint16 *server_unc,
+               [in,unique] [string,charset(UTF16)] uint16 *server_unc,
                [in]   [string,charset(UTF16)] uint16 device_name[],
                [in]   uint32 opcode
                );
        /******************/
        /* Function: 0x03 */
        WERROR srvsvc_NetCharDevQEnum(
-               [in]   [string,charset(UTF16)] uint16 *server_unc,
-               [in]   [string,charset(UTF16)] uint16 *user,
+               [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]   uint32 *resume_handle
+               [in,out,unique]   uint32 *resume_handle
                );
 
        /******************/
        /* Function: 0x04 */
        WERROR srvsvc_NetCharDevQGetInfo(
-               [in]   [string,charset(UTF16)] uint16 *server_unc,
+               [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)]   srvsvc_NetCharDevQInfo info
+               [out,switch_is(level),ref]   srvsvc_NetCharDevQInfo *info
                );
 
        /******************/
        /* Function: 0x05 */
        WERROR srvsvc_NetCharDevQSetInfo(
-               [in]   [string,charset(UTF16)] uint16 *server_unc,
+               [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]   uint32 *parm_error
+               [in,out,unique]   uint32 *parm_error
                );
 
        /******************/
        /* Function: 0x06 */
        WERROR srvsvc_NetCharDevQPurge(
-               [in]   [string,charset(UTF16)] uint16 *server_unc,
+               [in,unique] [string,charset(UTF16)] uint16 *server_unc,
                [in]   [string,charset(UTF16)] uint16 queue_name[]
                );
 
        /******************/
        /* Function: 0x07 */
        WERROR srvsvc_NetCharDevQPurgeSelf(
-               [in]   [string,charset(UTF16)] uint16 *server_unc,
+               [in,unique] [string,charset(UTF16)] uint16 *server_unc,
                [in]   [string,charset(UTF16)] uint16 queue_name[],
                [in]   [string,charset(UTF16)] uint16 computer_name[]
                );
                [default] ;
        } srvsvc_NetConnCtr;
 
+       typedef struct {
+               uint32 level;
+               [switch_is(level)] srvsvc_NetConnCtr ctr;
+       } srvsvc_NetConnInfoCtr;
+
        /******************/
        /* Function: 0x08 */
        WERROR srvsvc_NetConnEnum(
-               [in]   [string,charset(UTF16)] uint16 *server_unc,
-               [in]   [string,charset(UTF16)] uint16 *path,
+               [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]   uint32 *resume_handle
+               [in,out,unique]   uint32 *resume_handle
                );
 
 /**************************/
                [default] ;
        } srvsvc_NetFileCtr;
 
+       typedef struct {
+               uint32 level;
+               [switch_is(level)] srvsvc_NetFileCtr ctr;
+       } srvsvc_NetFileInfoCtr;
+
        /******************/
        /* Function: 0x09 */
        WERROR srvsvc_NetFileEnum(
-               [in]   [string,charset(UTF16)] uint16 *server_unc,
-               [in]   [string,charset(UTF16)] uint16 *path,
-               [in]   [string,charset(UTF16)] uint16 *user,
+               [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]   uint32 *resume_handle
+               [in,out,unique]   uint32 *resume_handle
                );
 
        /******************/
        /* Function: 0x0a */
        WERROR srvsvc_NetFileGetInfo(
-               [in]   [string,charset(UTF16)] uint16 *server_unc,
+               [in,unique]   [string,charset(UTF16)] uint16 *server_unc,
                [in]   uint32 fid,
                [in]   uint32 level,
-               [out,switch_is(level)]   srvsvc_NetFileInfo info
+               [out,switch_is(level),ref]   srvsvc_NetFileInfo *info
                );
 
        /******************/
        /* Function: 0x0b */
        WERROR srvsvc_NetFileClose(
-               [in]   [string,charset(UTF16)] uint16 *server_unc,
+               [in,unique]   [string,charset(UTF16)] uint16 *server_unc,
                [in]   uint32 fid       
                );
 
 
        /******************/
        /* Function: 0x0c */
+
+       typedef struct {
+               uint32 level;
+               [switch_is(level)] srvsvc_NetSessCtr ctr;
+       } srvsvc_NetSessInfoCtr;
+
        WERROR srvsvc_NetSessEnum(
-               [in]   [string,charset(UTF16)] uint16 *server_unc,
-               [in]   [string,charset(UTF16)] uint16 *client,
-               [in]   [string,charset(UTF16)] uint16 *user,
+               [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]   uint32 *resume_handle
+               [in,out,unique]   uint32 *resume_handle
                );
 
        /******************/
        /* Function: 0x0d */
        WERROR srvsvc_NetSessDel(
-               [in]   [string,charset(UTF16)] uint16 *server_unc,
-               [in]   [string,charset(UTF16)] uint16 *client,
-               [in]   [string,charset(UTF16)] uint16 *user
+               [in,unique]   [string,charset(UTF16)] uint16 *server_unc,
+               [in,unique]   [string,charset(UTF16)] uint16 *client,
+               [in,unique]   [string,charset(UTF16)] uint16 *user
                );
 
 /**************************/
                srvsvc_ShareType type;
                [string,charset(UTF16)] uint16 *comment;
                uint32 permissions;
-               int32 max_users;
+               uint32 max_users;
                uint32 current_users;
                [string,charset(UTF16)] uint16 *path;
                [string,charset(UTF16)] uint16 *password;
-               uint32 unknown;
-               [subcontext(4)] security_descriptor *sd;
+               sec_desc_buf sd_buf;
        } srvsvc_NetShareInfo502;
 
        typedef struct {
                [size_is(count)] srvsvc_NetShareInfo1004 *array;
        } srvsvc_NetShareCtr1004;
 
+       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 dfs_flags;
+               NetShareInfo1005Flags dfs_flags;
        } srvsvc_NetShareInfo1005;
 
        typedef struct {
        } srvsvc_NetShareCtr1005;
 
        typedef struct {
-               int32 max_users;
+               uint32 max_users;
        } srvsvc_NetShareInfo1006;
 
        typedef struct {
                [size_is(count)] srvsvc_NetShareInfo1007 *array;
        } srvsvc_NetShareCtr1007;
 
-       typedef struct {
-               uint32 reserved;
-               [subcontext(4)] security_descriptor *sd;
-       } srvsvc_NetShareInfo1501;
-
        typedef struct {
                uint32 count;
-               [size_is(count)] srvsvc_NetShareInfo1501 *array;
+               [size_is(count)] sec_desc_buf *array;
        } srvsvc_NetShareCtr1501;
 
        typedef union {
                [case(1005)] srvsvc_NetShareInfo1005 *info1005;
                [case(1006)] srvsvc_NetShareInfo1006 *info1006;
                [case(1007)] srvsvc_NetShareInfo1007 *info1007;
-               [case(1501)] srvsvc_NetShareInfo1501 *info1501;
+               [case(1501)] sec_desc_buf *info1501;
                [default] ;
        } srvsvc_NetShareInfo;
 
                [default] ;
        } srvsvc_NetShareCtr;
 
+       typedef struct {
+               uint32 level;
+               [switch_is(level)] srvsvc_NetShareCtr ctr;
+       } srvsvc_NetShareInfoCtr;
+
        /******************/
        /* Function: 0x0e */
        WERROR srvsvc_NetShareAdd(
-               [in]   [string,charset(UTF16)] uint16 *server_unc,
+               [in,unique]   [string,charset(UTF16)] uint16 *server_unc,
                [in]   uint32 level,
-               [in,switch_is(level)] srvsvc_NetShareInfo info,
-               [in,out]   uint32 *parm_error
+               [in,ref,switch_is(level)] srvsvc_NetShareInfo *info,
+               [in,out,unique]   uint32 *parm_error
                );
 
        /******************/
        /* Function: 0x0f */
        WERROR srvsvc_NetShareEnumAll (
-               [in]   [string,charset(UTF16)] uint16 *server_unc,
+               [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: 0x10 */
        WERROR srvsvc_NetShareGetInfo(
-               [in]   [string,charset(UTF16)] uint16 *server_unc,
+               [in,unique]   [string,charset(UTF16)] uint16 *server_unc,
                [in]   [string,charset(UTF16)] uint16 share_name[],
                [in]   uint32 level,
-               [out,switch_is(level)] srvsvc_NetShareInfo info
+               [out,ref,switch_is(level)] srvsvc_NetShareInfo *info
                );
 
        /******************/
        /* Function: 0x11 */
        WERROR srvsvc_NetShareSetInfo(
-               [in]   [string,charset(UTF16)] uint16 *server_unc,
+               [in,unique]   [string,charset(UTF16)] uint16 *server_unc,
                [in]   [string,charset(UTF16)] uint16 share_name[],
                [in]   uint32 level,
-               [in,switch_is(level)] srvsvc_NetShareInfo info,
-               [in,out]   uint32 *parm_error
+               [in,ref,switch_is(level)] srvsvc_NetShareInfo *info,
+               [in,out,unique]   uint32 *parm_error
                );
 
        /******************/
        /* Function: 0x12 */
        WERROR srvsvc_NetShareDel(
-               [in]   [string,charset(UTF16)] uint16 *server_unc,
+               [in,unique]   [string,charset(UTF16)] uint16 *server_unc,
                [in]   [string,charset(UTF16)] uint16 share_name[],
                [in]   uint32 reserved
                );
        /******************/
        /* Function: 0x13 */
        WERROR srvsvc_NetShareDelSticky(
-               [in]   [string,charset(UTF16)] uint16 *server_unc,
+               [in,unique]   [string,charset(UTF16)] uint16 *server_unc,
                [in]   [string,charset(UTF16)] uint16 share_name[],
                [in]   uint32 reserved
                );
        /******************/
        /* Function: 0x14 */
        WERROR srvsvc_NetShareCheck(
-               [in]   [string,charset(UTF16)] uint16 *server_unc,
+               [in,unique]   [string,charset(UTF16)] uint16 *server_unc,
                [in]   [string,charset(UTF16)] uint16 device_name[],
-               [out]  srvsvc_ShareType type
+               [out,ref]  srvsvc_ShareType *type
                );
 
 /**************************/
 /* srvsvc_NetSrv          */
 /**************************/
-       typedef [public] enum {
+       typedef [public,v1_enum] enum {
                PLATFORM_ID_DOS = 300,
                PLATFORM_ID_OS2 = 400,
                PLATFORM_ID_NT  = 500,
        typedef struct {
                srvsvc_PlatformId platform_id;
                [string,charset(UTF16)] uint16 *server_name;
-               uint32 ver_major;
-               uint32 ver_minor;
+               uint32 version_major;
+               uint32 version_minor;
                svcctl_ServerType server_type;
                [string,charset(UTF16)] uint16 *comment;
                uint32 users;
                uint32 hidden;
                uint32 announce;
                uint32 anndelta;
-               uint32 licences;
+               uint32 licenses;
                [string,charset(UTF16)] uint16 *userpath;
        } srvsvc_NetSrvInfo102;
 
        /******************/
        /* Function: 0x15 */
        WERROR srvsvc_NetSrvGetInfo(
-               [in]   [string,charset(UTF16)] uint16 *server_unc,
+               [in,unique]   [string,charset(UTF16)] uint16 *server_unc,
                [in]   uint32 level,
-               [out,switch_is(level)] srvsvc_NetSrvInfo info
+               [out,ref,switch_is(level)] srvsvc_NetSrvInfo *info
                );
 
        /******************/
        /* Function: 0x16 */
        WERROR srvsvc_NetSrvSetInfo(
-               [in]   [string,charset(UTF16)] uint16 *server_unc,
+               [in,unique]   [string,charset(UTF16)] uint16 *server_unc,
                [in]   uint32 level,
-               [in,switch_is(level)] srvsvc_NetSrvInfo info,
-               [in,out]   uint32 *parm_error
+               [in,ref,switch_is(level)] srvsvc_NetSrvInfo *info,
+               [in,out,unique]   uint32 *parm_error
                );
 
 /**************************/
 /* srvsvc_NetDisk         */
 /**************************/
        typedef struct {
-               [string,charset(UTF16)] uint16 *disc;
+               /*
+                * 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 *discs;
+               [size_is(count), length_is(count)] srvsvc_NetDiskInfo0 *disks;
        } srvsvc_NetDiskInfo;
 
        /******************/
        /* Function: 0x17 */
        WERROR srvsvc_NetDiskEnum(
-               [in]      [string,charset(UTF16)] uint16 *server_unc,
+               [in,unique]      [string,charset(UTF16)] uint16 *server_unc,
                [in]      uint32 level,
-               [in,out]  srvsvc_NetDiskInfo disks,
+               [in,out]  srvsvc_NetDiskInfo info,
                [in]      uint32 maxlen,
                [out]     uint32 totalentries,
-               [in,out]  uint32 *resume_handle
+               [in,out,unique]  uint32 *resume_handle
                );
 
 /**************************/
        /******************/
        /* Function: 0x18 */
        WERROR srvsvc_NetServerStatisticsGet(
-               [in]      [string,charset(UTF16)] uint16 *server_unc,
-               [in]      [string,charset(UTF16)] uint16 *service,
+               [in,unique]      [string,charset(UTF16)] uint16 *server_unc,
+               [in,unique]      [string,charset(UTF16)] uint16 *service,
                [in]      uint32 level,
                [in]      uint32 options,
-               [out]     srvsvc_Statistics stat
+               [out,ref]     srvsvc_Statistics **stats
                );
 
 /**************************/
        /******************/
        /* Function: 0x19 */
        WERROR srvsvc_NetTransportAdd(
-               [in]   [string,charset(UTF16)] uint16 *server_unc,
+               [in,unique]   [string,charset(UTF16)] uint16 *server_unc,
                [in] uint32 level,
                [in,switch_is(level)]   srvsvc_NetTransportInfo info
                );
                [default];
        } srvsvc_NetTransportCtr;
 
+       typedef struct {
+               uint32 level;
+               [switch_is(level)] srvsvc_NetTransportCtr ctr;
+       } srvsvc_NetTransportInfoCtr;
+
        /******************/
        /* Function: 0x1a */
        WERROR srvsvc_NetTransportEnum(
-               [in]   [string,charset(UTF16)] uint16 *server_unc,
-               [in,out] uint32 level,
-               [in,out,switch_is(level)]   srvsvc_NetTransportCtr transports,
+               [in,unique]   [string,charset(UTF16)] uint16 *server_unc,
+               [in,out,ref] srvsvc_NetTransportInfoCtr *transports,
                [in]   uint32 max_buffer,
-               [out]   uint32 totalentries,
-               [in,out]   uint32 *resume_handle
+               [out,ref]   uint32 *totalentries,
+               [in,out,unique]   uint32 *resume_handle
                );
 
        /******************/
        /* Function: 0x1b */
        WERROR srvsvc_NetTransportDel(
-               [in]   [string,charset(UTF16)] uint16 *server_unc,
-               [in]    uint32 unknown,
-               [in]    srvsvc_NetTransportInfo0 transport
+               [in,unique]   [string,charset(UTF16)] uint16 *server_unc,
+               [in]    uint32 level,
+               [in]    srvsvc_NetTransportInfo0 *info0
                );
 
 /**************************/
        /******************/
        /* Function: 0x1c */
        WERROR srvsvc_NetRemoteTOD(
-               [in]   [string,charset(UTF16)] uint16 *server_unc,
-               [out]   srvsvc_NetRemoteTODInfo *info
+               [in,unique]   [string,charset(UTF16)] uint16 *server_unc,
+               [out,ref]     srvsvc_NetRemoteTODInfo **info
                );
 
 /**************************/
        /******************/
        /* Function: 0x1d */
        WERROR srvsvc_NetSetServiceBits(
-               [in]   [string,charset(UTF16)] uint16 *server_unc,
-               [in]   [string,charset(UTF16)] uint16 *transport,
+               [in,unique]   [string,charset(UTF16)] uint16 *server_unc,
+               [in,unique]   [string,charset(UTF16)] uint16 *transport,
                [in]   uint32 servicebits,
                [in]   uint32 updateimmediately
                );
        /******************/
        /* Function: 0x1e */
        WERROR srvsvc_NetPathType(
-               [in]   [string,charset(UTF16)] uint16 *server_unc,
+               [in,unique]   [string,charset(UTF16)] uint16 *server_unc,
                [in]   [string,charset(UTF16)] uint16 path[],
                [in]   uint32 pathflags,
-               [out]   uint32 pathtype
+               [out,ref]   uint32 *pathtype
                );
 
        /******************/
        /* Function: 0x1f */
        WERROR srvsvc_NetPathCanonicalize(
-               [in]   [string,charset(UTF16)] uint16 *server_unc,
+               [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] uint32 pathtype,
+               [in,out,ref] uint32 *pathtype,
                [in]    uint32 pathflags
                );
 
        /******************/
        /* Function: 0x20 */
        WERROR srvsvc_NetPathCompare(
-               [in]   [string,charset(UTF16)] uint16 *server_unc,
+               [in,unique]   [string,charset(UTF16)] uint16 *server_unc,
                [in]   [string,charset(UTF16)] uint16 path1[],
                [in]   [string,charset(UTF16)] uint16 path2[],
                [in]    uint32 pathtype,
        /******************/
        /* Function: 0x21 */
        WERROR srvsvc_NetNameValidate(
-               [in]   [string,charset(UTF16)] uint16 *server_unc,
-               [in]   [string,charset(UTF16)] uint16 path[],
-               [in]    uint32 pathtype,
-               [in]    uint32 pathflags
+               [in,unique]   [string,charset(UTF16)] uint16 *server_unc,
+               [in]   [string,charset(UTF16)] uint16 name[],
+               [in]    uint32 name_type,
+               [in]    uint32 flags
                );
 
        /******************/
        /* Function: 0x22 */
-       WERROR srvsvc_NETRPRNAMECANONICALIZE(
+       [todo] WERROR srvsvc_NETRPRNAMECANONICALIZE(
                );
 
        /******************/
        /* Function: 0x23 */
        WERROR srvsvc_NetPRNameCompare(
-               [in]   [string,charset(UTF16)] uint16 *server_unc,
-               [in]   [string,charset(UTF16)] uint16 path1[],
-               [in]   [string,charset(UTF16)] uint16 path2[],
-               [in]    uint32 pathtype,
-               [in]    uint32 pathflags
+               [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
                );
 
 /**************************/
        /* Note, there must be some way to return entries read vs 
           total entries ... */
        WERROR srvsvc_NetShareEnum(
-               [in]       [string,charset(UTF16)] uint16 *server_unc,
+               [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 */
        WERROR srvsvc_NetShareDelStart(
-               [in]       [string,charset(UTF16)] uint16 *server_unc,
+               [in,unique]       [string,charset(UTF16)] uint16 *server_unc,
                [in]       [string,charset(UTF16)] uint16 share[],
                [in]       uint32 reserved,
-               [out] policy_handle *hnd
+               [out,unique] policy_handle *hnd
                );
 
        /******************/
        /* Function: 0x26 */
        WERROR srvsvc_NetShareDelCommit(
-               [in, out] policy_handle *hnd
+               [in, out,unique] policy_handle *hnd
                );
 
        /******************/
        /* Function: 0x27 */
        WERROR srvsvc_NetGetFileSecurity(
-               [in]       [string,charset(UTF16)] uint16 *server_unc,
-               [in]       [string,charset(UTF16)] uint16 *share,
+               [in,unique]       [string,charset(UTF16)] uint16 *server_unc,
+               [in,unique]       [string,charset(UTF16)] uint16 *share,
                [in]       [string,charset(UTF16)] uint16 file[],
-               [in]       uint32 securityinformation,
-               [out, subcontext(4)] security_descriptor *sd
+               [in]       security_secinfo securityinformation,
+               [out,ref]  sec_desc_buf **sd_buf
                );
 
        /******************/
        /* Function: 0x28 */
        WERROR srvsvc_NetSetFileSecurity(
-               [in]       [string,charset(UTF16)] uint16 *server_unc,
-               [in]       [string,charset(UTF16)] uint16 *share,
+               [in,unique]       [string,charset(UTF16)] uint16 *server_unc,
+               [in,unique]       [string,charset(UTF16)] uint16 *share,
                [in]       [string,charset(UTF16)] uint16 file[],
-               [in]       uint32 securityinformation,
-               [in, subcontext(4)] security_descriptor sd
+               [in]       security_secinfo securityinformation,
+               [in,ref]   sec_desc_buf *sd_buf
                );
 
 
        /******************/
        /* Function: 0x29 */
        WERROR srvsvc_NetServerTransportAddEx(
-               [in]   [string,charset(UTF16)] uint16 *server_unc,
+               [in,unique]   [string,charset(UTF16)] uint16 *server_unc,
                [in] uint32 level,
                [in,switch_is(level)]   srvsvc_NetTransportInfo info
                );
        /******************/
        /* Function: 0x2a */
        WERROR srvsvc_NetServerSetServiceBitsEx(
-               [in]   [string,charset(UTF16)] uint16 *server_unc,
-               [in]   [string,charset(UTF16)] uint16 *emulated_server_unc,
-               [in]   [string,charset(UTF16)] uint16 *transport,
+               [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 */
-       WERROR srvsvc_NETRDFSGETVERSION(
+       [todo] WERROR srvsvc_NETRDFSGETVERSION(
                );
 
        /******************/
        /* Function: 0x2c */
-       WERROR srvsvc_NETRDFSCREATELOCALPARTITION(
+       [todo] WERROR srvsvc_NETRDFSCREATELOCALPARTITION(
                );
 
        /******************/
        /* Function: 0x2d */
-       WERROR srvsvc_NETRDFSDELETELOCALPARTITION(
+       [todo] WERROR srvsvc_NETRDFSDELETELOCALPARTITION(
                );
 
        /******************/
        /* Function: 0x2e */
-       WERROR srvsvc_NETRDFSSETLOCALVOLUMESTATE(
+       [todo] WERROR srvsvc_NETRDFSSETLOCALVOLUMESTATE(
                );
 
        /******************/
        /* Function: 0x2f */
-       WERROR srvsvc_NETRDFSSETSERVERINFO(
+       [todo] WERROR srvsvc_NETRDFSSETSERVERINFO(
                );
 
        /******************/
        /* Function: 0x30 */
-       WERROR srvsvc_NETRDFSCREATEEXITPOINT(
+       [todo] WERROR srvsvc_NETRDFSCREATEEXITPOINT(
                );
 
        /******************/
        /* Function: 0x31 */
-       WERROR srvsvc_NETRDFSDELETEEXITPOINT(
+       [todo] WERROR srvsvc_NETRDFSDELETEEXITPOINT(
                );
 
        /******************/
        /* Function: 0x32 */
-       WERROR srvsvc_NETRDFSMODIFYPREFIX(
+       [todo] WERROR srvsvc_NETRDFSMODIFYPREFIX(
                );
 
        /******************/
        /* Function: 0x33 */
-       WERROR srvsvc_NETRDFSFIXLOCALVOLUME(
+       [todo] WERROR srvsvc_NETRDFSFIXLOCALVOLUME(
                );
 
        /******************/
        /* Function: 0x34 */
-       WERROR srvsvc_NETRDFSMANAGERREPORTSITEINFO(
+       [todo] WERROR srvsvc_NETRDFSMANAGERREPORTSITEINFO(
                );
 
        /******************/
        /* Function: 0x35 */
-       WERROR srvsvc_NETRSERVERTRANSPORTDELEX(
+       [todo] WERROR srvsvc_NETRSERVERTRANSPORTDELEX(
                );
 }