source: trunk/include/win/wine/obj_marshal.h

Last change on this file was 7925, checked in by sandervl, 24 years ago

header updates

File size: 4.6 KB
Line 
1/*
2 * Defines the COM interfaces and APIs that allow an interface to
3 * specify a custom marshaling for its objects.
4 */
5
6#ifndef __WINE_WINE_OBJ_MARSHAL_H
7#define __WINE_WINE_OBJ_MARSHAL_H
8
9#ifdef __cplusplus
10extern "C" {
11#endif /* defined(__cplusplus) */
12
13/*****************************************************************************
14 * Predeclare the interfaces
15 */
16DEFINE_OLEGUID(IID_IMarshal, 0x00000003L, 0, 0);
17typedef struct IMarshal IMarshal,*LPMARSHAL;
18
19DEFINE_OLEGUID(IID_IStdMarshalInfo, 0x00000018L, 0, 0);
20typedef struct IStdMarshalInfo IStdMarshalInfo,*LPSTDMARSHALINFO;
21
22DEFINE_OLEGUID(CLSID_DfMarshal, 0x0000030BL, 0, 0);
23
24
25/*****************************************************************************
26 * IMarshal interface
27 */
28#define ICOM_INTERFACE IMarshal
29#define IMarshal_METHODS \
30 ICOM_METHOD6(HRESULT,GetUnmarshalClass, REFIID,riid, void*,pv, DWORD,dwDestContext, void*,pvDestContext, DWORD,mshlflags, CLSID*,pCid) \
31 ICOM_METHOD6(HRESULT,GetMarshalSizeMax, REFIID,riid, void*,pv, DWORD,dwDestContext, void*,pvDestContext, DWORD,mshlflags, DWORD*,pSize) \
32 ICOM_METHOD6(HRESULT,MarshalInterface, IStream*,pStm, REFIID,riid, void*,pv, DWORD,dwDestContext, void*,pvDestContext, DWORD,mshlflags) \
33 ICOM_METHOD3(HRESULT,UnmarshalInterface, IStream*,pStm, REFIID,riid, void**,ppv) \
34 ICOM_METHOD1(HRESULT,ReleaseMarshalData, IStream*,pStm) \
35 ICOM_METHOD1(HRESULT,DisconnectObject, DWORD,dwReserved)
36#define IMarshal_IMETHODS \
37 IUnknown_IMETHODS \
38 IMarshal_METHODS
39ICOM_DEFINE(IMarshal,IUnknown)
40#undef ICOM_INTERFACE
41
42/*** IUnknown methods ***/
43#define IMarshal_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
44#define IMarshal_AddRef(p) ICOM_CALL (AddRef,p)
45#define IMarshal_Release(p) ICOM_CALL (Release,p)
46/*** IMarshal methods ***/
47#define IMarshal_GetUnmarshalClass(p,a,b,c,d,e,f) ICOM_CALL6(GetUnmarshalClass,p,a,b,c,d,e,f)
48#define IMarshal_GetMarshalSizeMax(p,a,b,c,d,e,f) ICOM_CALL6(GetMarshalSizeMax,p,a,b,c,d,e,f)
49#define IMarshal_MarshalInterface(p,a,b,c,d,e,f) ICOM_CALL6(MarshalInterface,p,a,b,c,d,e,f)
50#define IMarshal_UnmarshalInterface(p,a,b,c) ICOM_CALL3(UnmarshalInterface,p,a,b,c)
51#define IMarshal_ReleaseMarshalData(p,a) ICOM_CALL1(ReleaseMarshalData,p,a)
52#define IMarshal_DisconnectObject(p,a) ICOM_CALL1(DisconnectObject,p,a)
53
54
55/*****************************************************************************
56 * IStdMarshalInfo interface
57 */
58#define ICOM_INTERFACE IStdMarshalInfo
59#define IStdMarshalInfo_METHODS \
60 ICOM_METHOD3(HRESULT,GetClassForHandler, DWORD,dwDestContext, void*,pvDestContext, CLSID*,pClsid)
61#define IStdMarshalInfo_IMETHODS \
62 IUnknown_IMETHODS \
63 IStdMarshalInfo_METHODS
64ICOM_DEFINE(IStdMarshalInfo,IUnknown)
65#undef ICOM_INTERFACE
66
67/*** IUnknown methods ***/
68#define IStdMarshalInfo_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
69#define IStdMarshalInfo_AddRef(p) ICOM_CALL (AddRef,p)
70#define IStdMarshalInfo_Release(p) ICOM_CALL (Release,p)
71/*** IStdMarshalInfo methods ***/
72#define IStdMarshalInfo_GetClassForHandler(p,a,b,c) ICOM_CALL3(GetClassForHandler,p,a,b,c)
73
74
75/*****************************************************************************
76 * Additional marshalling API
77 */
78
79/* FIXME: not implemented */
80HRESULT WINAPI CoCreateFreeThreadedMarshaler(LPUNKNOWN punkOuter, LPUNKNOWN* ppunkMarshal);
81
82/* FIXME: not implemented */
83HRESULT WINAPI CoGetInterfaceAndReleaseStream(LPSTREAM pStm, REFIID iid, LPVOID* ppv);
84
85/* FIXME: not implemented */
86HRESULT WINAPI CoGetMarshalSizeMax(ULONG* pulSize, REFIID riid, LPUNKNOWN pUnk, DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags);
87
88/* FIXME: not implemented */
89HRESULT WINAPI CoGetStandardMarshal(REFIID riid, LPUNKNOWN pUnk, DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags, LPMARSHAL* ppMarshal);
90
91/* FIXME: not implemented */
92HRESULT WINAPI CoMarshalHresult(LPSTREAM pstm, HRESULT hresult);
93
94/* FIXME: not implemented */
95HRESULT WINAPI CoMarshalInterface(LPSTREAM pStm, REFIID riid, LPUNKNOWN pUnk, DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags);
96
97/* FIXME: not implemented */
98HRESULT WINAPI CoMarshalInterThreadInterfaceInStream(REFIID riid, LPUNKNOWN pUnk, LPSTREAM* ppStm);
99
100/* FIXME: not implemented */
101HRESULT WINAPI CoReleaseMarshalData(LPSTREAM pStm);
102
103/* FIXME: not implemented */
104HRESULT WINAPI CoUnmarshalHresult(LPSTREAM pstm, HRESULT* phresult);
105
106/* FIXME: not implemented */
107HRESULT WINAPI CoUnmarshalInterface(LPSTREAM pStm, REFIID riid, LPVOID* ppv);
108
109#ifdef __cplusplus
110} /* extern "C" */
111#endif /* defined(__cplusplus) */
112
113#endif /* __WINE_WINE_OBJ_MARSHAL_H */
Note: See TracBrowser for help on using the repository browser.