Sync from Wine-20050830 to Wine-0_9_1:
[reactos.git] / reactos / lib / ole32 / dcom.idl
index 37c6b47..7d95f37 100644 (file)
-/*\r
- * Copyright 2003 Ove Kåven, TransGaming Technologies\r
- *\r
- * This library is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU Lesser General Public\r
- * License as published by the Free Software Foundation; either\r
- * version 2.1 of the License, or (at your option) any later version.\r
- *\r
- * This library is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
- * Lesser General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU Lesser General Public\r
- * License along with this library; if not, write to the Free Software\r
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
- */\r
-\r
-/* see http://www.microsoft.com/msj/0398/dcom.htm */\r
-/* and the official DCOM specification\r
- * (there's a copy at http://www.grimes.demon.co.uk/DCOM/DCOMSpec.htm) */\r
-\r
-import "unknwn.idl";\r
-\r
-[\r
-  uuid(99fcfe60-5260-101b-bbcb-00aa0021347a),\r
-  pointer_default(unique)\r
-]\r
-interface ObjectRpcBaseTypes\r
-{\r
-  typedef unsigned hyper ID;\r
-  typedef ID MID;\r
-  typedef ID OXID;\r
-  typedef ID OID;\r
-  typedef ID SETID;\r
-  typedef GUID IPID;\r
-  typedef GUID CID;\r
-  typedef REFGUID REFIPID;\r
-\r
-  const unsigned short COM_MINOR_VERSION_1 = 1;\r
-  const unsigned short COM_MINOR_VERSION_2 = 2;\r
-\r
-  const unsigned short COM_MAJOR_VERSION = 5;\r
-  const unsigned short COM_MINOR_VERSION = 3;\r
-\r
-  typedef struct tagCOMVERSION {\r
-    unsigned short MajorVersion;\r
-    unsigned short MinorVersion;\r
-  } COMVERSION;\r
-\r
-  const unsigned long ORPCF_NULL = 0;\r
-  const unsigned long ORPCF_LOCAL = 1;\r
-  const unsigned long ORPCF_RESERVED1 = 2;\r
-  const unsigned long ORPCF_RESERVED2 = 4;\r
-  const unsigned long ORPCF_RESERVED3 = 8;\r
-  const unsigned long ORPCF_RESERVED4 = 16;\r
-\r
-  typedef struct tagORPC_EXTENT {\r
-    GUID id;\r
-    unsigned long size;\r
-    [size_is((size+7)&~7)] byte data[];\r
-  } ORPC_EXTENT;\r
-\r
-  typedef struct tagORPC_EXTENT_ARRAY {\r
-    unsigned long size;\r
-    unsigned long reserved;\r
-    [size_is((size+1)&~1,), unique] ORPC_EXTENT **extent;\r
-  } ORPC_EXTENT_ARRAY;\r
-\r
-  typedef struct tagORPCTHIS {\r
-    COMVERSION version;\r
-    unsigned long flags;\r
-    unsigned long reserved1;\r
-    CID cid;\r
-    [unique] ORPC_EXTENT_ARRAY *extensions;\r
-  } ORPCTHIS;\r
-\r
-  typedef struct tagORPCTHAT {\r
-    unsigned long flags;\r
-    [unique] ORPC_EXTENT_ARRAY *extensions;\r
-  } ORPCTHAT;\r
-\r
-  const unsigned short NCADG_IP_UDP = 0x08;\r
-  const unsigned short NCACN_IP_TCP = 0x07;\r
-  const unsigned short NCADG_IPX = 0x0E;\r
-  const unsigned short NCACN_SPX = 0x0C;\r
-  const unsigned short NCACN_NB_NB = 0x12;\r
-  const unsigned short NCACN_NB_IPX = 0x0D;\r
-  const unsigned short NCACN_DNET_NSP = 0x04;\r
-  const unsigned short NCACN_HTTP = 0x1F;\r
-\r
-  typedef struct tagSTRINGBINDING {\r
-    unsigned short wTowerId;\r
-    [string] unsigned short aNetworkAddr[];\r
-  } STRINGBINDING;\r
-\r
-  const unsigned short COM_C_AUTHZ_NONE = 0xffff;\r
-\r
-  typedef struct tagSECURITYBINDING {\r
-    unsigned short wAuthnSvc;\r
-    unsigned short wAuthzSvc;\r
-    [string] unsigned short aPrincName[];\r
-  } SECURITYBINDING;\r
-\r
-  typedef struct tagDUALSTRINGARRAY {\r
-    unsigned short wNumEntries;\r
-    unsigned short wSecurityOffset;\r
-    [size_is(wNumEntries)] unsigned short aStringArray[];\r
-  } DUALSTRINGARRAY;\r
-\r
-  const unsigned long OBJREF_SIGNATURE = 0x574f454d; /* "MEOW" */\r
-  const unsigned long OBJREF_STANDARD = 0x1;\r
-  const unsigned long OBJREF_HANDLER = 0x2;\r
-  const unsigned long OBJREF_CUSTOM = 0x4;\r
-  const unsigned long SORF_OXRES1 = 0x1;\r
-  const unsigned long SORF_OXRES2 = 0x20;\r
-  const unsigned long SORF_OXRES3 = 0x40;\r
-  const unsigned long SORF_OXRES4 = 0x80;\r
-  const unsigned long SORF_OXRES5 = 0x100;\r
-  const unsigned long SORF_OXRES6 = 0x200;\r
-  const unsigned long SORF_OXRES7 = 0x400;\r
-  const unsigned long SORF_OXRES8 = 0x800;\r
-  const unsigned long SORF_NULL = 0x0;\r
-  const unsigned long SORF_NOPING = 0x1000;\r
-\r
-  typedef struct tagSTDOBJREF {\r
-    unsigned long flags;\r
-    unsigned long cPublicRefs;\r
-    OXID oxid;\r
-    OID oid;\r
-    IPID ipid;\r
-  } STDOBJREF;\r
-\r
-  typedef struct tagOBJREF {\r
-    unsigned long signature;\r
-    unsigned long flags;\r
-    GUID iid;\r
-    [switch_is(flags)] union {\r
-    [case(OBJREF_STANDARD)] struct OR_STANDARD {\r
-        STDOBJREF std;\r
-        DUALSTRINGARRAY saResAddr;\r
-      } u_standard;\r
-    [case(OBJREF_HANDLER)] struct OR_HANDLER {\r
-        STDOBJREF std;\r
-        CLSID clsid;\r
-        DUALSTRINGARRAY saResAddr;\r
-      } u_handler;\r
-    [case(OBJREF_CUSTOM)] struct OR_CUSTOM {\r
-        CLSID clsid;\r
-        unsigned long cbExtension;\r
-        unsigned long size;\r
-        [size_is(size), ref] byte *pData;\r
-      } u_custom;\r
-    } u_objref;\r
-  } OBJREF;\r
-\r
-  typedef struct tagMInterfacePointer {\r
-    ULONG ulCntData;\r
-    [size_is(ulCntData)] BYTE abData[];\r
-  } MInterfacePointer;\r
-\r
-  typedef [unique] MInterfacePointer *PMInterfacePointer;\r
-\r
-} /* interface ObjectRpcBaseTypes */\r
-\r
-[\r
-  object,\r
-  uuid(00000131-0000-0000-C000-000000000046)\r
-]\r
-interface IRemUnknown : IUnknown\r
-{\r
-  typedef [unique] IRemUnknown *LPREMUNKNOWN;\r
-\r
-  typedef struct tagREMQIRESULT {\r
-    HRESULT hResult;\r
-    STDOBJREF std;\r
-  } REMQIRESULT;\r
-\r
-  typedef struct tagREMINTERFACEREF {\r
-    IPID ipid;\r
-    unsigned long cPublicRefs;\r
-    unsigned long cPrivateRefs;\r
-  } REMINTERFACEREF; \r
-\r
-  HRESULT RemQueryInterface(\r
-    [in] REFIPID ripid,\r
-    [in] unsigned long cRefs,\r
-    [in] unsigned short cIids,\r
-    [in, size_is(cIids)] IID *iids,\r
-    [out, size_is(,cIids)] REMQIRESULT **ppQIResults);\r
-\r
-  HRESULT RemAddRef(\r
-    [in] unsigned short cInterfaceRefs,\r
-    [in, size_is(cInterfaceRefs)] REMINTERFACEREF* InterfaceRefs,\r
-    [out, size_is(cInterfaceRefs)] HRESULT *pResults);\r
-\r
-  HRESULT RemRelease(\r
-    [in] unsigned short cInterfaceRefs,\r
-    [in, size_is(cInterfaceRefs)] REMINTERFACEREF* InterfaceRefs);\r
-}\r
-\r
-[\r
-  object,\r
-  uuid(00000142-0000-0000-C000-000000000046)\r
-]\r
-interface IRemUnknown2 : IRemUnknown\r
-{\r
-  typedef [unique] IRemUnknown2 *LPREMUNKNOWN2;\r
-\r
-  HRESULT RemQueryInterface2(\r
-    [in] REFIPID ripid,\r
-    [in] unsigned short cIids,\r
-    [in, size_is(cIids)] IID *iids,\r
-    [out, size_is(cIids)] HRESULT *phr,\r
-    [out, size_is(cIids)] MInterfacePointer **ppMIF);\r
-}\r
-\r
-cpp_quote("#if 0")\r
-[\r
-  uuid(99fcfec4-5260-101b-bbcb-00aa0021347a),\r
-  pointer_default(unique)\r
-]\r
-interface IOXIDResolver\r
-{\r
-  [idempotent] error_status_t ResolveOxid(\r
-    [in] handle_t hRpc,\r
-    [in] OXID *pOxid,\r
-    [in] unsigned short cRequestedProtseqs,\r
-    [in, ref, size_is(cRequestedProtseqs)] unsigned short arRequestedProtseqs[],\r
-    [out, ref] DUALSTRINGARRAY **ppdsaOxidBindings,\r
-    [out, ref] IPID *pipidRemUnknown,\r
-    [out, ref] DWORD *pAuthnHint);\r
-\r
-  [idempotent] error_status_t SimplePing(\r
-    [in] handle_t hRpc,\r
-    [in] SETID *pSetId);\r
-\r
-  [idempotent] error_status_t ComplexPing(\r
-    [in] handle_t hRpc,\r
-    [in, out] SETID *pSetId,\r
-    [in] unsigned short SequenceNum,\r
-    [in] unsigned short cAddToSet,\r
-    [in] unsigned short cDelFromSet,\r
-    [in, unique, size_is(cAddToSet)] OID AddToSet[],\r
-    [in, unique, size_is(cDelFromSet)] OID DelFromSet[],\r
-    [out] unsigned short *pPingBackoffFactor);\r
-\r
-  [idempotent] error_status_t ServerAlive(\r
-    [in] handle_t hRpc);\r
-\r
-  [idempotent] error_status_t ResolveOxid2(\r
-    [in] handle_t hRpc,\r
-    [in] OXID *pOxid,\r
-    [in] unsigned short cRequestedProtseqs,\r
-    [in, ref, size_is(cRequestedProtseqs)] unsigned short arRequestedProtseqs[],\r
-    [out, ref] DUALSTRINGARRAY **ppdsaOxidBindings,\r
-    [out, ref] IPID *pipidRemUnknown,\r
-    [out, ref] DWORD *pAuthnHint,\r
-    [out, ref] COMVERSION *pComVersion); \r
-}\r
-\r
-[\r
-  uuid(4d9f4ab8-7d1c-11cf-861e-0020af6e7c57),\r
-  pointer_default(unique)\r
-]\r
-interface IRemoteActivation\r
-{\r
-  const unsigned long MODE_GET_CLASS_OBJECT = 0xffffffff;\r
-\r
-  HRESULT RemoteActivation(\r
-    [in] handle_t hRpc,\r
-    [in] ORPCTHIS *ORPCthis,\r
-    [out] ORPCTHAT *ORPCthat,\r
-    [in] GUID *Clsid,\r
-    [in, string, unique] WCHAR *pwszObjectName,\r
-    [in, unique] MInterfacePointer *pObjectStorage,\r
-    [in] DWORD ClientImpLevel,\r
-    [in] DWORD Mode,\r
-    [in] DWORD Interfaces,\r
-    [in, unique, size_is(Interfaces)] IID *pIIDs,\r
-    [in] unsigned short cRequestedProtseqs,\r
-    [in, size_is(cRequestedProtseqs)] unsigned short RequestedProtseqs[],\r
-    [out] OXID *pOxid,\r
-    [out] DUALSTRINGARRAY **ppdsaOxidBindings,\r
-    [out] IPID *pipidRemUnknown,\r
-    [out] DWORD *pAuthnHint,\r
-    [out] COMVERSION *pServerVersion,\r
-    [out] HRESULT *phr,\r
-    [out,size_is(Interfaces)] MInterfacePointer **ppInterfaceData,\r
-    [out,size_is(Interfaces)] HRESULT *pResults);\r
-}\r
-cpp_quote("#endif")\r
+/*
+ * Copyright 2003 Ove Kåven, TransGaming Technologies
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+/* see http://www.microsoft.com/msj/0398/dcom.htm */
+/* and the official DCOM specification
+ * (there's a copy at http://www.grimes.demon.co.uk/DCOM/DCOMSpec.htm) */
+
+import "unknwn.idl";
+
+[
+  uuid(99fcfe60-5260-101b-bbcb-00aa0021347a),
+  pointer_default(unique)
+]
+interface ObjectRpcBaseTypes
+{
+  typedef unsigned hyper ID;
+  typedef ID MID;
+  typedef ID OXID;
+  typedef ID OID;
+  typedef ID SETID;
+  typedef GUID IPID;
+  typedef GUID CID;
+  typedef REFGUID REFIPID;
+
+  const unsigned short COM_MINOR_VERSION_1 = 1;
+  const unsigned short COM_MINOR_VERSION_2 = 2;
+
+  const unsigned short COM_MAJOR_VERSION = 5;
+  const unsigned short COM_MINOR_VERSION = 3;
+
+  typedef struct tagCOMVERSION {
+    unsigned short MajorVersion;
+    unsigned short MinorVersion;
+  } COMVERSION;
+
+  const unsigned long ORPCF_NULL = 0;
+  const unsigned long ORPCF_LOCAL = 1;
+  const unsigned long ORPCF_RESERVED1 = 2;
+  const unsigned long ORPCF_RESERVED2 = 4;
+  const unsigned long ORPCF_RESERVED3 = 8;
+  const unsigned long ORPCF_RESERVED4 = 16;
+
+  typedef struct tagORPC_EXTENT {
+    GUID id;
+    unsigned long size;
+    [size_is((size+7)&~7)] byte data[];
+  } ORPC_EXTENT;
+
+  typedef struct tagORPC_EXTENT_ARRAY {
+    unsigned long size;
+    unsigned long reserved;
+    [size_is((size+1)&~1,), unique] ORPC_EXTENT **extent;
+  } ORPC_EXTENT_ARRAY;
+
+  typedef struct tagORPCTHIS {
+    COMVERSION version;
+    unsigned long flags;
+    unsigned long reserved1;
+    CID cid;
+    [unique] ORPC_EXTENT_ARRAY *extensions;
+  } ORPCTHIS;
+
+  typedef struct tagORPCTHAT {
+    unsigned long flags;
+    [unique] ORPC_EXTENT_ARRAY *extensions;
+  } ORPCTHAT;
+
+  const unsigned short NCADG_IP_UDP = 0x08;
+  const unsigned short NCACN_IP_TCP = 0x07;
+  const unsigned short NCADG_IPX = 0x0E;
+  const unsigned short NCACN_SPX = 0x0C;
+  const unsigned short NCACN_NB_NB = 0x12;
+  const unsigned short NCACN_NB_IPX = 0x0D;
+  const unsigned short NCACN_DNET_NSP = 0x04;
+  const unsigned short NCACN_HTTP = 0x1F;
+
+  typedef struct tagSTRINGBINDING {
+    unsigned short wTowerId;
+    [string] WCHAR aNetworkAddr[];
+  } STRINGBINDING;
+
+  const unsigned short COM_C_AUTHZ_NONE = 0xffff;
+
+  typedef struct tagSECURITYBINDING {
+    unsigned short wAuthnSvc;
+    unsigned short wAuthzSvc;
+    [string] WCHAR aPrincName[];
+  } SECURITYBINDING;
+
+  typedef struct tagDUALSTRINGARRAY {
+    unsigned short wNumEntries;
+    unsigned short wSecurityOffset;
+    [size_is(wNumEntries)] unsigned short aStringArray[];
+  } DUALSTRINGARRAY;
+
+  const unsigned long OBJREF_SIGNATURE = 0x574f454d; /* "MEOW" */
+  const unsigned long OBJREF_STANDARD = 0x1;
+  const unsigned long OBJREF_HANDLER = 0x2;
+  const unsigned long OBJREF_CUSTOM = 0x4;
+  const unsigned long SORF_OXRES1 = 0x1;
+  const unsigned long SORF_OXRES2 = 0x20;
+  const unsigned long SORF_OXRES3 = 0x40;
+  const unsigned long SORF_OXRES4 = 0x80;
+  const unsigned long SORF_OXRES5 = 0x100;
+  const unsigned long SORF_OXRES6 = 0x200;
+  const unsigned long SORF_OXRES7 = 0x400;
+  const unsigned long SORF_OXRES8 = 0x800;
+  const unsigned long SORF_NULL = 0x0;
+  const unsigned long SORF_NOPING = 0x1000;
+
+  typedef struct tagSTDOBJREF {
+    unsigned long flags;
+    unsigned long cPublicRefs;
+    OXID oxid;
+    OID oid;
+    IPID ipid;
+  } STDOBJREF;
+
+  typedef struct tagOBJREF {
+    unsigned long signature;
+    unsigned long flags;
+    GUID iid;
+    [switch_is(flags)] union {
+    [case(OBJREF_STANDARD)] struct OR_STANDARD {
+        STDOBJREF std;
+        DUALSTRINGARRAY saResAddr;
+      } u_standard;
+    [case(OBJREF_HANDLER)] struct OR_HANDLER {
+        STDOBJREF std;
+        CLSID clsid;
+        DUALSTRINGARRAY saResAddr;
+      } u_handler;
+    [case(OBJREF_CUSTOM)] struct OR_CUSTOM {
+        CLSID clsid;
+        unsigned long cbExtension;
+        unsigned long size;
+        [size_is(size), ref] byte *pData;
+      } u_custom;
+    } u_objref;
+  } OBJREF;
+
+  typedef struct tagMInterfacePointer {
+    ULONG ulCntData;
+    [size_is(ulCntData)] BYTE abData[];
+  } MInterfacePointer;
+
+  typedef [unique] MInterfacePointer *PMInterfacePointer;
+
+} /* interface ObjectRpcBaseTypes */
+
+[
+  object,
+  uuid(00000131-0000-0000-C000-000000000046)
+]
+interface IRemUnknown : IUnknown
+{
+  typedef [unique] IRemUnknown *LPREMUNKNOWN;
+
+  typedef struct tagREMQIRESULT {
+    HRESULT hResult;
+    STDOBJREF std;
+  } REMQIRESULT;
+
+  typedef struct tagREMINTERFACEREF {
+    IPID ipid;
+    unsigned long cPublicRefs;
+    unsigned long cPrivateRefs;
+  } REMINTERFACEREF; 
+
+  HRESULT RemQueryInterface(
+    [in] REFIPID ripid,
+    [in] unsigned long cRefs,
+    [in] unsigned short cIids,
+    [in, size_is(cIids)] IID *iids,
+    [out, size_is(,cIids)] REMQIRESULT **ppQIResults);
+
+  HRESULT RemAddRef(
+    [in] unsigned short cInterfaceRefs,
+    [in, size_is(cInterfaceRefs)] REMINTERFACEREF* InterfaceRefs,
+    [out, size_is(cInterfaceRefs)] HRESULT *pResults);
+
+  HRESULT RemRelease(
+    [in] unsigned short cInterfaceRefs,
+    [in, size_is(cInterfaceRefs)] REMINTERFACEREF* InterfaceRefs);
+}
+
+[
+  object,
+  uuid(00000142-0000-0000-C000-000000000046)
+]
+interface IRemUnknown2 : IRemUnknown
+{
+  typedef [unique] IRemUnknown2 *LPREMUNKNOWN2;
+
+  HRESULT RemQueryInterface2(
+    [in] REFIPID ripid,
+    [in] unsigned short cIids,
+    [in, size_is(cIids)] IID *iids,
+    [out, size_is(cIids)] HRESULT *phr,
+    [out, size_is(cIids)] MInterfacePointer **ppMIF);
+}
+
+cpp_quote("#if 0")
+[
+  uuid(99fcfec4-5260-101b-bbcb-00aa0021347a),
+  pointer_default(unique)
+]
+interface IOXIDResolver
+{
+  [idempotent] error_status_t ResolveOxid(
+    [in] handle_t hRpc,
+    [in] OXID *pOxid,
+    [in] unsigned short cRequestedProtseqs,
+    [in, ref, size_is(cRequestedProtseqs)] unsigned short arRequestedProtseqs[],
+    [out, ref] DUALSTRINGARRAY **ppdsaOxidBindings,
+    [out, ref] IPID *pipidRemUnknown,
+    [out, ref] DWORD *pAuthnHint);
+
+  [idempotent] error_status_t SimplePing(
+    [in] handle_t hRpc,
+    [in] SETID *pSetId);
+
+  [idempotent] error_status_t ComplexPing(
+    [in] handle_t hRpc,
+    [in, out] SETID *pSetId,
+    [in] unsigned short SequenceNum,
+    [in] unsigned short cAddToSet,
+    [in] unsigned short cDelFromSet,
+    [in, unique, size_is(cAddToSet)] OID AddToSet[],
+    [in, unique, size_is(cDelFromSet)] OID DelFromSet[],
+    [out] unsigned short *pPingBackoffFactor);
+
+  [idempotent] error_status_t ServerAlive(
+    [in] handle_t hRpc);
+
+  [idempotent] error_status_t ResolveOxid2(
+    [in] handle_t hRpc,
+    [in] OXID *pOxid,
+    [in] unsigned short cRequestedProtseqs,
+    [in, ref, size_is(cRequestedProtseqs)] unsigned short arRequestedProtseqs[],
+    [out, ref] DUALSTRINGARRAY **ppdsaOxidBindings,
+    [out, ref] IPID *pipidRemUnknown,
+    [out, ref] DWORD *pAuthnHint,
+    [out, ref] COMVERSION *pComVersion); 
+}
+
+[
+  uuid(4d9f4ab8-7d1c-11cf-861e-0020af6e7c57),
+  pointer_default(unique)
+]
+interface IRemoteActivation
+{
+  const unsigned long MODE_GET_CLASS_OBJECT = 0xffffffff;
+
+  HRESULT RemoteActivation(
+    [in] handle_t hRpc,
+    [in] ORPCTHIS *ORPCthis,
+    [out] ORPCTHAT *ORPCthat,
+    [in] GUID *Clsid,
+    [in, string, unique] WCHAR *pwszObjectName,
+    [in, unique] MInterfacePointer *pObjectStorage,
+    [in] DWORD ClientImpLevel,
+    [in] DWORD Mode,
+    [in] DWORD Interfaces,
+    [in, unique, size_is(Interfaces)] IID *pIIDs,
+    [in] unsigned short cRequestedProtseqs,
+    [in, size_is(cRequestedProtseqs)] unsigned short RequestedProtseqs[],
+    [out] OXID *pOxid,
+    [out] DUALSTRINGARRAY **ppdsaOxidBindings,
+    [out] IPID *pipidRemUnknown,
+    [out] DWORD *pAuthnHint,
+    [out] COMVERSION *pServerVersion,
+    [out] HRESULT *phr,
+    [out,size_is(Interfaces)] MInterfacePointer **ppInterfaceData,
+    [out,size_is(Interfaces)] HRESULT *pResults);
+}
+cpp_quote("#endif")