windows-nt/Source/XPSP1/NT/com/ole32/idl/public/remunk.idl
2020-09-26 16:20:57 +08:00

232 lines
5.4 KiB
Plaintext

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