Reimport DCOM IDL.
authorJelmer Vernooij <jelmer@samba.org>
Wed, 7 May 2008 14:22:19 +0000 (16:22 +0200)
committerJelmer Vernooij <jelmer@samba.org>
Mon, 15 Sep 2008 15:36:51 +0000 (17:36 +0200)
source4/librpc/idl/dcom.idl [new file with mode: 0644]

diff --git a/source4/librpc/idl/dcom.idl b/source4/librpc/idl/dcom.idl
new file mode 100644 (file)
index 0000000..2a2b9ad
--- /dev/null
@@ -0,0 +1,307 @@
+/**
+  DCOM interfaces
+  http://www.ietf.org/internet-drafts/draft-brown-dcom-v1-spec-04.txt
+ */
+
+[
+       uuid("18f70770-8e64-11cf-9af1-0020af6e72f4"),
+       pointer_default(unique),
+       version(0.0)
+] interface dcom_Unknown
+{
+       void UseProtSeq();
+       void GetCustomProtseqInfo();
+       void UpdateResolverBindings();
+}
+
+[
+       object,
+       uuid("00000000-0000-0000-C000-000000000046"),
+       pointer_default(unique),
+       helpstring("Base interface for all COM interfaces"),
+       keepref
+]
+interface IUnknown
+{
+       /*****************/
+       /* Function 0x00 */
+       /* Returns the interface with the specified IID 
+          if implemented by this object */
+       [local] WERROR QueryInterface([in,unique] GUID *iid,
+          [out,iid_is(riid)] IUnknown **data);
+
+       /*****************/
+       /* Function 0x01 */
+       [local] uint32 AddRef();
+
+       /*****************/
+       /* Function 0x02 */
+       [local] uint32 Release();
+}
+
+
+[
+       object,
+       uuid("00000001-0000-0000-C000-000000000046"),
+       pointer_default(unique),
+       keepref
+] interface IClassFactory : IUnknown
+{
+       [local] WERROR CreateInstance([in,unique] MInterfacePointer *pUnknown, 
+                              [in,unique] GUID *iid,
+                              [out, iid_is(riid),unique] MInterfacePointer *ppv);
+
+       [call_as(CreateInstance)] WERROR RemoteCreateInstance();
+
+       /* Set lock to TRUE when you want to do a lock
+       and set it to FALSE when you want to unlock */
+       [local] WERROR LockServer([in] uint8 lock);
+
+       [call_as(LockServer)] WERROR RemoteLockServer();
+}
+
+/* The remote version of IUnknown. This interface exists on every */
+/* OXID (whether an OXID represents either a thread or a process is */
+/* implementation specific). It is used by clients to query for new */
+/* interfaces, get additional references (for marshaling), and release */
+/* outstanding references. */
+/* This interface is passed along during OXID resolution. */
+/* */
+[
+       uuid("00000131-0000-0000-C000-000000000046"),
+       object,
+       pointer_default(unique),
+       helpstring("Remote version of IUnknown"),
+       keepref
+]
+interface IRemUnknown : IUnknown
+{
+       typedef [public] struct 
+       {
+               WERROR hResult; /* result of call */
+               STDOBJREF std; /* data for returned interface */
+       }
+       REMQIRESULT;
+
+       [call_as(QueryInterface)] WERROR RemQueryInterface (
+               [in,unique] GUID *ripid, /* interface to QI on */
+               [in] uint32 cRefs, /* count of AddRefs requested */
+               [in] uint16 cIids, /* count of IIDs that follow */
+               [in, unique, size_is(cIids)] GUID *iids, /* IIDs to QI for */
+               [out, size_is(cIids), unique] MInterfacePointer *ip
+               );
+
+       typedef struct 
+       {
+               GUID ipid; /* ipid to AddRef/Release */
+               uint32 cPublicRefs;
+               uint32 cPrivateRefs;
+       } REMINTERFACEREF;
+
+       [call_as(AddRef)] WERROR RemAddRef (
+                [in] uint16 cInterfaceRefs,
+                [in, size_is(cInterfaceRefs)] REMINTERFACEREF InterfaceRefs[],
+                [out, size_is(cInterfaceRefs), unique] WERROR *pResults
+               );
+
+       [call_as(Release)] WERROR RemRelease (
+                [in] uint16 cInterfaceRefs,
+                [in, size_is(cInterfaceRefs)] REMINTERFACEREF InterfaceRefs[]
+               );
+}
+
+[
+       uuid("00000140-0000-0000-c000-000000000046"),
+       pointer_default(unique),
+       object
+] interface IClassActivator : IUnknown
+{
+       void GetClassObject([in] GUID clsid, 
+                               [in] uint32 context,
+                                               [in] uint32 locale,
+                                               [in] GUID iid,
+                                               [out, iid_is(iid)] MInterfacePointer data);
+}
+
+[
+       uuid("00000136-0000-0000-c000-000000000046"),
+       pointer_default(unique),
+       object
+] interface ISCMLocalActivator : IClassActivator
+{
+       WERROR ISCMLocalActivator_CreateInstance( );
+}
+
+[
+       pointer_default(unique),
+       uuid("c6f3ee72-ce7e-11d1-b71e-00c04fc3111a")
+] interface IMachineLocalActivator 
+{
+       WERROR IMachineLocalActivator_foo();
+}
+
+[
+       pointer_default(unique),
+       uuid("e60c73e6-88f9-11cf-9af1-0020af6e72f4")
+] interface ILocalObjectExporter
+{
+       WERROR ILocalObjectExporter_Foo();
+}
+
+/* Looks like this is the equivalent of .NET's 
+   System.Activator class */
+[
+       uuid("000001a0-0000-0000-c000-000000000046"),
+       pointer_default(unique),
+       object
+]
+       interface ISystemActivator : IClassActivator
+{
+       WERROR ISystemActivatorRemoteCreateInstance([in] hyper unknown1,  /* OXID ? */
+                                                                                         [in] MInterfacePointer iface1,
+                                                                                         [in] hyper unknown2,
+                                                                                         [out] uint32 unknown3, 
+                                                                                         [out] MInterfacePointer iface2);
+}
+
+
+
+/* Derived from IRemUnknown, this interface supports Remote Query interface */
+/* for objects that supply additional data beyond the STDOBJREF in their */
+/* marshaled interface packets. */
+[
+       object,
+       pointer_default(unique),
+       uuid("00000143-0000-0000-C000-000000000046"),
+       keepref
+]
+
+interface IRemUnknown2 : IRemUnknown
+{
+       [call_as(QueryInterface2)] WERROR RemQueryInterface2 (
+                [in, unique] GUID *ripid,
+                [in] uint16 cIids,
+                [in, size_is(cIids), unique] GUID *iids,
+                [out, size_is(cIids), unique] WERROR *phr,
+                [out, size_is(cIids), unique] MInterfacePointer *ppMIF
+               );
+}
+
+[
+       object,
+       pointer_default(unique),
+       uuid("00020400-0000-0000-C000-000000000046"),
+       keepref
+] interface IDispatch : IUnknown
+{
+       /*****************/
+       /* Function 0x03 */
+       WERROR GetTypeInfoCount(
+                       [out, unique] uint16 *pctinfo);
+
+       typedef struct {
+       } REF_ITypeInfo;
+
+       /*****************/
+       /* Function 0x04 */
+       WERROR GetTypeInfo (
+                       [in] uint16 iTInfo,
+                       [in] uint32 lcid,
+                       [out, unique] REF_ITypeInfo *ppTInfo);
+
+       /*****************/
+       /* Function 0x05 */
+       WERROR GetIDsOfNames(
+                       [in, unique] GUID *riid,
+                       /*FIXME[in,size_is(cNames)] OLESTR *rgszNames[], */
+                       [in] uint16 cNames,
+                       [in] uint32 lcid,
+                       [out,size_is(cNames), unique] uint32 *rgDispId);
+
+       typedef struct {
+               uint16 vartype;
+               uint16 FIXME;
+       } VARIANT;
+
+       typedef struct {
+               uint16 FIXME;
+       } DISPPARAMS;
+
+       /* Exception ? */
+       typedef struct {
+               uint16 FIXME;
+       } EXCEPINFO;
+
+       /*****************/
+       /* Function 0x06 */
+       WERROR Invoke(
+                       [in] uint32 dispIdMember,
+                       [in, unique] GUID *riid,
+                       [in] uint32 lcid,
+                       [in] uint16 wFlags,
+                       [out,in, unique] DISPPARAMS *pDispParams,
+                       [out, unique] VARIANT *pVarResult,
+                       [out, unique] EXCEPINFO *pExcepInfo,
+                       [out, unique] uint16 *puArgErr);
+}
+
+[
+       object,
+       local,
+       uuid("00000003-0000-0000-C000-000000000046")
+] interface IMarshal : IUnknown
+{
+       WERROR MarshalInterface();
+       WERROR UnMarshalInterface();
+}
+
+[
+       uuid(DA23F6DB-6F45-466C-9EED-0B65286F2D78),
+       helpstring("ICoffeeMachine Interface"),
+       pointer_default(unique),
+       object,
+       keepref
+] interface ICoffeeMachine : IUnknown
+{
+       WERROR MakeCoffee([in,string,charset(UTF16)] uint16 *flavor);
+}
+
+[
+       uuid("db7c21f8-fe33-4c11-aea5-ceb56f076fbb"),
+       helpstring("coffeemachine class")
+] coclass coffeemachine
+{
+       interface icoffeemachine;
+}
+
+[
+       object,
+       pointer_default(unique),
+       uuid("0000000C-0000-0000-C000-000000000046"),
+       helpstring("Stream"),
+       keepref
+]
+interface IStream : IUnknown
+{
+       WERROR Read(
+                               [out, size_is(num_requested), length_is(num_read)] uint8 pv[],
+                               [in] uint32 num_requested, 
+                               [in, unique] uint32 *num_readx,
+                               [out] uint32 num_read
+                               );
+
+       WERROR Write(
+                               [in,size_is(num_requested),unique] uint8 *data,
+                                [in] uint32 num_requested,
+                                [out] uint32 num_written);
+}
+
+[
+       uuid("5e9ddec7-5767-11cf-beab-00aa006c3606"),
+       progid("Samba.Simple"),
+       helpstring("simple class"),
+       internal
+] coclass simple 
+{
+       interface IStream;
+}