113 return IUnknown_QueryInterface(
This->outer_unk,
riid,
ppv);
123 return IUnknown_AddRef(
This->outer_unk);
133 return IUnknown_Release(
This->outer_unk);
138 void *pvDestContext,
DWORD mshlflags,
CLSID * pCid)
141 dwDestContext, pvDestContext, mshlflags, pCid);
142 if (dwDestContext == MSHCTX_INPROC || dwDestContext == MSHCTX_CROSSCTX)
151 void *pvDestContext,
DWORD mshlflags,
DWORD * pSize)
158 dwDestContext, pvDestContext, mshlflags, pSize);
162 if (dwDestContext == MSHCTX_INPROC || dwDestContext == MSHCTX_CROSSCTX) {
163 *pSize =
sizeof (mshlflags) +
sizeof (pv) +
sizeof (
DWORD) +
sizeof (
GUID);
169 hres = IMarshal_GetMarshalSizeMax (pMarshal,
riid, pv, dwDestContext, pvDestContext, mshlflags, pSize);
170 IMarshal_Release (pMarshal);
176 DWORD dwDestContext,
void *pvDestContext,
DWORD mshlflags)
183 dwDestContext, pvDestContext, mshlflags);
187 if (dwDestContext == MSHCTX_INPROC || dwDestContext == MSHCTX_CROSSCTX) {
190 GUID unknown_guid = { 0 };
197 if (mshlflags & MSHLFLAGS_TABLEWEAK)
198 IUnknown_Release((
IUnknown *)
object);
200 hres = IStream_Write (pStm, &mshlflags,
sizeof (mshlflags),
NULL);
203 hres = IStream_Write (pStm, &
object,
sizeof (
object),
NULL);
206 if (
sizeof(
object) ==
sizeof(
DWORD))
212 hres = IStream_Write (pStm, &unknown_guid,
sizeof (unknown_guid),
NULL);
220 hres = IMarshal_MarshalInterface (pMarshal, pStm,
riid, pv, dwDestContext, pvDestContext, mshlflags);
221 IMarshal_Release (pMarshal);
236 hres = IStream_Read (pStm, &mshlflags,
sizeof (mshlflags),
NULL);
239 hres = IStream_Read (pStm, &
object,
sizeof (
object),
NULL);
242 if (
sizeof(
object) ==
sizeof(
DWORD))
250 hres = IStream_Read (pStm, &unknown_guid,
sizeof (unknown_guid),
NULL);
254 if (!(mshlflags & (MSHLFLAGS_TABLEWEAK|MSHLFLAGS_TABLESTRONG)))
255 IUnknown_Release(
object);
267 TRACE (
"(%p)\n", pStm);
269 hres = IStream_Read (pStm, &mshlflags,
sizeof (mshlflags),
NULL);
272 hres = IStream_Read (pStm, &
object,
sizeof (
object),
NULL);
275 if (
sizeof(
object) ==
sizeof(
DWORD))
283 hres = IStream_Read (pStm, &unknown_guid,
sizeof (unknown_guid),
NULL);
286 IUnknown_Release(
object);
336 TRACE (
"(%p %p)\n", punkOuter, ppunkMarshal);
358 IClassFactory_AddRef(iface);
397 FIXME(
"(%d), stub!\n",fLock);
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
const GUID IID_IClassFactory
const CLSID CLSID_StdMarshal
const CLSID CLSID_InProcFreeMarshaler
#define HeapFree(x, y, z)
HRESULT WINAPI CoGetStandardMarshal(REFIID riid, IUnknown *pUnk, DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags, LPMARSHAL *ppMarshal)
static void *static void *static LPDIRECTPLAY IUnknown * pUnk
static ULONG WINAPI FTMarshalImpl_AddRef(LPMARSHAL iface)
static FTMarshalImpl * impl_from_IMarshal(IMarshal *iface)
static HRESULT WINAPI FTMarshalImpl_ReleaseMarshalData(LPMARSHAL iface, IStream *pStm)
static HRESULT WINAPI FTMarshalImpl_UnmarshalInterface(LPMARSHAL iface, IStream *pStm, REFIID riid, void **ppv)
static FTMarshalImpl * impl_from_IUnknown(IUnknown *iface)
static ULONG WINAPI IiFTMUnknown_fnAddRef(IUnknown *iface)
static HRESULT WINAPI FTMarshalImpl_GetMarshalSizeMax(LPMARSHAL iface, REFIID riid, void *pv, DWORD dwDestContext, void *pvDestContext, DWORD mshlflags, DWORD *pSize)
static HRESULT WINAPI FTMarshalImpl_MarshalInterface(LPMARSHAL iface, IStream *pStm, REFIID riid, void *pv, DWORD dwDestContext, void *pvDestContext, DWORD mshlflags)
static HRESULT WINAPI FTMarshalImpl_GetUnmarshalClass(LPMARSHAL iface, REFIID riid, void *pv, DWORD dwDestContext, void *pvDestContext, DWORD mshlflags, CLSID *pCid)
static ULONG WINAPI FTMarshalCF_AddRef(LPCLASSFACTORY iface)
static HRESULT WINAPI FTMarshalImpl_QueryInterface(LPMARSHAL iface, REFIID riid, LPVOID *ppv)
static const IUnknownVtbl iunkvt
static HRESULT WINAPI FTMarshalCF_LockServer(LPCLASSFACTORY iface, BOOL fLock)
static const IMarshalVtbl ftmvtbl
struct _FTMarshalImpl FTMarshalImpl
HRESULT FTMarshalCF_Create(REFIID riid, LPVOID *ppv)
static const IClassFactoryVtbl FTMarshalCFVtbl
static HRESULT WINAPI FTMarshalCF_QueryInterface(LPCLASSFACTORY iface, REFIID riid, LPVOID *ppv)
static HRESULT WINAPI FTMarshalImpl_DisconnectObject(LPMARSHAL iface, DWORD dwReserved)
static HRESULT WINAPI FTMarshalCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pUnk, REFIID riid, LPVOID *ppv)
HRESULT WINAPI CoCreateFreeThreadedMarshaler(LPUNKNOWN punkOuter, LPUNKNOWN *ppunkMarshal)
static ULONG WINAPI IiFTMUnknown_fnRelease(IUnknown *iface)
static const IClassFactoryVtbl * FTMarshalCF
static ULONG WINAPI FTMarshalCF_Release(LPCLASSFACTORY iface)
static ULONG WINAPI FTMarshalImpl_Release(LPMARSHAL iface)
static HRESULT WINAPI IiFTMUnknown_fnQueryInterface(IUnknown *iface, REFIID riid, LPVOID *ppv)
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
interface IMarshal * LPMARSHAL
#define IsEqualIID(riid1, riid2)
#define CONTAINING_RECORD(address, type, field)