|
|
//+------------------------------------------------------------------------ // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1992 - 1995. // // File: remunk.idl // // The remote version of IUnknown. This interface exists on every // object that is exported. It is used by clients to query for new // interfaces, get additional references (for marshalling), and release // outstanding references. // //+------------------------------------------------------------------------- #ifndef DO_NO_IMPORTS import "unknwn.idl"; import "obase.idl"; #endif typedef struct tagREMQIRESULT { HRESULT hResult; STDOBJREF std; } REMQIRESULT; typedef struct tagREMINTERFACEREF { IPID ipid; unsigned long cPublicRefs; unsigned long cPrivateRefs; } REMINTERFACEREF;
[ object, uuid(00000131-0000-0000-C000-000000000046)
]
interface IRemUnknown : IUnknown { 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(000e0131-0000-0000-C000-000000000046), local ]
interface AsyncIRemUnknown : IUnknown {
HRESULT Begin_RemQueryInterface ( [in] REFIPID ripid, [in] unsigned long cRefs, [in] unsigned short cIids, [in] IID *iids ); HRESULT Finish_RemQueryInterface ( [out] REMQIRESULT **ppQIResults );
HRESULT Begin_RemAddRef ( [in] unsigned short cInterfaceRefs, [in, size_is(cInterfaceRefs)] REMINTERFACEREF InterfaceRefs[] ); HRESULT Finish_RemAddRef ( [out] HRESULT *pResults );
HRESULT Begin_RemRelease ( [in] unsigned short cInterfaceRefs, [in, size_is(cInterfaceRefs)] REMINTERFACEREF InterfaceRefs[] ); HRESULT Finish_RemRelease(); };
[ object, uuid(000e0143-0000-0000-C000-000000000046), local ]
interface AsyncIRemUnknown2 : IUnknown {
HRESULT Begin_RemQueryInterface ( [in] REFIPID ripid, [in] unsigned long cRefs, [in] unsigned short cIids, [in] IID *iids ); HRESULT Finish_RemQueryInterface ( [out] REMQIRESULT **ppQIResults );
HRESULT Begin_RemAddRef ( [in] unsigned short cInterfaceRefs, [in, size_is(cInterfaceRefs)] REMINTERFACEREF InterfaceRefs[] ); HRESULT Finish_RemAddRef ( [out] HRESULT *pResults );
HRESULT Begin_RemRelease ( [in] unsigned short cInterfaceRefs, [in, size_is(cInterfaceRefs)] REMINTERFACEREF InterfaceRefs[] ); HRESULT Finish_RemRelease(); HRESULT Begin_RemQueryInterface2 ( [in] REFIPID ripid, [in] unsigned short cIids, [in, size_is(cIids)] IID *iids );
HRESULT Finish_RemQueryInterface2( [out] HRESULT *phr, [out] MInterfacePointer **ppMIF ); };
[ object, uuid(00000143-0000-0000-C000-000000000046),
] //+------------------------------------------------------------------------- // // IRemUnknown2 // // Derived from IRemUnknown, this interface supports Remote Query interface // for objects that supply additional data beyond the STDOBJREF in their // marshaled interface packets. // // The ppMIF that is returned contains an array of marshaled interface // pointers, without the headers that CoMarshalInterface adds. // //+------------------------------------------------------------------------- interface IRemUnknown2 : IRemUnknown { #ifndef DO_NO_IMPORTS import "unknwn.idl"; import "obase.idl"; #endif
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 ); }
//+------------------------------------------------------------------------- // // The IRemoteQI interface. This interface exists on every static // object. It is used by clients to query for new and non-statically // published interfaces only. It does not do addref and release like // IRemUnknown. // //+------------------------------------------------------------------------- [ object, uuid(00000142-0000-0000-C000-000000000046) ]
interface IRemoteQI : IUnknown { #ifndef DO_NO_IMPORTS import "unknwn.idl"; import "obase.idl"; #endif
typedef struct tagREMOTEQIRESULT { HRESULT hResult; IPID ipid; } REMOTEQIRESULT;
HRESULT RemoteQI ( [in] unsigned short cIids, [in, size_is(cIids)] IID *iids, [out, size_is(,cIids)] REMOTEQIRESULT **ppQIResults ); }
|