| /* |
| * 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); |
| } |