summaryrefslogtreecommitdiffstats
path: root/private/dcomidl/remunk.idl
blob: aa8c7fdaf5cc205a57314c169e792ca2879f461c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
//+-------------------------------------------------------------------------
//
//  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.
//
//+-------------------------------------------------------------------------
[
    object,
    uuid(00000131-0000-0000-C000-000000000046)
]

interface IRemUnknown : IUnknown
{
#ifndef DO_NO_IMPORTS
    import "unknwn.idl";
    import "obase.idl";
#endif

    typedef struct tagREMQIRESULT
    {
	HRESULT		hResult;
	STDOBJREF	std;
    } REMQIRESULT;

    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
    );


    typedef struct tagREMINTERFACEREF
    {
	IPID		ipid;
	unsigned long	cPublicRefs;
	unsigned long   cPrivateRefs;
    } REMINTERFACEREF;

    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[]
    );
}