Merge branch 'v4-0-test' of git://git.samba.org/samba into 4-0-abartlet
authorAndrew Bartlett <abartlet@samba.org>
Mon, 4 Feb 2008 22:16:37 +0000 (09:16 +1100)
committerAndrew Bartlett <abartlet@samba.org>
Mon, 4 Feb 2008 22:16:37 +0000 (09:16 +1100)
source/librpc/idl/netlogon.idl
source/librpc/idl/samr.idl
source/librpc/idl/spoolss.idl
source/librpc/idl/srvsvc.idl
source/librpc/idl/svcctl.idl
source/librpc/idl/winreg.idl
source/librpc/idl/wkssvc.idl
source/pidl/lib/Parse/Pidl/Compat.pm
source/pidl/lib/Parse/Pidl/NDR.pm
source/pidl/tests/ndr_compat.pl

index 6df8bfd1a4c4f00c299cdc3f1f38f52444c8f897..d06c2acdd4aaf6918d22f7c7b59cb07bb489305f 100644 (file)
@@ -12,8 +12,7 @@ import "lsa.idl", "samr.idl", "security.idl", "nbt.idl";
   uuid("12345678-1234-abcd-ef00-01234567cffb"),
   version(1.0),
   endpoint("ncacn_np:[\\pipe\\netlogon]","ncacn_ip_tcp:","ncalrpc:"),
-  pointer_default(unique),
-  pointer_default_top(unique)
+  pointer_default(unique)
 ]
 
 interface netlogon
@@ -44,10 +43,10 @@ interface netlogon
        } netr_UasInfo;
 
        WERROR netr_LogonUasLogon(
-               [in]   [string,charset(UTF16)] uint16 *server_name,
+               [in,unique] [string,charset(UTF16)] uint16 *server_name,
                [in]   [string,charset(UTF16)] uint16 account_name[],
                [in]   [string,charset(UTF16)] uint16 workstation[],
-               [out netr_UasInfo *info
+               [out,unique] netr_UasInfo *info
                );
 
 
@@ -60,7 +59,7 @@ interface netlogon
        } netr_UasLogoffInfo;
 
        WERROR netr_LogonUasLogoff(
-               [in] [string,charset(UTF16)] uint16 *server_name,
+               [in,unique] [string,charset(UTF16)] uint16 *server_name,
                [in] [string,charset(UTF16)] uint16 account_name[],
                [in] [string,charset(UTF16)] uint16 workstation[],
                [out] netr_UasLogoffInfo info
@@ -240,10 +239,10 @@ interface netlogon
        } netr_Authenticator;
 
        NTSTATUS netr_LogonSamLogon(
-               [in] [string,charset(UTF16)] uint16 *server_name,
-               [in] [string,charset(UTF16)] uint16 *computer_name,
-               [in] netr_Authenticator *credential,
-               [in][out] netr_Authenticator *return_authenticator,
+               [in,unique] [string,charset(UTF16)] uint16 *server_name,
+               [in,unique] [string,charset(UTF16)] uint16 *computer_name,
+               [in,unique] netr_Authenticator *credential,
+               [in,out,unique] netr_Authenticator *return_authenticator,
                [in]  uint16 logon_level,
                [in]  [switch_is(logon_level)] netr_LogonLevel logon,
                [in]  uint16 validation_level,
@@ -256,10 +255,10 @@ interface netlogon
        /* Function 0x03 */
 
        NTSTATUS netr_LogonSamLogoff(
-               [in] [string,charset(UTF16)] uint16 *server_name,
-               [in] [string,charset(UTF16)] uint16 *computer_name,
-               [in]      netr_Authenticator *credential,
-               [in][out] netr_Authenticator *return_authenticator,
+               [in,unique] [string,charset(UTF16)] uint16 *server_name,
+               [in,unique] [string,charset(UTF16)] uint16 *computer_name,
+               [in,unique] netr_Authenticator *credential,
+               [in,out,unique] netr_Authenticator *return_authenticator,
                [in] uint16 logon_level,
                [in] [switch_is(logon_level)] netr_LogonLevel logon
                );
@@ -270,7 +269,7 @@ interface netlogon
        /* Function 0x04 */
 
        [public] NTSTATUS netr_ServerReqChallenge(
-               [in,string,charset(UTF16)] uint16 *server_name,
+               [in,unique,string,charset(UTF16)] uint16 *server_name,
                [in,string,charset(UTF16)] uint16 computer_name[],
                [in,out,ref] netr_Credential *credentials
                );
@@ -282,7 +281,7 @@ interface netlogon
        typedef enum netr_SchannelType netr_SchannelType;
 
        NTSTATUS netr_ServerAuthenticate(
-               [in,string,charset(UTF16)] uint16 *server_name,
+               [in,unique,string,charset(UTF16)] uint16 *server_name,
                [in,string,charset(UTF16)] uint16 account_name[],
                [in]                       netr_SchannelType secure_channel_type,
                [in,string,charset(UTF16)] uint16 computer_name[],
@@ -294,7 +293,7 @@ interface netlogon
        /* Function 0x06 */
 
        NTSTATUS netr_ServerPasswordSet(
-               [in [string,charset(UTF16)] uint16 *server_name,
+               [in,unique] [string,charset(UTF16)] uint16 *server_name,
                [in]  [string,charset(UTF16)] uint16 account_name[],
                [in]  netr_SchannelType secure_channel_type,
                [in]  [string,charset(UTF16)] uint16 computer_name[],
@@ -685,7 +684,7 @@ interface netlogon
                [in]      netr_SamDatabaseID database_id,
                [in,out]  udlong sequence_num,
                [in]      uint32 preferredmaximumlength,
-               [out]     netr_DELTA_ENUM_ARRAY *delta_enum_array
+               [out,unique] netr_DELTA_ENUM_ARRAY *delta_enum_array
                );
 
 
@@ -700,7 +699,7 @@ interface netlogon
                [in]     netr_SamDatabaseID database_id,
                [in,out] uint32 sync_context,
                [in]     uint32 preferredmaximumlength,
-               [out]    netr_DELTA_ENUM_ARRAY *delta_enum_array
+               [out,unique] netr_DELTA_ENUM_ARRAY *delta_enum_array
                );
 
 
@@ -720,7 +719,7 @@ interface netlogon
        } netr_AccountBuffer;
 
        NTSTATUS netr_AccountDeltas(
-               [in]     [string,charset(UTF16)] uint16 *logon_server,
+               [in,unique] [string,charset(UTF16)] uint16 *logon_server,
                [in]     [string,charset(UTF16)] uint16 computername[],
                [in]     netr_Authenticator credential,
                [in,out] netr_Authenticator return_authenticator,
@@ -739,7 +738,7 @@ interface netlogon
        /* Function 0x0A */
 
        NTSTATUS netr_AccountSync(
-               [in]      [string,charset(UTF16)] uint16 *logon_server,
+               [in,unique] [string,charset(UTF16)] uint16 *logon_server,
                [in]      [string,charset(UTF16)] uint16 computername[],
                [in]      netr_Authenticator credential,
                [in,out]  netr_Authenticator return_authenticator,
@@ -759,8 +758,8 @@ interface netlogon
 
        WERROR netr_GetDcName(
                [in]  [string,charset(UTF16)] uint16 logon_server[],
-               [in [string,charset(UTF16)] uint16 *domainname,
-               [out] [string,charset(UTF16)] uint16 *dcname
+               [in,unique] [string,charset(UTF16)] uint16 *domainname,
+               [out,unique] [string,charset(UTF16)] uint16 *dcname
                );
 
        /*****************/
@@ -803,7 +802,7 @@ interface netlogon
        } netr_LogonControlCode;
 
        WERROR netr_LogonControl(
-               [in]   [string,charset(UTF16)] uint16 *logon_server,
+               [in,unique] [string,charset(UTF16)] uint16 *logon_server,
                [in]   netr_LogonControlCode function_code,
                [in]   uint32 level,
                [out,switch_is(level)]  netr_CONTROL_QUERY_INFORMATION info
@@ -814,9 +813,9 @@ interface netlogon
        /* Function 0x0D */
 
        WERROR netr_GetAnyDCName(
-               [in [string,charset(UTF16)] uint16 *logon_server,
-               [in [string,charset(UTF16)] uint16 *domainname,
-               [out] [string,charset(UTF16)] uint16 *dcname
+               [in,unique] [string,charset(UTF16)] uint16 *logon_server,
+               [in,unique] [string,charset(UTF16)] uint16 *domainname,
+               [out,unique] [string,charset(UTF16)] uint16 *dcname
                );
 
 
@@ -831,7 +830,7 @@ interface netlogon
        } netr_CONTROL_DATA_INFORMATION;
 
        WERROR netr_LogonControl2(
-               [in]    [string,charset(UTF16)] uint16 *logon_server,
+               [in,unique] [string,charset(UTF16)] uint16 *logon_server,
                [in]    uint32 function_code,
                [in]    uint32 level,
                [in][switch_is(function_code)] netr_CONTROL_DATA_INFORMATION  data,
@@ -850,7 +849,7 @@ interface netlogon
        /* Function 0x0F */
 
        NTSTATUS netr_ServerAuthenticate2(
-               [in]         [string,charset(UTF16)] uint16 *server_name,
+               [in,unique]  [string,charset(UTF16)] uint16 *server_name,
                [in]         [string,charset(UTF16)] uint16 account_name[],
                [in]         netr_SchannelType secure_channel_type,
                [in]         [string,charset(UTF16)] uint16 computer_name[],
@@ -871,7 +870,7 @@ interface netlogon
                [in]     uint16 restart_state,
                [in,out] uint32 sync_context,
                [in]     uint32 preferredmaximumlength,
-               [out]    netr_DELTA_ENUM_ARRAY *delta_enum_array
+               [out,unique] netr_DELTA_ENUM_ARRAY *delta_enum_array
                );
 
 
@@ -885,9 +884,9 @@ interface netlogon
                [in]     [string,charset(UTF16)] uint16 computername[],
                [in]     netr_Authenticator credential,
                [in,out] netr_Authenticator return_authenticator,
-               [in][size_is(change_log_entry_size)] uint8 *change_log_entry,
+               [in,unique][size_is(change_log_entry_size)] uint8 *change_log_entry,
                [in]     uint32 change_log_entry_size,
-               [out]    netr_DELTA_ENUM_ARRAY *delta_enum_array
+               [out,unique]    netr_DELTA_ENUM_ARRAY *delta_enum_array
                );
 
 
@@ -895,7 +894,7 @@ interface netlogon
        /* Function 0x12 */
 
        WERROR netr_LogonControl2Ex(
-               [in]   [string,charset(UTF16)] uint16 *logon_server,
+               [in,unique] [string,charset(UTF16)] uint16 *logon_server,
                [in]   uint32 function_code,
                [in]   uint32 level,
                [in][switch_is(function_code)] netr_CONTROL_DATA_INFORMATION  data,
@@ -910,7 +909,7 @@ interface netlogon
        } netr_Blob;
 
        WERROR netr_NetrEnumerateTrustedDomains(
-               [in] [string,charset(UTF16)] uint16 *server_name,
+               [in,unique] [string,charset(UTF16)] uint16 *server_name,
                [out,ref] netr_Blob *trusted_domains_blob
                );
 
@@ -974,12 +973,12 @@ interface netlogon
        } netr_DsRGetDCNameInfo;
 
        WERROR netr_DsRGetDCName(
-               [in] [string,charset(UTF16)] uint16 *server_unc,
-               [in] [string,charset(UTF16)] uint16 *domain_name,
-               [in] GUID *domain_guid,
-               [in] GUID *site_guid,
+               [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+               [in,unique] [string,charset(UTF16)] uint16 *domain_name,
+               [in,unique] GUID *domain_guid,
+               [in,unique] GUID *site_guid,
                [in] netr_DsRGetDCName_flags flags,
-               [out] netr_DsRGetDCNameInfo *info
+               [out,unique] netr_DsRGetDCNameInfo *info
                );
 
        /*****************/
@@ -993,8 +992,8 @@ interface netlogon
        /****************/
        /* Function 0x17 */
        WERROR netr_LogonGetTrustRid(
-               [in] [string,charset(UTF16)] uint16 *server_name,
-               [in] [string,charset(UTF16)] uint16 *domain_name,
+               [in,unique] [string,charset(UTF16)] uint16 *server_name,
+               [in,unique] [string,charset(UTF16)] uint16 *domain_name,
                [out,ref] uint32 *rid
        );
 
@@ -1009,7 +1008,7 @@ interface netlogon
        /****************/
        /* Function 0x1a */
        [public] NTSTATUS netr_ServerAuthenticate3(
-               [in]         [string,charset(UTF16)] uint16 *server_name,
+               [in,unique]         [string,charset(UTF16)] uint16 *server_name,
                [in]         [string,charset(UTF16)] uint16 account_name[],
                [in]         netr_SchannelType secure_channel_type,
                [in]         [string,charset(UTF16)] uint16 computer_name[],
@@ -1022,19 +1021,19 @@ interface netlogon
        /* Function 0x1b */
 
        WERROR netr_DsRGetDCNameEx(
-               [in] [string,charset(UTF16)] uint16 *server_unc,
-               [in] [string,charset(UTF16)] uint16 *domain_name,
-               [in] GUID *domain_guid,
-               [in] [string,charset(UTF16)] uint16 *site_name,
+               [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+               [in,unique] [string,charset(UTF16)] uint16 *domain_name,
+               [in,unique] GUID *domain_guid,
+               [in,unique] [string,charset(UTF16)] uint16 *site_name,
                [in] netr_DsRGetDCName_flags flags,
-               [out] netr_DsRGetDCNameInfo *info
+               [out,unique] netr_DsRGetDCNameInfo *info
                );
 
        /****************/
        /* Function 0x1c */
        WERROR netr_DsRGetSiteName(
-               [in] [string,charset(UTF16)] uint16 *computer_name,
-               [out] [string,charset(UTF16)] uint16 *site
+               [in,unique] [string,charset(UTF16)] uint16 *computer_name,
+               [out,unique] [string,charset(UTF16)] uint16 *site
                );
 
        /****************/
@@ -1090,7 +1089,7 @@ interface netlogon
        
        NTSTATUS netr_LogonGetDomainInfo(
                [in]         [string,charset(UTF16)] uint16 server_name[],
-               [in]         [string,charset(UTF16)] uint16 *computer_name,
+               [in,unique]  [string,charset(UTF16)] uint16 *computer_name,
                [in,ref]     netr_Authenticator *credential,
                [in,out,ref] netr_Authenticator *return_authenticator,
                [in]         uint32 level,
@@ -1106,7 +1105,7 @@ interface netlogon
        /*****************/
        /* Function 0x1e */
        NTSTATUS netr_ServerPasswordSet2(
-               [in [string,charset(UTF16)] uint16 *server_name,
+               [in,unique] [string,charset(UTF16)] uint16 *server_name,
                [in]  [string,charset(UTF16)] uint16 account_name[],
                [in]  netr_SchannelType secure_channel_type,
                [in]  [string,charset(UTF16)] uint16 computer_name[],
@@ -1118,7 +1117,7 @@ interface netlogon
        /****************/
        /* Function 0x1f */
        WERROR netr_ServerPasswordGet(
-               [in [string,charset(UTF16)] uint16 *server_name,
+               [in,unique] [string,charset(UTF16)] uint16 *server_name,
                [in]  [string,charset(UTF16)] uint16 account_name[],
                [in]  netr_SchannelType secure_channel_type,
                [in]  [string,charset(UTF16)] uint16 computer_name[],
@@ -1144,7 +1143,7 @@ interface netlogon
        } netr_DsRAddress;
 
        WERROR netr_DsRAddressToSitenamesW(
-               [in] [string,charset(UTF16)] uint16 *server_name,
+               [in,unique] [string,charset(UTF16)] uint16 *server_name,
                [in] [range(0,32000)] uint32 count,
                [in] [size_is(count)] [ref] netr_DsRAddress *addresses,
                [out] [ref] netr_DsRAddressToSitenamesWCtr **ctr
@@ -1153,14 +1152,14 @@ interface netlogon
        /****************/
        /* Function 0x22 */
        WERROR netr_DsRGetDCNameEx2(
-               [in] [string,charset(UTF16)] uint16 *server_unc,
-               [in] [string,charset(UTF16)] uint16 *client_account,
+               [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+               [in,unique] [string,charset(UTF16)] uint16 *client_account,
                [in] samr_AcctFlags mask,
-               [in] [string,charset(UTF16)] uint16 *domain_name,
-               [in] GUID *domain_guid,
-               [in] [string,charset(UTF16)] uint16 *site_name,
+               [in,unique] [string,charset(UTF16)] uint16 *domain_name,
+               [in,unique] GUID *domain_guid,
+               [in,unique] [string,charset(UTF16)] uint16 *site_name,
                [in] netr_DsRGetDCName_flags flags,
-               [out] netr_DsRGetDCNameInfo *info
+               [out,unique] netr_DsRGetDCNameInfo *info
                );
 
        /****************/
@@ -1212,7 +1211,7 @@ interface netlogon
         } netr_DomainTrustList;
 
        WERROR netr_NetrEnumerateTrustedDomainsEx(
-               [in] [string,charset(UTF16)] uint16 *server_name,
+               [in,unique] [string,charset(UTF16)] uint16 *server_name,
                [out,ref] netr_DomainTrustList *dom_trust_list
        );
 
@@ -1225,7 +1224,7 @@ interface netlogon
        } netr_DsRAddressToSitenamesExWCtr;
 
        WERROR netr_DsRAddressToSitenamesExW(
-               [in] [string,charset(UTF16)] uint16 *server_name,
+               [in,unique] [string,charset(UTF16)] uint16 *server_name,
                [in] [range(0,32000)] uint32 count,
                [in] [size_is(count)] [ref] netr_DsRAddress *addresses,
                [out] [ref] netr_DsRAddressToSitenamesExWCtr **ctr
@@ -1240,15 +1239,15 @@ interface netlogon
        } DcSitesCtr;
 
        WERROR netr_DsrGetDcSiteCoverageW(
-               [in] [string,charset(UTF16)] uint16 *server_name,
-               [out] DcSitesCtr *ctr
+               [in,unique] [string,charset(UTF16)] uint16 *server_name,
+               [out,unique] DcSitesCtr *ctr
                );
 
        /****************/
        /* Function 0x27 */
        NTSTATUS netr_LogonSamLogonEx(
-               [in] [string,charset(UTF16)] uint16 *server_name,
-               [in] [string,charset(UTF16)] uint16 *computer_name,
+               [in,unique] [string,charset(UTF16)] uint16 *server_name,
+               [in,unique] [string,charset(UTF16)] uint16 *computer_name,
                [in]  uint16 logon_level,
                [in]  [switch_is(logon_level)] netr_LogonLevel logon,
                [in]  uint16 validation_level,
@@ -1261,27 +1260,27 @@ interface netlogon
        /* Function 0x28 */
 
        WERROR netr_DsrEnumerateDomainTrusts(
-               [in]                 [string,charset(UTF16)] uint16           *server_name,
+               [in,unique]          [string,charset(UTF16)] uint16           *server_name,
                [in]                 netr_TrustFlags  trust_flags,
                [out]                uint32           count,
-               [out,size_is(count)] netr_DomainTrust *trusts
+               [out,unique,size_is(count)] netr_DomainTrust *trusts
                );
 
 
        /****************/
        /* Function 0x29 */
        WERROR netr_DsrDeregisterDNSHostRecords(
-               [in] [string,charset(UTF16)] uint16 *server_name,
-               [in] [string,charset(UTF16)] uint16 *domain,
-               [in] GUID *domain_guid,
-               [in] GUID *dsa_guid,
+               [in,unique] [string,charset(UTF16)] uint16 *server_name,
+               [in,unique] [string,charset(UTF16)] uint16 *domain,
+               [in,unique] GUID *domain_guid,
+               [in,unique] GUID *dsa_guid,
                [in,ref] [string,charset(UTF16)] uint16 *dns_host
                );
 
        /****************/
        /* Function 0x2a */
        NTSTATUS netr_ServerTrustPasswordsGet(
-               [in]  [string,charset(UTF16)] uint16 *server_name,
+               [in,unique]  [string,charset(UTF16)] uint16 *server_name,
                [in]  [string,charset(UTF16)] uint16 account_name[],
                [in]  netr_SchannelType secure_channel_type,
                [in]  [string,charset(UTF16)] uint16 computer_name[],
@@ -1297,8 +1296,8 @@ interface netlogon
        const int DS_GFTI_UPDATE_TDO = 0x1;
 
        WERROR netr_DsRGetForestTrustInformation(
-               [in] [string,charset(UTF16)] uint16 *server_name,
-               [in] [string,charset(UTF16)] uint16 *trusted_domain_name,
+               [in,unique] [string,charset(UTF16)] uint16 *server_name,
+               [in,unique] [string,charset(UTF16)] uint16 *trusted_domain_name,
                [in] uint32 flags,
                [out,ref] lsa_ForestTrustInformation **forest_trust_info
                );
@@ -1306,7 +1305,7 @@ interface netlogon
        /****************/
        /* Function 0x2c */
        WERROR netr_GetForestTrustInformation(
-               [in] [string,charset(UTF16)] uint16 *server_name,
+               [in,unique] [string,charset(UTF16)] uint16 *server_name,
                [in,ref] [string,charset(UTF16)] uint16 *trusted_domain_name,
                [in,ref] netr_Authenticator *credential,
                [out,ref] netr_Authenticator *return_authenticator,
@@ -1319,10 +1318,10 @@ interface netlogon
 
        /* this is the ADS varient. I don't yet know what the "flags" are for */
        NTSTATUS netr_LogonSamLogonWithFlags(
-               [in] [string,charset(UTF16)] uint16 *server_name,
-               [in] [string,charset(UTF16)] uint16 *computer_name,
-               [in] netr_Authenticator *credential,
-               [in][out] netr_Authenticator *return_authenticator,
+               [in,unique] [string,charset(UTF16)] uint16 *server_name,
+               [in,unique] [string,charset(UTF16)] uint16 *computer_name,
+               [in,unique] netr_Authenticator *credential,
+               [in,out,unique] netr_Authenticator *return_authenticator,
                [in]  uint16 logon_level,
                [in]  [switch_is(logon_level)] netr_LogonLevel logon,
                [in]  uint16 validation_level,
index 5ddbf97d87ebd9ca156905912a0b583941179470..2dc33fa9b90ac8151aa9519eddcda4df86c98ec5 100644 (file)
@@ -12,8 +12,7 @@ import "misc.idl", "lsa.idl", "security.idl";
 [ uuid("12345778-1234-abcd-ef00-0123456789ac"),
   version(1.0),
   endpoint("ncacn_np:[\\pipe\\samr]","ncacn_ip_tcp:", "ncalrpc:"),
-  pointer_default(unique),
-  pointer_default_top(unique)
+  pointer_default(unique)
 ] interface samr
 {
        typedef bitmap security_secinfo security_secinfo;
@@ -98,7 +97,7 @@ import "misc.idl", "lsa.idl", "security.idl";
        /* Function: 0x00 */
        NTSTATUS samr_Connect (
                /* notice the lack of [string] */
-               [in]       uint16 *system_name,
+               [in,unique] uint16 *system_name,
                [in]       samr_ConnectAccessMask access_mask,
                [out,ref]  policy_handle *connect_handle
                );
@@ -125,7 +124,7 @@ import "misc.idl", "lsa.idl", "security.idl";
        NTSTATUS samr_QuerySecurity (
                [in,ref]          policy_handle *handle,
                [in]              security_secinfo sec_info,
-               [out]             sec_desc_buf *sdbuf
+               [out,unique]      sec_desc_buf *sdbuf
                );
 
        /******************/
@@ -143,7 +142,7 @@ import "misc.idl", "lsa.idl", "security.idl";
        NTSTATUS samr_LookupDomain (
                [in,ref]  policy_handle *connect_handle,                
                [in,ref]  lsa_String *domain_name,
-               [out]     dom_sid2 *sid
+               [out,unique] dom_sid2 *sid
                );
 
 
@@ -164,7 +163,7 @@ import "misc.idl", "lsa.idl", "security.idl";
                [in,ref]      policy_handle *connect_handle,
                [in,out,ref]  uint32 *resume_handle,
                [in]          uint32 buf_size,
-               [out]         samr_SamArray *sam,
+               [out,unique]  samr_SamArray *sam,
                [out]         uint32 num_entries
                );
 
@@ -288,7 +287,7 @@ import "misc.idl", "lsa.idl", "security.idl";
        NTSTATUS samr_QueryDomainInfo(
                [in,ref]      policy_handle *domain_handle,
                [in]          uint16 level,
-               [out,switch_is(level)] samr_DomainInfo *info
+               [out,switch_is(level),unique] samr_DomainInfo *info
                );
 
        /************************/
@@ -321,7 +320,7 @@ import "misc.idl", "lsa.idl", "security.idl";
                [in,ref]      policy_handle *domain_handle,
                [in,out,ref]  uint32 *resume_handle,
                [in]          uint32 max_size,
-               [out]         samr_SamArray *sam,
+               [out,unique]  samr_SamArray *sam,
                [out]         uint32 num_entries
                );
 
@@ -349,7 +348,7 @@ import "misc.idl", "lsa.idl", "security.idl";
                [in,out,ref]  uint32 *resume_handle,
                [in]          samr_AcctFlags acct_flags,
                [in]          uint32 max_size,
-               [out]         samr_SamArray *sam,
+               [out,unique]  samr_SamArray *sam,
                [out]         uint32 num_entries
                );
 
@@ -369,7 +368,7 @@ import "misc.idl", "lsa.idl", "security.idl";
                [in,ref]      policy_handle *domain_handle,
                [in,out,ref]  uint32 *resume_handle,
                [in]          samr_AcctFlags acct_flags,
-               [out]         samr_SamArray *sam,
+               [out,unique]  samr_SamArray *sam,
                [out]         uint32 num_entries
                );
 
@@ -466,7 +465,7 @@ import "misc.idl", "lsa.idl", "security.idl";
        NTSTATUS samr_QueryGroupInfo(
                [in,ref]                  policy_handle *group_handle,
                [in]                      samr_GroupInfoEnum level,
-               [out,switch_is(level)]    samr_GroupInfo *info
+               [out,switch_is(level),unique] samr_GroupInfo *info
                );
 
        /************************/
@@ -509,7 +508,7 @@ import "misc.idl", "lsa.idl", "security.idl";
 
        NTSTATUS samr_QueryGroupMember(
                [in,ref]  policy_handle *group_handle,
-               [out]     samr_RidTypeArray *rids
+               [out,unique] samr_RidTypeArray *rids
                );
 
 
@@ -563,7 +562,7 @@ import "misc.idl", "lsa.idl", "security.idl";
        NTSTATUS samr_QueryAliasInfo(
                [in,ref]                  policy_handle  *alias_handle,
                [in]                      samr_AliasInfoEnum      level,
-               [out,switch_is(level)]    samr_AliasInfo *info
+               [out,switch_is(level),unique] samr_AliasInfo *info
                );
 
        /************************/
@@ -862,7 +861,7 @@ import "misc.idl", "lsa.idl", "security.idl";
        [public] NTSTATUS samr_QueryUserInfo(
                [in,ref]                  policy_handle *user_handle,
                [in]                      uint16 level,
-               [out,switch_is(level)]    samr_UserInfo *info
+               [out,unique,switch_is(level)] samr_UserInfo *info
                );
 
 
@@ -887,15 +886,15 @@ import "misc.idl", "lsa.idl", "security.idl";
        NTSTATUS samr_ChangePasswordUser(
                [in,ref]    policy_handle *user_handle,
                [in]        boolean8 lm_present,
-               [in]        samr_Password *old_lm_crypted,
-               [in]        samr_Password *new_lm_crypted,
+               [in,unique] samr_Password *old_lm_crypted,
+               [in,unique] samr_Password *new_lm_crypted,
                [in]        boolean8 nt_present,
-               [in]        samr_Password *old_nt_crypted,
-               [in]        samr_Password *new_nt_crypted,
+               [in,unique] samr_Password *old_nt_crypted,
+               [in,unique] samr_Password *new_nt_crypted,
                [in]        boolean8 cross1_present,
-               [in]        samr_Password *nt_cross,
+               [in,unique] samr_Password *nt_cross,
                [in]        boolean8 cross2_present,
-               [in]        samr_Password *lm_cross
+               [in,unique] samr_Password *lm_cross
                );
 
        /************************/
@@ -913,7 +912,7 @@ import "misc.idl", "lsa.idl", "security.idl";
 
        NTSTATUS samr_GetGroupsForUser(
                [in,ref]   policy_handle *user_handle,
-               [out]      samr_RidWithAttributeArray  *rids
+               [out,unique] samr_RidWithAttributeArray  *rids
                );
 
        /************************/
@@ -1061,7 +1060,7 @@ import "misc.idl", "lsa.idl", "security.idl";
        NTSTATUS samr_QueryDomainInfo2(
                [in,ref]      policy_handle *domain_handle,
                [in]          uint16 level,
-               [out,switch_is(level)] samr_DomainInfo *info
+               [out,unique,switch_is(level)] samr_DomainInfo *info
                );
 
        /************************/
@@ -1073,7 +1072,7 @@ import "misc.idl", "lsa.idl", "security.idl";
        NTSTATUS samr_QueryUserInfo2(
                [in,ref]                  policy_handle *user_handle,
                [in]                      uint16 level,
-               [out,switch_is(level)]    samr_UserInfo *info
+               [out,unique,switch_is(level)]    samr_UserInfo *info
                );
 
        /************************/
@@ -1155,35 +1154,35 @@ import "misc.idl", "lsa.idl", "security.idl";
        /* Function    0x36     */
 
        NTSTATUS samr_OemChangePasswordUser2(
-               [in]              lsa_AsciiString *server,
+               [in,unique]       lsa_AsciiString *server,
                [in,ref]          lsa_AsciiString *account,
-               [in]              samr_CryptPassword *password,
-               [in]              samr_Password *hash
+               [in,unique]       samr_CryptPassword *password,
+               [in,unique]       samr_Password *hash
                );
 
        /************************/
        /* Function    0x37     */
        NTSTATUS samr_ChangePasswordUser2(
-               [in]              lsa_String *server,
+               [in,unique]       lsa_String *server,
                [in,ref]          lsa_String *account,
-               [in]              samr_CryptPassword *nt_password,
-               [in]              samr_Password *nt_verifier,
+               [in,unique]       samr_CryptPassword *nt_password,
+               [in,unique]       samr_Password *nt_verifier,
                [in]              boolean8 lm_change,
-               [in]              samr_CryptPassword *lm_password,
-               [in]              samr_Password *lm_verifier
+               [in,unique]       samr_CryptPassword *lm_password,
+               [in,unique]       samr_Password *lm_verifier
                );
 
        /************************/
        /* Function    0x38     */
        NTSTATUS samr_GetDomPwInfo(
-               [in]        lsa_String *domain_name,
+               [in,unique] lsa_String *domain_name,
                [out]       samr_PwInfo info
                );
 
        /************************/
        /* Function    0x39     */
        NTSTATUS samr_Connect2(
-               [in,string,charset(UTF16)] uint16 *system_name,
+               [in,unique,string,charset(UTF16)] uint16 *system_name,
                [in] samr_ConnectAccessMask access_mask,
                [out,ref]  policy_handle *connect_handle
                );
@@ -1221,7 +1220,7 @@ import "misc.idl", "lsa.idl", "security.idl";
        /************************/
        /* Function    0x3d     */
        NTSTATUS samr_Connect3(
-               [in,string,charset(UTF16)] uint16 *system_name,
+               [in,unique,string,charset(UTF16)] uint16 *system_name,
                /* this unknown value seems to be completely ignored by w2k3 */
                [in] uint32 unknown,
                [in] samr_ConnectAccessMask access_mask,
@@ -1231,7 +1230,7 @@ import "misc.idl", "lsa.idl", "security.idl";
        /************************/
        /* Function    0x3e     */
        NTSTATUS samr_Connect4(
-               [in,string,charset(UTF16)] uint16 *system_name,
+               [in,unique,string,charset(UTF16)] uint16 *system_name,
                [in] uint32 unknown,
                [in] samr_ConnectAccessMask access_mask,
                [out,ref]  policy_handle *connect_handle
@@ -1249,16 +1248,16 @@ import "misc.idl", "lsa.idl", "security.idl";
        } samr_ChangeReject;
 
        NTSTATUS samr_ChangePasswordUser3(
-               [in]              lsa_String *server,
+               [in,unique]       lsa_String *server,
                [in,ref]          lsa_String *account,
-               [in]              samr_CryptPassword *nt_password,
-               [in]              samr_Password *nt_verifier,
+               [in,unique]       samr_CryptPassword *nt_password,
+               [in,unique]       samr_Password *nt_verifier,
                [in]              boolean8 lm_change,
-               [in]              samr_CryptPassword *lm_password,
-               [in]              samr_Password *lm_verifier,
-               [in]              samr_CryptPassword *password3,
-               [out]             samr_DomInfo1 *dominfo,
-               [out]             samr_ChangeReject *reject
+               [in,unique]       samr_CryptPassword *lm_password,
+               [in,unique]       samr_Password *lm_verifier,
+               [in,unique]       samr_CryptPassword *password3,
+               [out,unique]      samr_DomInfo1 *dominfo,
+               [out,unique]      samr_ChangeReject *reject
                );
 
        /************************/
@@ -1274,7 +1273,7 @@ import "misc.idl", "lsa.idl", "security.idl";
        } samr_ConnectInfo;
 
        [public] NTSTATUS samr_Connect5(
-               [in,string,charset(UTF16)] uint16 *system_name,
+               [in,unique,string,charset(UTF16)] uint16 *system_name,
                [in]       samr_ConnectAccessMask  access_mask,
                [in,out]   uint32             level,
                [in,out,switch_is(level),ref] samr_ConnectInfo *info,
@@ -1286,7 +1285,7 @@ import "misc.idl", "lsa.idl", "security.idl";
        NTSTATUS samr_RidToSid(
                [in,ref]    policy_handle *domain_handle,
                [in]        uint32        rid,
-               [out]       dom_sid2      *sid
+               [out,unique] dom_sid2      *sid
                );
 
 
@@ -1300,9 +1299,9 @@ import "misc.idl", "lsa.idl", "security.idl";
        */
 
        NTSTATUS samr_SetDsrmPassword(
-               [in]       lsa_String *name,
+               [in,unique] lsa_String *name,
                [in]       uint32 unknown,
-               [in]       samr_Password *hash
+               [in,unique] samr_Password *hash
                );
 
 
@@ -1401,6 +1400,6 @@ import "misc.idl", "lsa.idl", "security.idl";
        NTSTATUS samr_ValidatePassword(
                [in] samr_ValidatePasswordLevel level,
                [in,switch_is(level)] samr_ValidatePasswordReq req,
-               [out,switch_is(level)] samr_ValidatePasswordRep *rep
+               [out,unique,switch_is(level)] samr_ValidatePasswordRep *rep
                );
 }
index 7d40861a52622801e0bb6751f9eb94e52b37e4b0..114c06a00d7d635254258795f775357c637655fd 100644 (file)
@@ -9,7 +9,6 @@ import "security.idl", "winreg.idl";
   version(1.0),
   endpoint("ncacn_np:[\\pipe\\spoolss]"),
   pointer_default(unique),
-  pointer_default_top(unique),
   helpstring("Spooler SubSystem"),
   helper("librpc/ndr/ndr_spoolss_buf.h")
 ] interface spoolss
@@ -254,11 +253,11 @@ import "security.idl", "winreg.idl";
        /* we are using this as internal parsing code */
        [public,noopnum,noprint] WERROR _spoolss_EnumPrinters(
                [in] spoolss_EnumPrinterFlags flags,
-               [in] [string,charset(UTF16)] uint16 *server,
+               [in,unique] [string,charset(UTF16)] uint16 *server,
                [in] uint32 level,
-               [in] DATA_BLOB *buffer,
+               [in,unique] DATA_BLOB *buffer,
                [in] uint32 offered,
-               [out] DATA_BLOB *info,
+               [out,unique] DATA_BLOB *info,
                [out] uint32 needed,
                [out] uint32 count
        );
@@ -269,14 +268,14 @@ import "security.idl", "winreg.idl";
        );
        [nopull,nopush] WERROR spoolss_EnumPrinters(
                [in] spoolss_EnumPrinterFlags flags,
-               [in] [string,charset(UTF16)] uint16 *server,
+               [in,unique] [string,charset(UTF16)] uint16 *server,
                [in] uint32 level,
-               [in] DATA_BLOB *buffer,
+               [in,unique] DATA_BLOB *buffer,
                [in] uint32 offered,
                /* what we have here is a subcontext containing an array of no discriminant unions
                 * and the array has no size in front
                 */
-               [out,switch_is(level),size_is(count)] spoolss_PrinterInfo *info,
+               [out,unique,switch_is(level),size_is(count)] spoolss_PrinterInfo *info,
                [out] uint32 needed,
                [out] uint32 count
        );
@@ -289,8 +288,8 @@ import "security.idl", "winreg.idl";
        } spoolss_DevmodeContainer;
 
        [public] WERROR spoolss_OpenPrinter(
-               [in] [string,charset(UTF16)] uint16 *printername,
-               [in] [string,charset(UTF16)] uint16 *datatype,
+               [in,unique] [string,charset(UTF16)] uint16 *printername,
+               [in,unique] [string,charset(UTF16)] uint16 *datatype,
                [in] spoolss_DevmodeContainer devmode_ctr,
                [in] uint32 access_mask,
                [out,ref] policy_handle *handle
@@ -339,7 +338,7 @@ import "security.idl", "winreg.idl";
        WERROR spoolss_SetJob(
                [in,ref] policy_handle *handle,
                [in] uint32 job_id,
-               [in] spoolss_JobInfoContainer *ctr,
+               [in,unique] spoolss_JobInfoContainer *ctr,
                [in] spoolss_JobControl command
        );
 
@@ -349,9 +348,9 @@ import "security.idl", "winreg.idl";
                [in,ref] policy_handle *handle,
                [in]     uint32 job_id,
                [in]     uint32 level,
-               [in]     DATA_BLOB *buffer,
+               [in,unique] DATA_BLOB *buffer,
                [in]     uint32 offered,
-               [out,subcontext(4),subcontext_size(offered),switch_is(level)] spoolss_JobInfo *info,
+               [out,unique,subcontext(4),subcontext_size(offered),switch_is(level)] spoolss_JobInfo *info,
                [out]    uint32 needed
        );
 
@@ -362,9 +361,9 @@ import "security.idl", "winreg.idl";
                [in]     uint32 firstjob,
                [in]     uint32 numjobs,
                [in]     uint32 level,
-               [in]     DATA_BLOB *buffer,
+               [in,unique] DATA_BLOB *buffer,
                [in]     uint32 offered,
-               [out]    DATA_BLOB *info,
+               [out,unique] DATA_BLOB *info,
                [out]    uint32 needed,
                [out]    uint32 count
        );
@@ -378,9 +377,9 @@ import "security.idl", "winreg.idl";
                [in]     uint32 firstjob,
                [in]     uint32 numjobs,
                [in]     uint32 level,
-               [in]     DATA_BLOB *buffer,
+               [in,unique] DATA_BLOB *buffer,
                [in]     uint32 offered,
-               [out,switch_is(level),size_is(count)] spoolss_JobInfo *info,
+               [out,unique,switch_is(level),size_is(count)] spoolss_JobInfo *info,
                [out]    uint32 needed,
                [out]    uint32 count
        );
@@ -435,9 +434,9 @@ import "security.idl", "winreg.idl";
        [public] WERROR spoolss_GetPrinter(
                [in,ref] policy_handle *handle,
                [in]     uint32 level,
-               [in]     DATA_BLOB *buffer,
+               [in,unique] DATA_BLOB *buffer,
                [in]     uint32 offered,
-               [out,subcontext(4),subcontext_size(offered),switch_is(level)] spoolss_PrinterInfo *info,
+               [out,unique,subcontext(4),subcontext_size(offered),switch_is(level)] spoolss_PrinterInfo *info,
                [out]    uint32 needed
        );
 
@@ -538,12 +537,12 @@ import "security.idl", "winreg.idl";
        /******************/
        /* Function: 0x0a */
        [public,noopnum,noprint] WERROR _spoolss_EnumPrinterDrivers(
-               [in] [string,charset(UTF16)] uint16 *server,
-               [in] [string,charset(UTF16)] uint16 *environment,
+               [in,unique] [string,charset(UTF16)] uint16 *server,
+               [in,unique] [string,charset(UTF16)] uint16 *environment,
                [in] uint32 level,
-               [in] DATA_BLOB *buffer,
+               [in,unique] DATA_BLOB *buffer,
                [in] uint32 offered,
-               [out] DATA_BLOB *info,
+               [out,unique] DATA_BLOB *info,
                [out] uint32 needed,
                [out] uint32 count
        );
@@ -553,12 +552,12 @@ import "security.idl", "winreg.idl";
                [out,switch_is(level)] spoolss_DriverInfo info[count]
        );
        [nopull,nopush] WERROR spoolss_EnumPrinterDrivers(
-               [in] [string,charset(UTF16)] uint16 *server,
-               [in] [string,charset(UTF16)] uint16 *environment,
+               [in,unique] [string,charset(UTF16)] uint16 *server,
+               [in,unique] [string,charset(UTF16)] uint16 *environment,
                [in] uint32 level,
-               [in] DATA_BLOB *buffer,
+               [in,unique] DATA_BLOB *buffer,
                [in] uint32 offered,
-               [out,switch_is(level),size_is(count)] spoolss_DriverInfo *info,
+               [out,unique,switch_is(level),size_is(count)] spoolss_DriverInfo *info,
                [out] uint32 needed,
                [out] uint32 count
        );
@@ -583,12 +582,12 @@ import "security.idl", "winreg.idl";
        } spoolss_DriverDirectoryInfo;
 
        [public] WERROR spoolss_GetPrinterDriverDirectory(
-               [in] [string,charset(UTF16)] uint16 *server,
-               [in] [string,charset(UTF16)] uint16 *environment,
+               [in,unique] [string,charset(UTF16)] uint16 *server,
+               [in,unique] [string,charset(UTF16)] uint16 *environment,
                [in] uint32 level,
-               [in] DATA_BLOB *buffer,
+               [in,unique] DATA_BLOB *buffer,
                [in] uint32 offered,
-               [out,subcontext(4),subcontext_size(offered),switch_is(level)] spoolss_DriverDirectoryInfo *info,
+               [out,unique,subcontext(4),subcontext_size(offered),switch_is(level)] spoolss_DriverDirectoryInfo *info,
                [out] uint32 needed
        );
 
@@ -596,7 +595,7 @@ import "security.idl", "winreg.idl";
        /* Function: 0x0d */
        WERROR spoolss_DeletePrinterDriver(
                [in,ref] policy_handle *handle,
-               [in] [string,charset(UTF16)] uint16 *server,
+               [in,unique] [string,charset(UTF16)] uint16 *server,
                [in] [string,charset(UTF16)] uint16 architecture[],
                [in] [string,charset(UTF16)] uint16 driver[]
        );
@@ -618,12 +617,12 @@ import "security.idl", "winreg.idl";
        } spoolss_PrintProcessorInfo;
 
        [public,noopnum,noprint] WERROR _spoolss_EnumPrintProcessors(
-               [in] [string,charset(UTF16)] uint16 *servername,
-               [in] [string,charset(UTF16)] uint16 *environment,
+               [in,unique] [string,charset(UTF16)] uint16 *servername,
+               [in,unique] [string,charset(UTF16)] uint16 *environment,
                [in] uint32 level,
-               [in] DATA_BLOB *buffer,
+               [in,unique] DATA_BLOB *buffer,
                [in] uint32 offered,
-               [out] DATA_BLOB *info,
+               [out,unique] DATA_BLOB *info,
                [out] uint32 needed,
                [out] uint32 count
        );
@@ -633,12 +632,12 @@ import "security.idl", "winreg.idl";
                [out,switch_is(level)] spoolss_PrintProcessorInfo info[count]
        );
        [nopull,nopush] WERROR spoolss_EnumPrintProcessors(
-               [in] [string,charset(UTF16)] uint16 *servername,
-               [in] [string,charset(UTF16)] uint16 *environment,
+               [in,unique] [string,charset(UTF16)] uint16 *servername,
+               [in,unique] [string,charset(UTF16)] uint16 *environment,
                [in] uint32 level,
-               [in] DATA_BLOB *buffer,
+               [in,unique] DATA_BLOB *buffer,
                [in] uint32 offered,
-               [out,switch_is(level),size_is(count)] spoolss_PrintProcessorInfo *info,
+               [out,unique,switch_is(level),size_is(count)] spoolss_PrintProcessorInfo *info,
                [out] uint32 needed,
                [out] uint32 count
        );
@@ -878,9 +877,9 @@ import "security.idl", "winreg.idl";
                [in,ref] policy_handle *handle,
                [in] [string,charset(UTF16)] uint16 form_name[],
                [in] uint32 level,
-               [in] DATA_BLOB *buffer,
+               [in,unique] DATA_BLOB *buffer,
                [in] uint32 offered,
-               [out,subcontext(4),subcontext_size(offered),switch_is(level)] spoolss_FormInfo *info,
+               [out,unique,subcontext(4),subcontext_size(offered),switch_is(level)] spoolss_FormInfo *info,
                [out] uint32 needed
        );
 
@@ -898,9 +897,9 @@ import "security.idl", "winreg.idl";
        [public,noopnum,noprint] WERROR _spoolss_EnumForms(
                [in,ref] policy_handle *handle,
                [in]     uint32 level,
-               [in]     DATA_BLOB *buffer,
+               [in,unique] DATA_BLOB *buffer,
                [in]     uint32 offered,
-               [out]    DATA_BLOB *info,
+               [out,unique] DATA_BLOB *info,
                [out]    uint32 needed,
                [out]    uint32 count
        );
@@ -912,9 +911,9 @@ import "security.idl", "winreg.idl";
        [nopull,nopush] WERROR spoolss_EnumForms(
                [in,ref] policy_handle *handle,
                [in]     uint32 level,
-               [in]     DATA_BLOB *buffer,
+               [in,unique] DATA_BLOB *buffer,
                [in]     uint32 offered,
-               [out,switch_is(level),size_is(count)] spoolss_FormInfo *info,
+               [out,unique,switch_is(level),size_is(count)] spoolss_FormInfo *info,
                [out] uint32 needed,
                [out] uint32 count
        );
@@ -948,11 +947,11 @@ import "security.idl", "winreg.idl";
        /******************/
        /* Function: 0x23 */
        [public,noopnum,noprint] WERROR _spoolss_EnumPorts(
-               [in] [string,charset(UTF16)] uint16 *servername,
+               [in,unique] [string,charset(UTF16)] uint16 *servername,
                [in] uint32 level,
-               [in] DATA_BLOB *buffer,
+               [in,unique] DATA_BLOB *buffer,
                [in] uint32 offered,
-               [out] DATA_BLOB *info,
+               [out,unique] DATA_BLOB *info,
                [out] uint32 needed,
                [out] uint32 count
        );
@@ -962,11 +961,11 @@ import "security.idl", "winreg.idl";
                [out,switch_is(level)] spoolss_PortInfo info[count]
        );
        [nopull,nopush] WERROR spoolss_EnumPorts(
-               [in] [string,charset(UTF16)] uint16 *servername,
+               [in,unique] [string,charset(UTF16)] uint16 *servername,
                [in] uint32 level,
-               [in] DATA_BLOB *buffer,
+               [in,unique] DATA_BLOB *buffer,
                [in] uint32 offered,
-               [out,switch_is(level),size_is(count)] spoolss_PortInfo *info,
+               [out,unique,switch_is(level),size_is(count)] spoolss_PortInfo *info,
                [out] uint32 needed,
                [out] uint32 count
        );
@@ -990,11 +989,11 @@ import "security.idl", "winreg.idl";
        } spoolss_MonitorInfo;
 
        [public,noopnum,noprint] WERROR _spoolss_EnumMonitors(
-               [in] [string,charset(UTF16)] uint16 *servername,
+               [in,unique] [string,charset(UTF16)] uint16 *servername,
                [in] uint32 level,
-               [in] DATA_BLOB *buffer,
+               [in,unique] DATA_BLOB *buffer,
                [in] uint32 offered,
-               [out] DATA_BLOB *info,
+               [out,unique] DATA_BLOB *info,
                [out] uint32 needed,
                [out] uint32 count
        );
@@ -1004,11 +1003,11 @@ import "security.idl", "winreg.idl";
                [out,switch_is(level)] spoolss_MonitorInfo info[count]
        );
        [nopull,nopush] WERROR spoolss_EnumMonitors(
-               [in] [string,charset(UTF16)] uint16 *servername,
+               [in,unique] [string,charset(UTF16)] uint16 *servername,
                [in] uint32 level,
-               [in] DATA_BLOB *buffer,
+               [in,unique] DATA_BLOB *buffer,
                [in] uint32 offered,
-               [out,switch_is(level),size_is(count)] spoolss_MonitorInfo *info,
+               [out,unique,switch_is(level),size_is(count)] spoolss_MonitorInfo *info,
                [out] uint32 needed,
                [out] uint32 count
        );
@@ -1016,7 +1015,7 @@ import "security.idl", "winreg.idl";
        /******************/
        /* Function: 0x25 */
        WERROR spoolss_AddPort(
-              [in] [string,charset(UTF16)] uint16 *server_name,
+              [in,unique] [string,charset(UTF16)] uint16 *server_name,
               [in] uint32 unknown,
               [in] [string,charset(UTF16)] uint16 monitor_name[]
        );
@@ -1102,13 +1101,13 @@ import "security.idl", "winreg.idl";
        /* Function: 0x35 */
        WERROR spoolss_GetPrinterDriver2(
                [in,ref] policy_handle *handle,
-               [in]     [string,charset(UTF16)] uint16 *architecture,
+               [in,unique] [string,charset(UTF16)] uint16 *architecture,
                [in]     uint32 level,
-               [in]     DATA_BLOB *buffer,
+               [in,unique] DATA_BLOB *buffer,
                [in]     uint32 offered,
                [in]     uint32 client_major_version,
                [in]     uint32 client_minor_version,
-               [out]    DATA_BLOB *info,
+               [out,unique] DATA_BLOB *info,
                [out]    uint32 needed,
                [out]    uint32 server_major_version,
                [out]    uint32 server_minor_version
@@ -1233,9 +1232,9 @@ import "security.idl", "winreg.idl";
                [in,ref] policy_handle *handle,
                [in] uint32 flags,
                [in] uint32 options,
-               [in] [string,charset(UTF16)] uint16 *str,
+               [in,unique] [string,charset(UTF16)] uint16 *str,
                [in] uint32 printer_local,
-               [in] spoolss_NotifyOptionsContainer *t1
+               [in,unique] spoolss_NotifyOptionsContainer *t1
        );
 
        /******************/
@@ -1377,8 +1376,8 @@ import "security.idl", "winreg.idl";
        /******************/
        /* Function: 0x45 */
        [public] WERROR spoolss_OpenPrinterEx(
-               [in]                  [string,charset(UTF16)] uint16 *printername,
-               [in]                  [string,charset(UTF16)] uint16 *datatype,
+               [in,unique]           [string,charset(UTF16)] uint16 *printername,
+               [in,unique]           [string,charset(UTF16)] uint16 *datatype,
                [in]                  spoolss_DevmodeContainer devmode_ctr,
                [in]                  uint32 access_mask,
                [in]                  uint32 level,
@@ -1389,11 +1388,11 @@ import "security.idl", "winreg.idl";
        /******************/
        /* Function: 0x46 */
        WERROR spoolss_AddPrinterEx(
-               [in] [string,charset(UTF16)] uint16 *server,
+               [in,unique] [string,charset(UTF16)] uint16 *server,
                [in] uint32 level,
-               [in,switch_is(level)] spoolss_PrinterInfo *info,
+               [in,unique,switch_is(level)] spoolss_PrinterInfo *info,
                [in] spoolss_DevmodeContainer devmode_ctr,
-               [in] security_descriptor *secdesc,
+               [in,unique] security_descriptor *secdesc,
                [in] uint32 ulevel,
                [in,switch_is(ulevel)] spoolss_UserLevel userlevel
        );
index c3f0bd51a78c33c4f3ba0470e667a64719bc2dd7..66c52fa43f3a653417899f4bcb2b5b50c105d5a0 100644 (file)
@@ -9,7 +9,6 @@ import "security.idl", "svcctl.idl";
   version(3.0),
   endpoint("ncacn_np:[\\pipe\\srvsvc]", "ncacn_ip_tcp:", "ncalrpc:"),
   pointer_default(unique),
-  pointer_default_top(unique),
   helpstring("Server Service")
 ] interface srvsvc
 {
@@ -55,18 +54,18 @@ import "security.idl", "svcctl.idl";
        /******************/
        /* 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
@@ -75,7 +74,7 @@ import "security.idl", "svcctl.idl";
        /******************/
        /* 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
                );
@@ -120,19 +119,19 @@ import "security.idl", "svcctl.idl";
        /******************/
        /* 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,
@@ -142,24 +141,24 @@ import "security.idl", "svcctl.idl";
        /******************/
        /* 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[]
                );
@@ -200,13 +199,13 @@ import "security.idl", "svcctl.idl";
        /******************/
        /* 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
                );
 
 /**************************/
@@ -249,20 +248,20 @@ import "security.idl", "svcctl.idl";
        /******************/
        /* 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
@@ -271,7 +270,7 @@ import "security.idl", "svcctl.idl";
        /******************/
        /* Function: 0x0b */
        WERROR srvsvc_NetFileClose(
-               [in]   [string,charset(UTF16)] uint16 *server_unc,
+               [in,unique]   [string,charset(UTF16)] uint16 *server_unc,
                [in]   uint32 fid       
                );
 
@@ -356,22 +355,22 @@ import "security.idl", "svcctl.idl";
        /******************/
        /* Function: 0x0c */
        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
                );
 
 /**************************/
@@ -545,27 +544,27 @@ import "security.idl", "svcctl.idl";
        /******************/
        /* 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,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
@@ -574,17 +573,17 @@ import "security.idl", "svcctl.idl";
        /******************/
        /* 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,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
                );
@@ -592,7 +591,7 @@ import "security.idl", "svcctl.idl";
        /******************/
        /* 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
                );
@@ -600,7 +599,7 @@ import "security.idl", "svcctl.idl";
        /******************/
        /* 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
                );
@@ -1110,7 +1109,7 @@ import "security.idl", "svcctl.idl";
        /******************/
        /* 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
                );
@@ -1118,10 +1117,10 @@ import "security.idl", "svcctl.idl";
        /******************/
        /* 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,out,unique]   uint32 *parm_error
                );
 
 /**************************/
@@ -1139,12 +1138,12 @@ import "security.idl", "svcctl.idl";
        /******************/
        /* 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 info,
                [in]      uint32 maxlen,
                [out]     uint32 totalentries,
-               [in,out]  uint32 *resume_handle
+               [in,out,unique]  uint32 *resume_handle
                );
 
 /**************************/
@@ -1173,8 +1172,8 @@ import "security.idl", "svcctl.idl";
        /******************/
        /* 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
@@ -1194,7 +1193,7 @@ import "security.idl", "svcctl.idl";
        /******************/
        /* 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
                );
@@ -1261,18 +1260,18 @@ import "security.idl", "svcctl.idl";
        /******************/
        /* Function: 0x1a */
        WERROR srvsvc_NetTransportEnum(
-               [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_NetTransportCtr transports,
                [in]   uint32 max_buffer,
                [out]   uint32 totalentries,
-               [in,out]   uint32 *resume_handle
+               [in,out,unique]   uint32 *resume_handle
                );
 
        /******************/
        /* Function: 0x1b */
        WERROR srvsvc_NetTransportDel(
-               [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
                );
@@ -1298,8 +1297,8 @@ import "security.idl", "svcctl.idl";
        /******************/
        /* 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,unique]   srvsvc_NetRemoteTODInfo *info
                );
 
 /**************************/
@@ -1308,8 +1307,8 @@ import "security.idl", "svcctl.idl";
        /******************/
        /* 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
                );
@@ -1320,7 +1319,7 @@ import "security.idl", "svcctl.idl";
        /******************/
        /* 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
@@ -1329,7 +1328,7 @@ import "security.idl", "svcctl.idl";
        /******************/
        /* 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,
@@ -1341,7 +1340,7 @@ import "security.idl", "svcctl.idl";
        /******************/
        /* 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,
@@ -1354,7 +1353,7 @@ import "security.idl", "svcctl.idl";
        /******************/
        /* Function: 0x21 */
        WERROR srvsvc_NetNameValidate(
-               [in]   [string,charset(UTF16)] uint16 *server_unc,
+               [in,unique]   [string,charset(UTF16)] uint16 *server_unc,
                [in]   [string,charset(UTF16)] uint16 name[],
                [in]    uint32 name_type,
                [in]    uint32 flags
@@ -1368,7 +1367,7 @@ import "security.idl", "svcctl.idl";
        /******************/
        /* Function: 0x23 */
        WERROR srvsvc_NetPRNameCompare(
-               [in]   [string,charset(UTF16)] uint16 *server_unc,
+               [in,unique]   [string,charset(UTF16)] uint16 *server_unc,
                [in]   [string,charset(UTF16)] uint16 name1[],
                [in]   [string,charset(UTF16)] uint16 name2[],
                [in]    uint32 name_type,
@@ -1383,44 +1382,44 @@ import "security.idl", "svcctl.idl";
        /* 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]       security_secinfo securityinformation,
-               [out]      sec_desc_buf *sd_buf
+               [out,unique]       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]       security_secinfo securityinformation,
                [in]       sec_desc_buf sd_buf
@@ -1438,7 +1437,7 @@ import "security.idl", "svcctl.idl";
        /******************/
        /* 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
                );
@@ -1446,9 +1445,9 @@ import "security.idl", "svcctl.idl";
        /******************/
        /* 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
index d9f8233a0ed28b64d1562c508b76eeb1d382b352..8f368ef87832a5301a42df16ba653b9288003700 100644 (file)
@@ -8,7 +8,6 @@ import "misc.idl";
 [ uuid("367abb81-9844-35f1-ad32-98f038001003"),
   version(2.0),
   pointer_default(unique),
-  pointer_default_top(unique),
   endpoint("ncacn_np:[\\pipe\\svcctl]", "ncalrpc:"),
   helpstring("Service Control")
 ] interface svcctl
@@ -163,13 +162,13 @@ import "misc.idl";
                [in] uint32 type,
                [in] uint32 start,
                [in] uint32 error,
-               [in] [string,charset(UTF16)] uint16 *binary_path,
-               [in] [string,charset(UTF16)] uint16 *load_order_group,
+               [in,unique] [string,charset(UTF16)] uint16 *binary_path,
+               [in,unique] [string,charset(UTF16)] uint16 *load_order_group,
                [out,ref] uint32 *tag_id,
-               [in] [string,charset(UTF16)] uint16 *dependencies,
-               [in] [string,charset(UTF16)] uint16 *service_start_name,
-               [in] [string,charset(UTF16)] uint16 *password,
-               [in] [string,charset(UTF16)] uint16 *display_name
+               [in,unique] [string,charset(UTF16)] uint16 *dependencies,
+               [in,unique] [string,charset(UTF16)] uint16 *service_start_name,
+               [in,unique] [string,charset(UTF16)] uint16 *password,
+               [in,unique] [string,charset(UTF16)] uint16 *display_name
        );
 
        /*****************/
@@ -177,18 +176,18 @@ import "misc.idl";
        WERROR svcctl_CreateServiceW(
                [in,ref] policy_handle *scmanager_handle,
                [in] [string,charset(UTF16)] uint16 ServiceName[],
-               [in] [string,charset(UTF16)] uint16 *DisplayName,
+               [in,unique] [string,charset(UTF16)] uint16 *DisplayName,
                [in] uint32 desired_access,
                [in] uint32 type,
                [in] uint32 start_type,
                [in] uint32 error_control,
                [in] [string,charset(UTF16)] uint16 binary_path[],
-               [in] [string,charset(UTF16)] uint16 *LoadOrderGroupKey,
-               [in,out] uint32 *TagId,
-               [in,size_is(dependencies_size)] uint8 *dependencies,
+               [in,unique] [string,charset(UTF16)] uint16 *LoadOrderGroupKey,
+               [in,out,unique] uint32 *TagId,
+               [in,unique,size_is(dependencies_size)] uint8 *dependencies,
                [in] uint32 dependencies_size,
-               [in] [string,charset(UTF16)] uint16 *service_start_name,
-               [in,size_is(password_size)] uint8 *password,
+               [in,unique] [string,charset(UTF16)] uint16 *service_start_name,
+               [in,unique,size_is(password_size)] uint8 *password,
                [in] uint32 password_size,
                [out,ref] policy_handle *handle
        );
@@ -198,7 +197,7 @@ import "misc.idl";
        WERROR svcctl_EnumDependentServicesW(
                [in,ref] policy_handle *service,
                [in] uint32 state,
-               [out] ENUM_SERVICE_STATUS *service_status,
+               [out,unique] ENUM_SERVICE_STATUS *service_status,
                [in] uint32 buf_size,
                [out,ref] uint32 *bytes_needed,
                [out,ref] uint32 *services_returned
@@ -214,14 +213,14 @@ import "misc.idl";
                [out,size_is(buf_size)] uint8 service[*],
                [out,ref] uint32 *bytes_needed,
                [out,ref] uint32 *services_returned,
-               [in,out] uint32 *resume_handle
+               [in,out,unique] uint32 *resume_handle
        );
 
        /*****************/
        /* Function 0x0f */
        WERROR svcctl_OpenSCManagerW(
-               [in] [string,charset(UTF16)] uint16 *MachineName,
-               [in] [string,charset(UTF16)] uint16 *DatabaseName,
+               [in,unique] [string,charset(UTF16)] uint16 *MachineName,
+               [in,unique] [string,charset(UTF16)] uint16 *DatabaseName,
                [in] uint32 access_mask,
                [out,ref] policy_handle *handle
        );
@@ -258,25 +257,25 @@ import "misc.idl";
        WERROR svcctl_StartServiceW(
                [in,ref] policy_handle *handle,
                [in] uint32 NumArgs,
-               [in/*FIXME:,length_is(NumArgs)*/] [string,charset(UTF16)] uint16 *Arguments
+               [in,unique/*FIXME:,length_is(NumArgs)*/] [string,charset(UTF16)] uint16 *Arguments
        );
 
        /*****************/
        /* Function 0x14 */
        WERROR svcctl_GetServiceDisplayNameW(
                [in,ref] policy_handle *handle,
-               [in] [string,charset(UTF16)] uint16 *service_name,
+               [in,unique] [string,charset(UTF16)] uint16 *service_name,
                [out,ref] [string,charset(UTF16)] uint16 **display_name,
-               [in,out] uint32 *display_name_length
+               [in,out,unique] uint32 *display_name_length
        ); 
 
        /*****************/
        /* Function 0x15 */
        WERROR svcctl_GetServiceKeyNameW(
                [in,ref] policy_handle *handle,
-               [in] [string,charset(UTF16)] uint16 *service_name,
+               [in,unique] [string,charset(UTF16)] uint16 *service_name,
                [out,ref] [string,charset(UTF16)] uint16 **key_name,
-               [in,out] uint32 *display_name_length
+               [in,out,unique] uint32 *display_name_length
        );
 
        /*****************/
@@ -295,31 +294,31 @@ import "misc.idl";
                [in] uint32 type,
                [in] uint32 start,
                [in] uint32 error,
-               [in] [string,charset(UTF16)] uint16 *binary_path,
-               [in] [string,charset(UTF16)] uint16 *load_order_group,
+               [in,unique] [string,charset(UTF16)] uint16 *binary_path,
+               [in,unique] [string,charset(UTF16)] uint16 *load_order_group,
                [out,ref] uint32 *tag_id,
-               [in] [string,charset(UTF16)] uint16 *dependencies,
-               [in] [string,charset(UTF16)] uint16 *service_start_name,
-               [in] [string,charset(UTF16)] uint16 *password,
-               [in] [string,charset(UTF16)] uint16 *display_name
+               [in,unique] [string,charset(UTF16)] uint16 *dependencies,
+               [in,unique] [string,charset(UTF16)] uint16 *service_start_name,
+               [in,unique] [string,charset(UTF16)] uint16 *password,
+               [in,unique] [string,charset(UTF16)] uint16 *display_name
        );
 
        /*****************/
        /* Function 0x18 */
        WERROR svcctl_CreateServiceA(
                [in,ref] policy_handle *handle,
-               [in] [string,charset(UTF16)] uint16 *ServiceName,
-               [in] [string,charset(UTF16)] uint16 *DisplayName,
+               [in,unique] [string,charset(UTF16)] uint16 *ServiceName,
+               [in,unique] [string,charset(UTF16)] uint16 *DisplayName,
                [in] uint32 desired_access,
                [in] uint32 type,
                [in] uint32 start_type,
                [in] uint32 error_control,
-               [in] [string,charset(UTF16)] uint16 *binary_path,
-               [in] [string,charset(UTF16)] uint16 *LoadOrderGroupKey,
-               [out] uint32 *TagId,
-               [in] [string,charset(UTF16)] uint16 *dependencies,
-               [in] [string,charset(UTF16)] uint16 *service_start_name,
-               [in] [string,charset(UTF16)] uint16 *password
+               [in,unique] [string,charset(UTF16)] uint16 *binary_path,
+               [in,unique] [string,charset(UTF16)] uint16 *LoadOrderGroupKey,
+               [out,unique] uint32 *TagId,
+               [in,unique] [string,charset(UTF16)] uint16 *dependencies,
+               [in,unique] [string,charset(UTF16)] uint16 *service_start_name,
+               [in,unique] [string,charset(UTF16)] uint16 *password
        );
 
        /*****************/
@@ -327,7 +326,7 @@ import "misc.idl";
        WERROR svcctl_EnumDependentServicesA(
                [in,ref] policy_handle *service,
                [in] uint32 state,
-               [out] ENUM_SERVICE_STATUS *service_status,
+               [out,unique] ENUM_SERVICE_STATUS *service_status,
                [in] uint32 buf_size,
                [out,ref] uint32 *bytes_needed,
                [out,ref] uint32 *services_returned
@@ -343,14 +342,14 @@ import "misc.idl";
                [out,size_is(buf_size)] uint8 service[*],
                [out,ref] uint32 *bytes_needed,
                [out,ref] uint32 *services_returned,
-               [in,out] uint32 *resume_handle
+               [in,out,unique] uint32 *resume_handle
        );
        
        /*****************/
        /* Function 0x1b */
        WERROR svcctl_OpenSCManagerA(
-               [in] [string,charset(UTF16)] uint16 *MachineName,
-               [in] [string,charset(UTF16)] uint16 *DatabaseName,
+               [in,unique] [string,charset(UTF16)] uint16 *MachineName,
+               [in,unique] [string,charset(UTF16)] uint16 *DatabaseName,
                [in] uint32 access_mask,
                [out,ref] policy_handle *handle
        );
@@ -359,7 +358,7 @@ import "misc.idl";
        /* Function 0x1c */
        WERROR svcctl_OpenServiceA(
                [in,ref] policy_handle *scmanager_handle,
-               [in] [string,charset(UTF16)] uint16 *ServiceName,
+               [in,unique] [string,charset(UTF16)] uint16 *ServiceName,
                [in] uint32 access_mask
        );
 
@@ -386,25 +385,25 @@ import "misc.idl";
        WERROR svcctl_StartServiceA(
                [in,ref] policy_handle *handle,
                [in] uint32 NumArgs,
-               [in/*FIXME:,length_is(NumArgs)*/] [string,charset(UTF16)] uint16 *Arguments
+               [in,unique/*FIXME:,length_is(NumArgs)*/] [string,charset(UTF16)] uint16 *Arguments
        );
 
        /*****************/
        /* Function 0x20 */
        WERROR svcctl_GetServiceDisplayNameA(
                [in,ref] policy_handle *handle,
-               [in] [string,charset(UTF16)] uint16 *service_name,
+               [in,unique] [string,charset(UTF16)] uint16 *service_name,
                [out,ref] [string,charset(UTF16)] uint16 **display_name,
-               [in,out] uint32 *display_name_length
+               [in,out,unique] uint32 *display_name_length
        ); 
 
        /*****************/
        /* Function 0x21 */
        WERROR svcctl_GetServiceKeyNameA(
                [in,ref] policy_handle *handle,
-               [in] [string,charset(UTF16)] uint16 *service_name,
+               [in,unique] [string,charset(UTF16)] uint16 *service_name,
                [out,ref] [string,charset(UTF16)] uint16 **key_name,
-               [in,out] uint32 *display_name_length
+               [in,out,unique] uint32 *display_name_length
        );
 
        /*****************/
@@ -422,7 +421,7 @@ import "misc.idl";
        WERROR svcctl_ChangeServiceConfig2A(
                [in,ref] policy_handle *handle,
                [in] uint32 info_level,
-               [in] uint8 *info
+               [in,unique] uint8 *info
        );
 
        /*****************/
@@ -430,7 +429,7 @@ import "misc.idl";
        WERROR svcctl_ChangeServiceConfig2W(
                [in,ref] policy_handle *handle,
                [in] uint32 info_level,
-               [in] uint8 *info
+               [in,unique] uint8 *info
        );
 
        /*****************/
@@ -474,7 +473,7 @@ import "misc.idl";
                [in] uint32 buf_size,
                [out,ref] uint32 *bytes_needed,
                [out,ref] uint32 *service_returned,
-               [in,out] uint32 *resume_handle, 
+               [in,out,unique] uint32 *resume_handle,
                [out,ref] [string,charset(UTF16)] uint16 **group_name
        );
 
@@ -489,7 +488,7 @@ import "misc.idl";
                [in] uint32 buf_size,
                [out,ref] uint32 *bytes_needed,
                [out,ref] uint32 *service_returned,
-               [in,out] uint32 *resume_handle, 
+               [in,out,unique] uint32 *resume_handle,
                [out,ref] [string,charset(UTF16)] uint16 **group_name
        );
 
index fc734b7403c4f1747f78cc57e7120e39c981a738..b489e86c38694e501513d870c5f17baa72f87daf 100644 (file)
@@ -9,7 +9,6 @@ import "lsa.idl", "initshutdown.idl", "security.idl";
   version(1.0),
   endpoint("ncacn_np:[\\pipe\\winreg]","ncacn_ip_tcp:","ncalrpc:"),
   pointer_default(unique),
-  pointer_default_top(unique),
   helpstring("Remote Registry Service")
 ] interface winreg
 {
@@ -50,7 +49,7 @@ import "lsa.idl", "initshutdown.idl", "security.idl";
        /******************/
        /* Function: 0x00 */
        WERROR winreg_OpenHKCR(
-               [in]      uint16 *system_name,
+               [in,unique] uint16 *system_name,
                [in]      winreg_AccessMask access_mask,
                [out,ref] policy_handle *handle
        );
@@ -58,7 +57,7 @@ import "lsa.idl", "initshutdown.idl", "security.idl";
        /******************/
        /* Function: 0x01 */
        WERROR winreg_OpenHKCU(
-               [in]      uint16 *system_name,
+               [in,unique] uint16 *system_name,
                [in]      winreg_AccessMask access_mask,
                [out,ref] policy_handle *handle
        );
@@ -66,7 +65,7 @@ import "lsa.idl", "initshutdown.idl", "security.idl";
        /******************/
        /* Function: 0x02 */
        [public] WERROR winreg_OpenHKLM(
-               [in]      uint16 *system_name,
+               [in,unique] uint16 *system_name,
                [in]      winreg_AccessMask access_mask,
                [out,ref] policy_handle *handle
        );
@@ -74,7 +73,7 @@ import "lsa.idl", "initshutdown.idl", "security.idl";
        /******************/
        /* Function: 0x03 */
        WERROR winreg_OpenHKPD(
-               [in]      uint16 *system_name,
+               [in,unique] uint16 *system_name,
                [in]      winreg_AccessMask access_mask,
                [out,ref] policy_handle *handle
        );
@@ -82,7 +81,7 @@ import "lsa.idl", "initshutdown.idl", "security.idl";
        /******************/
        /* Function: 0x04 */
        WERROR winreg_OpenHKU(
-               [in]      uint16 *system_name,
+               [in,unique] uint16 *system_name,
                [in]      winreg_AccessMask access_mask,
                [out,ref] policy_handle *handle
        );
@@ -189,8 +188,8 @@ import "lsa.idl", "initshutdown.idl", "security.idl";
        /* Function: 0x0d */
        WERROR winreg_LoadKey(
                [in,ref] policy_handle *handle,
-               [in] winreg_String *keyname,
-               [in] winreg_String *filename
+               [in,unique] winreg_String *keyname,
+               [in,unique] winreg_String *filename
        );
 
        /******************/
@@ -242,10 +241,10 @@ import "lsa.idl", "initshutdown.idl", "security.idl";
        [public] WERROR winreg_QueryValue(
                [in,ref] policy_handle *handle,
                [in] winreg_String value_name,
-               [in,out] winreg_Type *type,
-               [in,out,size_is(*size),length_is(*length)] uint8 *data,
-               [in,out] uint32 *size,
-               [in,out] uint32 *length
+               [in,out,unique] winreg_Type *type,
+               [in,out,unique,size_is(*size),length_is(*length)] uint8 *data,
+               [in,out,unique] uint32 *size,
+               [in,out,unique] uint32 *length
        );
 
        /******************/
@@ -302,8 +301,8 @@ import "lsa.idl", "initshutdown.idl", "security.idl";
        /******************/
        /* Function: 0x18 */
        WERROR winreg_InitiateSystemShutdown(
-               [in]    uint16 *hostname,
-               [in]    initshutdown_String *message,
+               [in,unique] uint16 *hostname,
+               [in,unique] initshutdown_String *message,
                [in]    uint32 timeout,
                [in]    uint8 force_apps,
                [in]    uint8 reboot
@@ -312,7 +311,7 @@ import "lsa.idl", "initshutdown.idl", "security.idl";
        /******************/
        /* Function: 0x19 */
        WERROR winreg_AbortSystemShutdown(
-               [in]    uint16 *server
+               [in,unique] uint16 *server
        );
 
        /******************/
@@ -325,7 +324,7 @@ import "lsa.idl", "initshutdown.idl", "security.idl";
        /******************/
        /* Function: 0x1b */
        WERROR winreg_OpenHKCC(
-               [in]      uint16 *system_name,
+               [in,unique] uint16 *system_name,
                [in]      winreg_AccessMask access_mask,
                [out,ref] policy_handle *handle
        );
@@ -333,7 +332,7 @@ import "lsa.idl", "initshutdown.idl", "security.idl";
        /******************/
        /* Function: 0x1c */
        WERROR winreg_OpenHKDD(
-               [in]      uint16 *system_name,
+               [in,unique] uint16 *system_name,
                [in]      winreg_AccessMask access_mask,
                [out,ref] policy_handle *handle
        );
@@ -351,15 +350,15 @@ import "lsa.idl", "initshutdown.idl", "security.idl";
                [in,ref] policy_handle *key_handle, 
                [in,out,ref,size_is(num_values),length_is(num_values)] QueryMultipleValue *values,
                [in] uint32 num_values,
-               [in,out,size_is(*buffer_size),length_is(*buffer_size)] uint8 *buffer,
+               [in,out,unique,size_is(*buffer_size),length_is(*buffer_size)] uint8 *buffer,
                [in,out,ref] uint32 *buffer_size
        );
 
        /******************/
        /* Function: 0x1e */
        WERROR winreg_InitiateSystemShutdownEx(
-               [in] uint16 *hostname,
-               [in] initshutdown_String *message,
+               [in,unique] uint16 *hostname,
+               [in,unique] initshutdown_String *message,
                [in] uint32 timeout,
                [in] uint8 force_apps,
                [in] uint8 reboot,
@@ -374,7 +373,7 @@ import "lsa.idl", "initshutdown.idl", "security.idl";
        /******************/
        /* Function: 0x20 */
        WERROR winreg_OpenHKPT(
-               [in]      uint16 *system_name,
+               [in,unique] uint16 *system_name,
                [in]      winreg_AccessMask access_mask,
                [out,ref] policy_handle *handle
        );
@@ -382,7 +381,7 @@ import "lsa.idl", "initshutdown.idl", "security.idl";
        /******************/
        /* Function: 0x21 */
        WERROR winreg_OpenHKPN(
-               [in]      uint16 *system_name,
+               [in,unique] uint16 *system_name,
                [in]      winreg_AccessMask access_mask,
                [out,ref] policy_handle *handle
        );
index 9829379eef6b709ca52e1b5cb407b3a038747b11..38c16c7d86bc8cb64fd14c6186d7affedfc1e12d 100644 (file)
@@ -9,7 +9,6 @@ import "srvsvc.idl", "lsa.idl";
 [ uuid("6bffd098-a112-3610-9833-46c3f87e345a"),
   version(1.0),
   pointer_default(unique),
-  pointer_default_top(unique),
   helpstring("Workstation Service"),
   endpoint("ncacn_np:[\\pipe\\wkssvc]","ncacn_ip_tcp:","ncalrpc:")
 ] interface wkssvc
@@ -259,7 +258,7 @@ import "srvsvc.idl", "lsa.idl";
        } wkssvc_NetWkstaInfo;
 
        WERROR wkssvc_NetWkstaGetInfo(
-               [in]   [string,charset(UTF16)] uint16 *server_name,
+               [in,unique]   [string,charset(UTF16)] uint16 *server_name,
                [in]   uint32 level,
                [out,switch_is(level),ref]  wkssvc_NetWkstaInfo *info
                );
@@ -268,7 +267,7 @@ import "srvsvc.idl", "lsa.idl";
        /******************/
        /* Function: 0x01 */
        WERROR wkssvc_NetWkstaSetInfo(
-               [in]   [string,charset(UTF16)] uint16 *server_name,
+               [in,unique]   [string,charset(UTF16)] uint16 *server_name,
                [in]   uint32 level,
                [in,switch_is(level),ref]  wkssvc_NetWkstaInfo *info,
                [in,out,ref]   uint32 *parm_error
@@ -309,11 +308,11 @@ import "srvsvc.idl", "lsa.idl";
        } wkssvc_NetWkstaEnumUsersInfo;
 
        WERROR wkssvc_NetWkstaEnumUsers(
-               [in] [string,charset(UTF16)] uint16 *server_name,
+               [in,unique] [string,charset(UTF16)] uint16 *server_name,
                [in,out,ref] wkssvc_NetWkstaEnumUsersInfo *info,
                [in] uint32 prefmaxlen,
                [out,ref] uint32 *entries_read,
-               [in,out] uint32 *resume_handle
+               [in,out,unique] uint32 *resume_handle
                );
 
        /*****************************/
@@ -329,7 +328,7 @@ import "srvsvc.idl", "lsa.idl";
        } wkssvc_NetrWkstaUserInfo;
 
        WERROR wkssvc_NetrWkstaUserGetInfo(
-               [in] [string,charset(UTF16)] uint16 *unknown,
+               [in,unique] [string,charset(UTF16)] uint16 *unknown,
                [in] uint32 level,
                [out,ref] [switch_is(level)] wkssvc_NetrWkstaUserInfo *info
                );
@@ -337,10 +336,10 @@ import "srvsvc.idl", "lsa.idl";
        /*****************************/
        /* Function        0x04      */
        WERROR wkssvc_NetrWkstaUserSetInfo(
-               [in] [string,charset(UTF16)] uint16 *unknown,
+               [in,unique] [string,charset(UTF16)] uint16 *unknown,
                [in] uint32 level,
                [in,ref] [switch_is(level)] wkssvc_NetrWkstaUserInfo *info,
-               [in,out] uint32 *parm_err
+               [in,out,unique] uint32 *parm_err
                );
 
        /*****************************/
@@ -369,29 +368,29 @@ import "srvsvc.idl", "lsa.idl";
        } wkssvc_NetWkstaTransportInfo;
 
        WERROR wkssvc_NetWkstaTransportEnum (
-               [in]         [string,charset(UTF16)] uint16 *server_name,
+               [in,unique]         [string,charset(UTF16)] uint16 *server_name,
                [in,out,ref] wkssvc_NetWkstaTransportInfo *info,
                [in]         uint32 max_buffer,
                [out,ref]    uint32 *total_entries,
-               [in,out]     uint32 *resume_handle
+               [in,out,unique]     uint32 *resume_handle
                );
 
        /*****************************/
        /* Function        0x06      */
        /* only supported on NT */
        WERROR wkssvc_NetrWkstaTransportAdd(
-               [in] [string,charset(UTF16)] uint16 *server_name,
+               [in,unique] [string,charset(UTF16)] uint16 *server_name,
                [in] uint32 level, /* must be 0 */
                [in,ref] wkssvc_NetWkstaTransportInfo0 *info0,
-               [in,out] uint32 *parm_err
+               [in,out,unique] uint32 *parm_err
                 );
 
        /*****************************/
        /* Function        0x07      */
        /* only supported on NT */
        WERROR wkssvc_NetrWkstaTransportDel(
-               [in] [string,charset(UTF16)] uint16 *server_name,
-               [in] [string,charset(UTF16)] uint16 *transport_name,
+               [in,unique] [string,charset(UTF16)] uint16 *server_name,
+               [in,unique] [string,charset(UTF16)] uint16 *transport_name,
                [in] uint32 unknown3
                );
 
@@ -437,16 +436,16 @@ import "srvsvc.idl", "lsa.idl";
        } wkssvc_NetrUseGetInfoCtr;
 
        WERROR wkssvc_NetrUseAdd(
-               [in] [string,charset(UTF16)] uint16 *server_name,
+               [in,unique] [string,charset(UTF16)] uint16 *server_name,
                [in] uint32 level,
                [in,ref] [switch_is(level)] wkssvc_NetrUseGetInfoCtr *ctr,
-               [in,out] uint32 *parm_err
+               [in,out,unique] uint32 *parm_err
                );
 
        /*****************************/
        /* Function        0x09      */
        WERROR wkssvc_NetrUseGetInfo(
-               [in] [string,charset(UTF16)] uint16 *server_name,
+               [in,unique] [string,charset(UTF16)] uint16 *server_name,
                [in,ref] [string,charset(UTF16)] uint16 *use_name,
                [in] uint32 level,
                [out,ref] [switch_is(level)] wkssvc_NetrUseGetInfoCtr *ctr
@@ -455,7 +454,7 @@ import "srvsvc.idl", "lsa.idl";
        /*****************************/
        /* Function        0x0a      */
        WERROR wkssvc_NetrUseDel(
-               [in] [string,charset(UTF16)] uint16 *server_name,
+               [in,unique] [string,charset(UTF16)] uint16 *server_name,
                [in,ref] [string,charset(UTF16)] uint16 *use_name,
                [in] uint32 force_cond
                );
@@ -489,19 +488,19 @@ import "srvsvc.idl", "lsa.idl";
        } wkssvc_NetrUseEnumInfo;
 
        WERROR wkssvc_NetrUseEnum(
-               [in] [string,charset(UTF16)] uint16 *server_name,
+               [in,unique] [string,charset(UTF16)] uint16 *server_name,
                [in,out,ref] wkssvc_NetrUseEnumInfo *info,
                [in] uint32 prefmaxlen,
                [out,ref] uint32 *entries_read,
-               [in,out] uint32 *resume_handle
+               [in,out,unique] uint32 *resume_handle
                );
 
        /*****************************/
        /* Function        0x0c      */
        WERROR wkssvc_NetrMessageBufferSend(
-               [in] [string,charset(UTF16)] uint16 *server_name,
+               [in,unique] [string,charset(UTF16)] uint16 *server_name,
                [in,ref] [string,charset(UTF16)] uint16 *message_name,
-               [in] [string,charset(UTF16)] uint16 *message_sender_name,
+               [in,unique] [string,charset(UTF16)] uint16 *message_sender_name,
                [in,ref] [size_is(message_size)] uint8 *message_buffer,
                [in] uint32 message_size
                );
@@ -552,8 +551,8 @@ import "srvsvc.idl", "lsa.idl";
        } wkssvc_NetrWorkstationStatistics;
 
        WERROR wkssvc_NetrWorkstationStatisticsGet(
-               [in] [string,charset(UTF16)] uint16 *server_name,
-               [in] [string,charset(UTF16)] uint16 *unknown2,
+               [in,unique] [string,charset(UTF16)] uint16 *server_name,
+               [in,unique] [string,charset(UTF16)] uint16 *unknown2,
                [in] uint32 unknown3,
                [in] uint32 unknown4,
                [out,ref] wkssvc_NetrWorkstationStatistics **info
@@ -574,20 +573,20 @@ import "srvsvc.idl", "lsa.idl";
        /*****************************/
        /* Function        0x10      */
        WERROR wkssvc_NetrJoinDomain(
-               [in] [string,charset(UTF16)] uint16 *server_name,
+               [in,unique] [string,charset(UTF16)] uint16 *server_name,
                [in,ref] [string,charset(UTF16)] uint16 *domain_name,
-               [in] [string,charset(UTF16)] uint16 *account_ou,
-               [in] [string,charset(UTF16)] uint16 *Account,
-               [in] [string,charset(UTF16)] uint16 *password,
+               [in,unique] [string,charset(UTF16)] uint16 *account_ou,
+               [in,unique] [string,charset(UTF16)] uint16 *Account,
+               [in,unique] [string,charset(UTF16)] uint16 *password,
                [in] wkssvc_joinflags join_flags
                );
 
        /*****************************/
        /* Function        0x11      */
        WERROR wkssvc_NetrUnjoinDomain(
-               [in] [string,charset(UTF16)] uint16 *server_name,
-               [in] [string,charset(UTF16)] uint16 *Account,
-               [in] [string,charset(UTF16)] uint16 *password,
+               [in,unique] [string,charset(UTF16)] uint16 *server_name,
+               [in,unique] [string,charset(UTF16)] uint16 *Account,
+               [in,unique] [string,charset(UTF16)] uint16 *password,
                [in] wkssvc_joinflags unjoin_flags
                );
 
@@ -599,10 +598,10 @@ import "srvsvc.idl", "lsa.idl";
        } wkssvc_renameflags;
 
        WERROR wkssvc_NetrRenameMachineInDomain(
-               [in] [string,charset(UTF16)] uint16 *server_name,
-               [in] [string,charset(UTF16)] uint16 *NewMachineName,
-               [in] [string,charset(UTF16)] uint16 *Account,
-               [in] [string,charset(UTF16)] uint16 *password,
+               [in,unique] [string,charset(UTF16)] uint16 *server_name,
+               [in,unique] [string,charset(UTF16)] uint16 *NewMachineName,
+               [in,unique] [string,charset(UTF16)] uint16 *Account,
+               [in,unique] [string,charset(UTF16)] uint16 *password,
                [in] wkssvc_renameflags RenameOptions
                );
 
@@ -618,10 +617,10 @@ import "srvsvc.idl", "lsa.idl";
        } wkssvc_NetValidateNameType;
 
        WERROR wkssvc_NetrValidateName(
-               [in] [string,charset(UTF16)] uint16 *server_name,
+               [in,unique] [string,charset(UTF16)] uint16 *server_name,
                [in,ref] [string,charset(UTF16)] uint16 *name,
-               [in] [string,charset(UTF16)] uint16 *Account,
-               [in] [string,charset(UTF16)] uint16 *Password,
+               [in,unique] [string,charset(UTF16)] uint16 *Account,
+               [in,unique] [string,charset(UTF16)] uint16 *Password,
                [in] wkssvc_NetValidateNameType name_type
                );
 
@@ -635,7 +634,7 @@ import "srvsvc.idl", "lsa.idl";
        } wkssvc_NetJoinStatus;
 
        WERROR wkssvc_NetrGetJoinInformation(
-               [in] [string,charset(UTF16)] uint16 *server_name,
+               [in,unique] [string,charset(UTF16)] uint16 *server_name,
                [in,out,ref] [string,charset(UTF16)] uint16 **name_buffer,
                [out,ref] wkssvc_NetJoinStatus *name_type
                );
@@ -643,10 +642,10 @@ import "srvsvc.idl", "lsa.idl";
        /*****************************/
        /* Function        0x15      */
        WERROR wkssvc_NetrGetJoinableOus(
-               [in] [string,charset(UTF16)] uint16 *server_name,
+               [in,unique] [string,charset(UTF16)] uint16 *server_name,
                [in,ref] [string,charset(UTF16)] uint16 *domain_name,
-               [in] [string,charset(UTF16)] uint16 *Account,
-               [in] [string,charset(UTF16)] uint16 *unknown,
+               [in,unique] [string,charset(UTF16)] uint16 *Account,
+               [in,unique] [string,charset(UTF16)] uint16 *unknown,
                [in,out,ref] uint32 *num_ous,
                [out,ref] [size_is(*num_ous)] [string,charset(UTF16)] uint16 ***ous
                );
@@ -687,50 +686,50 @@ import "srvsvc.idl", "lsa.idl";
        /*****************************/
        /* Function        0x16      */
        WERROR wkssvc_NetrJoinDomain2 (
-               [in]         [string,charset(UTF16)] uint16 *server_name,
+               [in,unique]  [string,charset(UTF16)] uint16 *server_name,
                [in,ref]     [string,charset(UTF16)] uint16 *domain_name,
-               [in]         [string,charset(UTF16)] uint16 *account_ou,
-               [in]         [string,charset(UTF16)] uint16 *admin_account,
-               [in]         wkssvc_PasswordBuffer *encrypted_password,
+               [in,unique]  [string,charset(UTF16)] uint16 *account_ou,
+               [in,unique]  [string,charset(UTF16)] uint16 *admin_account,
+               [in,unique]  wkssvc_PasswordBuffer *encrypted_password,
                [in]         wkssvc_joinflags join_flags
                );
 
        /*****************************/
        /* Function        0x17      */
        WERROR wkssvc_NetrUnjoinDomain2 (
-               [in] [string,charset(UTF16)] uint16 *server_name,
-               [in] [string,charset(UTF16)] uint16 *account,
-               [in] wkssvc_PasswordBuffer *encrypted_password,
+               [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
                );
 
        /*****************************/
        /* Function        0x18      */
        WERROR wkssvc_NetrRenameMachineInDomain2(
-               [in] [string,charset(UTF16)] uint16 *server_name,
-               [in] [string,charset(UTF16)] uint16 *NewMachineName,
-               [in] [string,charset(UTF16)] uint16 *Account,
-               [in] wkssvc_PasswordBuffer *EncryptedPassword,
+               [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(
-               [in] [string,charset(UTF16)] uint16 *server_name,
+               [in,unique] [string,charset(UTF16)] uint16 *server_name,
                [in,ref] [string,charset(UTF16)] uint16 *name,
-               [in] [string,charset(UTF16)] uint16 *Account,
-               [in] wkssvc_PasswordBuffer *EncryptedPassword,
+               [in,unique] [string,charset(UTF16)] uint16 *Account,
+               [in,unique] wkssvc_PasswordBuffer *EncryptedPassword,
                [in] wkssvc_NetValidateNameType name_type
                );
 
        /*****************************/
        /* Function        0x1a      */
        WERROR wkssvc_NetrGetJoinableOus2(
-               [in] [string,charset(UTF16)] uint16 *server_name,
+               [in,unique] [string,charset(UTF16)] uint16 *server_name,
                [in,ref] [string,charset(UTF16)] uint16 *domain_name,
-               [in] [string,charset(UTF16)] uint16 *Account,
-               [in] wkssvc_PasswordBuffer *EncryptedPassword,
+               [in,unique] [string,charset(UTF16)] uint16 *Account,
+               [in,unique] wkssvc_PasswordBuffer *EncryptedPassword,
                [in,out,ref] uint32 *num_ous,
                [out,ref] [size_is(*num_ous)] [string,charset(UTF16)] uint16 ***ous
                );
@@ -738,30 +737,30 @@ import "srvsvc.idl", "lsa.idl";
        /*****************************/
        /* Function        0x1b      */
        WERROR wkssvc_NetrAddAlternateComputerName(
-               [in] [string,charset(UTF16)] uint16 *server_name,
-               [in] [string,charset(UTF16)] uint16 *NewAlternateMachineName,
-               [in] [string,charset(UTF16)] uint16 *Account,
-               [in] wkssvc_PasswordBuffer *EncryptedPassword,
+               [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] [string,charset(UTF16)] uint16 *server_name,
-               [in] [string,charset(UTF16)] uint16 *AlternateMachineNameToRemove,
-               [in] [string,charset(UTF16)] uint16 *Account,
-               [in] wkssvc_PasswordBuffer *EncryptedPassword,
+               [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(
-               [in] [string,charset(UTF16)] uint16 *server_name,
-               [in] [string,charset(UTF16)] uint16 *primary_name,
-               [in] [string,charset(UTF16)] uint16 *Account,
-               [in] wkssvc_PasswordBuffer *EncryptedPassword,
+               [in,unique] [string,charset(UTF16)] uint16 *server_name,
+               [in,unique] [string,charset(UTF16)] uint16 *primary_name,
+               [in,unique] [string,charset(UTF16)] uint16 *Account,
+               [in,unique] wkssvc_PasswordBuffer *EncryptedPassword,
                [in] uint32 Reserved
                );
 
@@ -780,7 +779,7 @@ import "srvsvc.idl", "lsa.idl";
         } wkssvc_ComputerNamesCtr;
 
        WERROR wkssvc_NetrEnumerateComputerNames(
-               [in] [string,charset(UTF16)] uint16 *server_name,
+               [in,unique] [string,charset(UTF16)] uint16 *server_name,
                [in] wkssvc_ComputerNameType name_type,
                [in] uint32 Reserved,
                [out,ref] wkssvc_ComputerNamesCtr **ctr
index 7939bb2df2eb1df32f248a4f70e3ceb802a4644a..75190211441e5c0db0840baa1361a21c9b1b031e 100644 (file)
@@ -148,10 +148,6 @@ sub CheckInterface($)
 {
        my $if = shift;
 
-       if (has_property($if, "pointer_default_top") and 
-               $if->{PROPERTIES}->{pointer_default_top} ne "ref") {
-               warning($if, "pointer_default_top() is pidl-specific");
-       }
 }
 
 sub Check($)
index 98e8f183a2bd11ac5c2a5094ff7fcdf8f4aad653..fb1e65854cbbf6b091dc36bd6dc425964d84b955 100644 (file)
@@ -581,7 +581,7 @@ sub ParseFunction($$$)
        my $rettype = undef;
        my $thisopnum = undef;
 
-       CheckPointerTypes($d, $ndr->{PROPERTIES}->{pointer_default_top});
+       CheckPointerTypes($d, "ref");
 
        if (not defined($d->{PROPERTIES}{noopnum})) {
                $thisopnum = ${$opnum};
@@ -661,12 +661,6 @@ sub ParseInterface($)
                $idl->{PROPERTIES}->{pointer_default} = "unique";
        }
 
-       if (not has_property($idl, "pointer_default_top")) {
-               $idl->{PROPERTIES}->{pointer_default_top} = "ref";
-       } else {
-               warning($idl, "pointer_default_top() is a pidl extension and should not be used");
-       }
-
        foreach my $d (@{$idl->{DATA}}) {
                if ($d->{TYPE} eq "FUNCTION") {
                        push (@functions, ParseFunction($idl, $d, \$opnum));
@@ -824,7 +818,6 @@ my %property_list = (
        "uuid"                  => ["INTERFACE"],
        "endpoint"              => ["INTERFACE"],
        "pointer_default"       => ["INTERFACE"],
-       "pointer_default_top"   => ["INTERFACE"],
        "helper"                => ["INTERFACE"],
        "authservice"           => ["INTERFACE"],
 
index 735d929e279313931d0e2d223b85965355c0caf0..11b585c1184228fdad4d04bbb9590ba017e1ab40 100755 (executable)
@@ -19,9 +19,3 @@ sub parse_idl($)
 
 test_warnings("", sub {parse_idl("void x();"); });
 test_warnings("nofile:0: top-level [out] pointer `x' is not a [ref] pointer\n", sub {parse_idl("void x([out,unique] int *x);"); });
-
-test_warnings("nofile:0: pointer_default_top() is a pidl extension and should not be used\n", sub {
-       my $pidl = Parse::Pidl::IDL::parse_string("[pointer_default_top(unique)] interface echo { void x(); }; ", "nofile");
-       Parse::Pidl::NDR::Parse($pidl);
-});
-