r2740: Finish the RemoteActivation interface. Torture tests will follow
authorJelmer Vernooij <jelmer@samba.org>
Tue, 28 Sep 2004 22:04:35 +0000 (22:04 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:59:29 +0000 (12:59 -0500)
after pidl has been fixed (to be able to use input variables
inside size_is() for output variables)
(This used to be commit ea0b0bfea97067118dab634efefd3115b7a0fd85)

source4/librpc/idl/dcom.idl
source4/librpc/idl/remact.idl

index ab9bf683fbbe5caf6f397d0d485505fba15b9137..cbe3e88b1bb9ad30fdb019294c63c38c184950e7 100644 (file)
@@ -242,7 +242,7 @@ interface ObjectRpcBaseTypes
        {
        } u_null;
 
-       typedef union 
+       typedef [nodiscriminant] union 
        {
                [case(OBJREF_NULL)] u_null u_null;
                [case(OBJREF_STANDARD)] u_standard u_standard;
@@ -262,7 +262,8 @@ interface ObjectRpcBaseTypes
        // wire representation of a marshalled interface pointer
        typedef [public] struct 
        {
-               [subcontext(4)] OBJREF abData; // data (OBJREF)
+               uint32 size;
+               [size_is(size)] uint8 data[];
        } MInterfacePointer;
 }
 
@@ -365,7 +366,7 @@ interface IRemUnknown : IUnknown
        object
 ] interface IClassActivator : IUnknown
 {
-       void RemoteGetClassObject([in] GUID classid, 
+       void RemoteGetClassObject([in] GUID clsid, 
                                                                                          [in] uint32 context,
                                                                                          [in] LCID locale,
                                                                                          [in] GUID iid/*FIXME,
@@ -380,11 +381,7 @@ interface IRemUnknown : IUnknown
 ]
        interface ISystemActivator : IClassActivator
 {
-       void ISystemActivatorRemoteCreateInstance(
-                                                                                         [in] GUID classid,
-                                                                                         [in] OBJREF obj,
-                                                                                         [out] MInterfacePointer res
-                                                                                         );
+       void ISystemActivatorRemoteCreateInstance();
 }
 
 
index 02223f0c11969849af001bb46dba8164bd0b4c67..756f9a45be30f3aedaa0598b77afa839fcaa77e2 100644 (file)
 ]
 interface IRemoteActivation
 {
-       typedef [public] struct {
-               MInterfacePointer *ppInterfaceData;
-       } ppInterfaceDataArray;
-
-       typedef [public] struct {
-               DUALSTRINGARRAY *dualstringarray;
-       } REF_DUALSTRINGARRAY;
-
        typedef struct {
                /* Looks very much like a protocol tower to me, but it appears 
                   to be aligned differently then it is in epmapper -jelmer
@@ -31,6 +23,8 @@ interface IRemoteActivation
 
        const uint32 MODE_GET_CLASS_OBJECT = 0xffffffff;
        HRESULT RemoteActivation (
+                       [in] ORPCTHIS ORPCthis,
+                       [out] ORPCTHAT ORPCthat,
                        [in] GUID Clsid,
                        [in, unique] unistr *pwszObjectName,
                        [in, unique] MInterfacePointer *pObjectStorage,
@@ -40,13 +34,13 @@ interface IRemoteActivation
                        [in, unique,size_is(Interfaces)] GUID *pIIDs,
                        [in] uint16 num_protseqs,
                        [in, size_is(num_protseqs)] floor_tmp protseq[],
-                       [out] GUID pOxid,
+                       [out] HYPER_T pOxid,
                        [out] DUALSTRINGARRAY *pdsaOxidBindings,
                        [out] IPID ipidRemUnknown,
                        [out] uint32 pAuthnHint,
                        [out] COMVERSION pServerVersion,
-                       [out] HRESULT *phr,
-                       [out,size_is(Interfaces)] ppInterfaceDataArray *ppInterfaceData,
-                       [out,size_is(Interfaces)] HRESULT *pResults
+                       [out] HRESULT phr,
+                       [out,size_is(Interfaces)] MInterfacePointer ifaces[],
+                       [out,size_is(Interfaces)] HRESULT results[]
                        );
 }