232 lines
5.4 KiB
Plaintext
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
|
|
);
|
|
}
|