-/*\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")