| /* | |
| * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA | |
| */ | |
| /* see the official DCOM specification | |
| * (there's a copy at http://www.grimes.demon.co.uk/DCOM/DCOMSpec.htm) */ | |
| #pragma makedep proxy | |
| #pragma makedep register | |
| import "unknwn.idl"; | |
| [ | |
| threading(both), | |
| uuid(00000320-0000-0000-c000-000000000046) | |
| ] | |
| coclass PSFactoryBuffer { interface IFactoryBuffer; } | |
| [ | |
| 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; | |
| typedef struct tagOXID_INFO { | |
| DWORD dwTid; | |
| DWORD dwPid; | |
| IPID ipidRemUnknown; | |
| DWORD dwAuthnHint; | |
| DUALSTRINGARRAY *psa; | |
| } OXID_INFO; | |
| 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; | |
| ULONG 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] ULONG 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); | |
| } | |
| [ | |
| 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); | |
| } |