ReactOS  0.4.14-dev-337-gf981a68
ftmarshal.c File Reference
#include <stdlib.h>
#include <stdarg.h>
#include <stdio.h>
#include <string.h>
#include <assert.h>
#include "windef.h"
#include "winbase.h"
#include "objbase.h"
#include "wine/debug.h"
#include "compobj_private.h"
Include dependency graph for ftmarshal.c:

Go to the source code of this file.

Classes

struct  _FTMarshalImpl
 

Macros

#define COBJMACROS
 

Typedefs

typedef struct _FTMarshalImpl FTMarshalImpl
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (ole)
 
static FTMarshalImplimpl_from_IUnknown (IUnknown *iface)
 
static FTMarshalImplimpl_from_IMarshal (IMarshal *iface)
 
static HRESULT WINAPI IiFTMUnknown_fnQueryInterface (IUnknown *iface, REFIID riid, LPVOID *ppv)
 
static ULONG WINAPI IiFTMUnknown_fnAddRef (IUnknown *iface)
 
static ULONG WINAPI IiFTMUnknown_fnRelease (IUnknown *iface)
 
static HRESULT WINAPI FTMarshalImpl_QueryInterface (LPMARSHAL iface, REFIID riid, LPVOID *ppv)
 
static ULONG WINAPI FTMarshalImpl_AddRef (LPMARSHAL iface)
 
static ULONG WINAPI FTMarshalImpl_Release (LPMARSHAL iface)
 
static HRESULT WINAPI FTMarshalImpl_GetUnmarshalClass (LPMARSHAL iface, REFIID riid, void *pv, DWORD dwDestContext, void *pvDestContext, DWORD mshlflags, CLSID *pCid)
 
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_UnmarshalInterface (LPMARSHAL iface, IStream *pStm, REFIID riid, void **ppv)
 
static HRESULT WINAPI FTMarshalImpl_ReleaseMarshalData (LPMARSHAL iface, IStream *pStm)
 
static HRESULT WINAPI FTMarshalImpl_DisconnectObject (LPMARSHAL iface, DWORD dwReserved)
 
HRESULT WINAPI CoCreateFreeThreadedMarshaler (LPUNKNOWN punkOuter, LPUNKNOWN *ppunkMarshal)
 
static HRESULT WINAPI FTMarshalCF_QueryInterface (LPCLASSFACTORY iface, REFIID riid, LPVOID *ppv)
 
static ULONG WINAPI FTMarshalCF_AddRef (LPCLASSFACTORY iface)
 
static ULONG WINAPI FTMarshalCF_Release (LPCLASSFACTORY iface)
 
static HRESULT WINAPI FTMarshalCF_CreateInstance (LPCLASSFACTORY iface, LPUNKNOWN pUnk, REFIID riid, LPVOID *ppv)
 
static HRESULT WINAPI FTMarshalCF_LockServer (LPCLASSFACTORY iface, BOOL fLock)
 
HRESULT FTMarshalCF_Create (REFIID riid, LPVOID *ppv)
 

Variables

static const IUnknownVtbl iunkvt
 
static const IMarshalVtbl ftmvtbl
 
static const IClassFactoryVtbl FTMarshalCFVtbl
 
static const IClassFactoryVtbl * FTMarshalCF = &FTMarshalCFVtbl
 

Macro Definition Documentation

◆ COBJMACROS

#define COBJMACROS

Definition at line 27 of file ftmarshal.c.

Typedef Documentation

◆ FTMarshalImpl

Function Documentation

◆ CoCreateFreeThreadedMarshaler()

HRESULT WINAPI CoCreateFreeThreadedMarshaler ( LPUNKNOWN  punkOuter,
LPUNKNOWN ppunkMarshal 
)

Definition at line 331 of file ftmarshal.c.

332 {
333 
334  FTMarshalImpl *ftm;
335 
336  TRACE ("(%p %p)\n", punkOuter, ppunkMarshal);
337 
338  ftm = HeapAlloc (GetProcessHeap (), 0, sizeof (FTMarshalImpl));
339  if (!ftm)
340  return E_OUTOFMEMORY;
341 
342  ftm->IUnknown_inner.lpVtbl = &iunkvt;
343  ftm->IMarshal_iface.lpVtbl = &ftmvtbl;
344  ftm->ref = 1;
345  ftm->outer_unk = punkOuter ? punkOuter : &ftm->IUnknown_inner;
346 
347  *ppunkMarshal = &ftm->IUnknown_inner;
348  return S_OK;
349 }
IUnknown * outer_unk
Definition: ftmarshal.c:42
IMarshal IMarshal_iface
Definition: ftmarshal.c:41
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define TRACE(s)
Definition: solgame.cpp:4
#define GetProcessHeap()
Definition: compat.h:403
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
static const IUnknownVtbl iunkvt
Definition: ftmarshal.c:99
#define S_OK
Definition: intsafe.h:59
IUnknown IUnknown_inner
Definition: ftmarshal.c:40
static const IMarshalVtbl ftmvtbl
Definition: ftmarshal.c:297

Referenced by FTMarshalCF_CreateInstance(), and test_freethreadedmarshaler().

◆ FTMarshalCF_AddRef()

static ULONG WINAPI FTMarshalCF_AddRef ( LPCLASSFACTORY  iface)
static

Definition at line 364 of file ftmarshal.c.

365 {
366  return 2; /* non-heap based object */
367 }

◆ FTMarshalCF_Create()

HRESULT FTMarshalCF_Create ( REFIID  riid,
LPVOID ppv 
)

Definition at line 411 of file ftmarshal.c.

412 {
413  return IClassFactory_QueryInterface((IClassFactory *)&FTMarshalCF, riid, ppv);
414 }
REFIID riid
Definition: precomp.h:44
REFIID LPVOID * ppv
Definition: atlbase.h:39
static const IClassFactoryVtbl * FTMarshalCF
Definition: ftmarshal.c:409

Referenced by CoGetClassObject().

◆ FTMarshalCF_CreateInstance()

static HRESULT WINAPI FTMarshalCF_CreateInstance ( LPCLASSFACTORY  iface,
LPUNKNOWN  pUnk,
REFIID  riid,
LPVOID ppv 
)
static

Definition at line 374 of file ftmarshal.c.

376 {
378  HRESULT hr;
379 
380  TRACE("(%p, %s, %p)\n", pUnk, debugstr_guid(riid), ppv);
381 
382  *ppv = NULL;
383 
385 
386  if (SUCCEEDED(hr))
387  {
388  hr = IUnknown_QueryInterface(pUnknown, riid, ppv);
389  IUnknown_Release(pUnknown);
390  }
391 
392  return hr;
393 }
HRESULT hr
Definition: shlfolder.c:183
REFIID riid
Definition: precomp.h:44
REFIID LPVOID * ppv
Definition: atlbase.h:39
smooth NULL
Definition: ftsmooth.c:416
#define debugstr_guid
Definition: kernel32.h:35
_In_ PUNKNOWN pUnknown
Definition: drmk.h:76
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
HRESULT WINAPI CoCreateFreeThreadedMarshaler(LPUNKNOWN punkOuter, LPUNKNOWN *ppunkMarshal)
Definition: ftmarshal.c:331
static void *static void *static LPDIRECTPLAY IUnknown * pUnk
Definition: dplayx.c:30
#define SUCCEEDED(hr)
Definition: intsafe.h:57

◆ FTMarshalCF_LockServer()

static HRESULT WINAPI FTMarshalCF_LockServer ( LPCLASSFACTORY  iface,
BOOL  fLock 
)
static

Definition at line 395 of file ftmarshal.c.

396 {
397  FIXME("(%d), stub!\n",fLock);
398  return S_OK;
399 }
#define FIXME(fmt,...)
Definition: debug.h:110
#define S_OK
Definition: intsafe.h:59

◆ FTMarshalCF_QueryInterface()

static HRESULT WINAPI FTMarshalCF_QueryInterface ( LPCLASSFACTORY  iface,
REFIID  riid,
LPVOID ppv 
)
static

Definition at line 351 of file ftmarshal.c.

353 {
354  *ppv = NULL;
356  {
357  *ppv = iface;
358  IClassFactory_AddRef(iface);
359  return S_OK;
360  }
361  return E_NOINTERFACE;
362 }
#define E_NOINTERFACE
Definition: winerror.h:2364
REFIID riid
Definition: precomp.h:44
REFIID LPVOID * ppv
Definition: atlbase.h:39
smooth NULL
Definition: ftsmooth.c:416
const GUID IID_IUnknown
#define S_OK
Definition: intsafe.h:59
const GUID IID_IClassFactory
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95

◆ FTMarshalCF_Release()

static ULONG WINAPI FTMarshalCF_Release ( LPCLASSFACTORY  iface)
static

Definition at line 369 of file ftmarshal.c.

370 {
371  return 1; /* non-heap based object */
372 }

◆ FTMarshalImpl_AddRef()

static ULONG WINAPI FTMarshalImpl_AddRef ( LPMARSHAL  iface)
static

Definition at line 117 of file ftmarshal.c.

118 {
119 
121 
122  TRACE ("\n");
123  return IUnknown_AddRef(This->outer_unk);
124 }
static FTMarshalImpl * impl_from_IMarshal(IMarshal *iface)
Definition: ftmarshal.c:51
#define TRACE(s)
Definition: solgame.cpp:4

◆ FTMarshalImpl_DisconnectObject()

static HRESULT WINAPI FTMarshalImpl_DisconnectObject ( LPMARSHAL  iface,
DWORD  dwReserved 
)
static

Definition at line 290 of file ftmarshal.c.

291 {
292  TRACE ("()\n");
293  /* nothing to do */
294  return S_OK;
295 }
#define TRACE(s)
Definition: solgame.cpp:4
#define S_OK
Definition: intsafe.h:59

◆ FTMarshalImpl_GetMarshalSizeMax()

static HRESULT WINAPI FTMarshalImpl_GetMarshalSizeMax ( LPMARSHAL  iface,
REFIID  riid,
void pv,
DWORD  dwDestContext,
void pvDestContext,
DWORD  mshlflags,
DWORD pSize 
)
static

Definition at line 150 of file ftmarshal.c.

152 {
153 
154  IMarshal *pMarshal = NULL;
155  HRESULT hres;
156 
157  TRACE("(%s, %p, 0x%x, %p, 0x%x, %p)\n", debugstr_guid(riid), pv,
158  dwDestContext, pvDestContext, mshlflags, pSize);
159 
160  /* if the marshalling happens inside the same process the interface pointer is
161  copied between the apartments */
162  if (dwDestContext == MSHCTX_INPROC || dwDestContext == MSHCTX_CROSSCTX) {
163  *pSize = sizeof (mshlflags) + sizeof (pv) + sizeof (DWORD) + sizeof (GUID);
164  return S_OK;
165  }
166 
167  /* use the standard marshaller to handle all other cases */
168  CoGetStandardMarshal (riid, pv, dwDestContext, pvDestContext, mshlflags, &pMarshal);
169  hres = IMarshal_GetMarshalSizeMax (pMarshal, riid, pv, dwDestContext, pvDestContext, mshlflags, pSize);
170  IMarshal_Release (pMarshal);
171  return hres;
172 }
REFIID riid
Definition: precomp.h:44
#define DWORD
Definition: nt_native.h:44
smooth NULL
Definition: ftsmooth.c:416
#define debugstr_guid
Definition: kernel32.h:35
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT hres
Definition: protocol.c:465
LONG HRESULT
Definition: typedefs.h:77
#define S_OK
Definition: intsafe.h:59
HRESULT WINAPI CoGetStandardMarshal(REFIID riid, IUnknown *pUnk, DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags, LPMARSHAL *ppMarshal)
Definition: marshal.c:1676

◆ FTMarshalImpl_GetUnmarshalClass()

static HRESULT WINAPI FTMarshalImpl_GetUnmarshalClass ( LPMARSHAL  iface,
REFIID  riid,
void pv,
DWORD  dwDestContext,
void pvDestContext,
DWORD  mshlflags,
CLSID pCid 
)
static

Definition at line 137 of file ftmarshal.c.

139 {
140  TRACE("(%s, %p, 0x%x, %p, 0x%x, %p)\n", debugstr_guid(riid), pv,
141  dwDestContext, pvDestContext, mshlflags, pCid);
142  if (dwDestContext == MSHCTX_INPROC || dwDestContext == MSHCTX_CROSSCTX)
144  else
145  *pCid = CLSID_StdMarshal;
146  return S_OK;
147 }
REFIID riid
Definition: precomp.h:44
const CLSID CLSID_InProcFreeMarshaler
#define debugstr_guid
Definition: kernel32.h:35
#define TRACE(s)
Definition: solgame.cpp:4
const CLSID CLSID_StdMarshal
#define S_OK
Definition: intsafe.h:59

◆ FTMarshalImpl_MarshalInterface()

static HRESULT WINAPI FTMarshalImpl_MarshalInterface ( LPMARSHAL  iface,
IStream pStm,
REFIID  riid,
void pv,
DWORD  dwDestContext,
void pvDestContext,
DWORD  mshlflags 
)
static

Definition at line 175 of file ftmarshal.c.

177 {
178 
179  IMarshal *pMarshal = NULL;
180  HRESULT hres;
181 
182  TRACE("(%p, %s, %p, 0x%x, %p, 0x%x)\n", pStm, debugstr_guid(riid), pv,
183  dwDestContext, pvDestContext, mshlflags);
184 
185  /* if the marshalling happens inside the same process the interface pointer is
186  copied between the apartments */
187  if (dwDestContext == MSHCTX_INPROC || dwDestContext == MSHCTX_CROSSCTX) {
188  void *object;
189  DWORD constant = 0;
190  GUID unknown_guid = { 0 };
191 
192  hres = IUnknown_QueryInterface((IUnknown *)pv, riid, &object);
193  if (FAILED(hres))
194  return hres;
195 
196  /* don't hold a reference to table-weak marshaled interfaces */
197  if (mshlflags & MSHLFLAGS_TABLEWEAK)
198  IUnknown_Release((IUnknown *)object);
199 
200  hres = IStream_Write (pStm, &mshlflags, sizeof (mshlflags), NULL);
201  if (hres != S_OK) return STG_E_MEDIUMFULL;
202 
203  hres = IStream_Write (pStm, &object, sizeof (object), NULL);
204  if (hres != S_OK) return STG_E_MEDIUMFULL;
205 
206  if (sizeof(object) == sizeof(DWORD))
207  {
208  hres = IStream_Write (pStm, &constant, sizeof (constant), NULL);
209  if (hres != S_OK) return STG_E_MEDIUMFULL;
210  }
211 
212  hres = IStream_Write (pStm, &unknown_guid, sizeof (unknown_guid), NULL);
213  if (hres != S_OK) return STG_E_MEDIUMFULL;
214 
215  return S_OK;
216  }
217 
218  /* use the standard marshaler to handle all other cases */
219  CoGetStandardMarshal (riid, pv, dwDestContext, pvDestContext, mshlflags, &pMarshal);
220  hres = IMarshal_MarshalInterface (pMarshal, pStm, riid, pv, dwDestContext, pvDestContext, mshlflags);
221  IMarshal_Release (pMarshal);
222  return hres;
223 }
REFIID riid
Definition: precomp.h:44
#define STG_E_MEDIUMFULL
Definition: winerror.h:2581
smooth NULL
Definition: ftsmooth.c:416
#define debugstr_guid
Definition: kernel32.h:35
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT hres
Definition: protocol.c:465
LONG HRESULT
Definition: typedefs.h:77
unsigned long DWORD
Definition: ntddk_ex.h:95
#define S_OK
Definition: intsafe.h:59
HRESULT WINAPI CoGetStandardMarshal(REFIID riid, IUnknown *pUnk, DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags, LPMARSHAL *ppMarshal)
Definition: marshal.c:1676
void * object
Definition: jmemsys.h:48

◆ FTMarshalImpl_QueryInterface()

static HRESULT WINAPI FTMarshalImpl_QueryInterface ( LPMARSHAL  iface,
REFIID  riid,
LPVOID ppv 
)
static

Definition at line 107 of file ftmarshal.c.

108 {
109 
111 
112  TRACE ("(%p)->(%s,%p)\n", This, debugstr_guid (riid), ppv);
113  return IUnknown_QueryInterface(This->outer_unk, riid, ppv);
114 }
static FTMarshalImpl * impl_from_IMarshal(IMarshal *iface)
Definition: ftmarshal.c:51
REFIID riid
Definition: precomp.h:44
REFIID LPVOID * ppv
Definition: atlbase.h:39
#define debugstr_guid
Definition: kernel32.h:35
#define TRACE(s)
Definition: solgame.cpp:4

◆ FTMarshalImpl_Release()

static ULONG WINAPI FTMarshalImpl_Release ( LPMARSHAL  iface)
static

Definition at line 127 of file ftmarshal.c.

128 {
129 
131 
132  TRACE ("\n");
133  return IUnknown_Release(This->outer_unk);
134 }
static FTMarshalImpl * impl_from_IMarshal(IMarshal *iface)
Definition: ftmarshal.c:51
#define TRACE(s)
Definition: solgame.cpp:4

◆ FTMarshalImpl_ReleaseMarshalData()

static HRESULT WINAPI FTMarshalImpl_ReleaseMarshalData ( LPMARSHAL  iface,
IStream pStm 
)
static

Definition at line 259 of file ftmarshal.c.

260 {
261  DWORD mshlflags;
262  IUnknown *object;
263  DWORD constant;
264  GUID unknown_guid;
265  HRESULT hres;
266 
267  TRACE ("(%p)\n", pStm);
268 
269  hres = IStream_Read (pStm, &mshlflags, sizeof (mshlflags), NULL);
270  if (hres != S_OK) return STG_E_READFAULT;
271 
272  hres = IStream_Read (pStm, &object, sizeof (object), NULL);
273  if (hres != S_OK) return STG_E_READFAULT;
274 
275  if (sizeof(object) == sizeof(DWORD))
276  {
277  hres = IStream_Read (pStm, &constant, sizeof (constant), NULL);
278  if (hres != S_OK) return STG_E_READFAULT;
279  if (constant != 0)
280  FIXME("constant is 0x%x instead of 0\n", constant);
281  }
282 
283  hres = IStream_Read (pStm, &unknown_guid, sizeof (unknown_guid), NULL);
284  if (hres != S_OK) return STG_E_READFAULT;
285 
286  IUnknown_Release(object);
287  return S_OK;
288 }
#define FIXME(fmt,...)
Definition: debug.h:110
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT hres
Definition: protocol.c:465
LONG HRESULT
Definition: typedefs.h:77
unsigned long DWORD
Definition: ntddk_ex.h:95
#define S_OK
Definition: intsafe.h:59
#define STG_E_READFAULT
Definition: winerror.h:2576
void * object
Definition: jmemsys.h:48

◆ FTMarshalImpl_UnmarshalInterface()

static HRESULT WINAPI FTMarshalImpl_UnmarshalInterface ( LPMARSHAL  iface,
IStream pStm,
REFIID  riid,
void **  ppv 
)
static

Definition at line 226 of file ftmarshal.c.

227 {
228  DWORD mshlflags;
229  IUnknown *object;
230  DWORD constant;
231  GUID unknown_guid;
232  HRESULT hres;
233 
234  TRACE ("(%p, %s, %p)\n", pStm, debugstr_guid(riid), ppv);
235 
236  hres = IStream_Read (pStm, &mshlflags, sizeof (mshlflags), NULL);
237  if (hres != S_OK) return STG_E_READFAULT;
238 
239  hres = IStream_Read (pStm, &object, sizeof (object), NULL);
240  if (hres != S_OK) return STG_E_READFAULT;
241 
242  if (sizeof(object) == sizeof(DWORD))
243  {
244  hres = IStream_Read (pStm, &constant, sizeof (constant), NULL);
245  if (hres != S_OK) return STG_E_READFAULT;
246  if (constant != 0)
247  FIXME("constant is 0x%x instead of 0\n", constant);
248  }
249 
250  hres = IStream_Read (pStm, &unknown_guid, sizeof (unknown_guid), NULL);
251  if (hres != S_OK) return STG_E_READFAULT;
252 
253  hres = IUnknown_QueryInterface(object, riid, ppv);
254  if (!(mshlflags & (MSHLFLAGS_TABLEWEAK|MSHLFLAGS_TABLESTRONG)))
255  IUnknown_Release(object);
256  return hres;
257 }
REFIID riid
Definition: precomp.h:44
REFIID LPVOID * ppv
Definition: atlbase.h:39
#define FIXME(fmt,...)
Definition: debug.h:110
smooth NULL
Definition: ftsmooth.c:416
#define debugstr_guid
Definition: kernel32.h:35
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT hres
Definition: protocol.c:465
LONG HRESULT
Definition: typedefs.h:77
unsigned long DWORD
Definition: ntddk_ex.h:95
#define S_OK
Definition: intsafe.h:59
#define STG_E_READFAULT
Definition: winerror.h:2576
void * object
Definition: jmemsys.h:48

◆ IiFTMUnknown_fnAddRef()

static ULONG WINAPI IiFTMUnknown_fnAddRef ( IUnknown iface)
static

Definition at line 78 of file ftmarshal.c.

79 {
80 
82 
83  TRACE ("\n");
84  return InterlockedIncrement (&This->ref);
85 }
static FTMarshalImpl * impl_from_IUnknown(IUnknown *iface)
Definition: ftmarshal.c:46
#define TRACE(s)
Definition: solgame.cpp:4
#define InterlockedIncrement
Definition: armddk.h:53

◆ IiFTMUnknown_fnQueryInterface()

static HRESULT WINAPI IiFTMUnknown_fnQueryInterface ( IUnknown iface,
REFIID  riid,
LPVOID ppv 
)
static

Definition at line 58 of file ftmarshal.c.

59 {
60 
62 
63  TRACE ("\n");
64  *ppv = NULL;
65 
67  *ppv = &This->IUnknown_inner;
68  else if (IsEqualIID (&IID_IMarshal, riid))
69  *ppv = &This->IMarshal_iface;
70  else {
71  FIXME ("No interface for %s.\n", debugstr_guid (riid));
72  return E_NOINTERFACE;
73  }
74  IUnknown_AddRef ((IUnknown *) * ppv);
75  return S_OK;
76 }
#define E_NOINTERFACE
Definition: winerror.h:2364
REFIID riid
Definition: precomp.h:44
REFIID LPVOID * ppv
Definition: atlbase.h:39
#define FIXME(fmt,...)
Definition: debug.h:110
smooth NULL
Definition: ftsmooth.c:416
#define debugstr_guid
Definition: kernel32.h:35
static FTMarshalImpl * impl_from_IUnknown(IUnknown *iface)
Definition: ftmarshal.c:46
#define TRACE(s)
Definition: solgame.cpp:4
const GUID IID_IUnknown
#define S_OK
Definition: intsafe.h:59
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95

◆ IiFTMUnknown_fnRelease()

static ULONG WINAPI IiFTMUnknown_fnRelease ( IUnknown iface)
static

Definition at line 87 of file ftmarshal.c.

88 {
89 
91 
92  TRACE ("\n");
93  if (InterlockedDecrement (&This->ref))
94  return This->ref;
95  HeapFree (GetProcessHeap (), 0, This);
96  return 0;
97 }
static FTMarshalImpl * impl_from_IUnknown(IUnknown *iface)
Definition: ftmarshal.c:46
#define TRACE(s)
Definition: solgame.cpp:4
#define GetProcessHeap()
Definition: compat.h:403
#define InterlockedDecrement
Definition: armddk.h:52
#define HeapFree(x, y, z)
Definition: compat.h:402

◆ impl_from_IMarshal()

static FTMarshalImpl* impl_from_IMarshal ( IMarshal iface)
inlinestatic

Definition at line 51 of file ftmarshal.c.

52 {
53  return CONTAINING_RECORD(iface, FTMarshalImpl, IMarshal_iface);
54 }
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560

Referenced by FTMarshalImpl_AddRef(), FTMarshalImpl_QueryInterface(), and FTMarshalImpl_Release().

◆ impl_from_IUnknown()

static FTMarshalImpl* impl_from_IUnknown ( IUnknown iface)
inlinestatic

Definition at line 46 of file ftmarshal.c.

47 {
48  return CONTAINING_RECORD(iface, FTMarshalImpl, IUnknown_inner);
49 }
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560

Referenced by IiFTMUnknown_fnAddRef(), IiFTMUnknown_fnQueryInterface(), and IiFTMUnknown_fnRelease().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( ole  )

Variable Documentation

◆ FTMarshalCF

const IClassFactoryVtbl* FTMarshalCF = &FTMarshalCFVtbl
static

Definition at line 409 of file ftmarshal.c.

Referenced by FTMarshalCF_Create().

◆ FTMarshalCFVtbl

const IClassFactoryVtbl FTMarshalCFVtbl
static
Initial value:
=
{
}
static ULONG WINAPI FTMarshalCF_Release(LPCLASSFACTORY iface)
Definition: ftmarshal.c:369
static HRESULT WINAPI FTMarshalCF_LockServer(LPCLASSFACTORY iface, BOOL fLock)
Definition: ftmarshal.c:395
static ULONG WINAPI FTMarshalCF_AddRef(LPCLASSFACTORY iface)
Definition: ftmarshal.c:364
static HRESULT WINAPI FTMarshalCF_QueryInterface(LPCLASSFACTORY iface, REFIID riid, LPVOID *ppv)
Definition: ftmarshal.c:351
static HRESULT WINAPI FTMarshalCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pUnk, REFIID riid, LPVOID *ppv)
Definition: ftmarshal.c:374

Definition at line 401 of file ftmarshal.c.

◆ ftmvtbl

const IMarshalVtbl ftmvtbl
static
Initial value:
=
{
}
static HRESULT WINAPI FTMarshalImpl_UnmarshalInterface(LPMARSHAL iface, IStream *pStm, REFIID riid, void **ppv)
Definition: ftmarshal.c:226
static HRESULT WINAPI FTMarshalImpl_GetUnmarshalClass(LPMARSHAL iface, REFIID riid, void *pv, DWORD dwDestContext, void *pvDestContext, DWORD mshlflags, CLSID *pCid)
Definition: ftmarshal.c:137
static ULONG WINAPI FTMarshalImpl_Release(LPMARSHAL iface)
Definition: ftmarshal.c:127
static HRESULT WINAPI FTMarshalImpl_GetMarshalSizeMax(LPMARSHAL iface, REFIID riid, void *pv, DWORD dwDestContext, void *pvDestContext, DWORD mshlflags, DWORD *pSize)
Definition: ftmarshal.c:150
static HRESULT WINAPI FTMarshalImpl_ReleaseMarshalData(LPMARSHAL iface, IStream *pStm)
Definition: ftmarshal.c:259
static HRESULT WINAPI FTMarshalImpl_DisconnectObject(LPMARSHAL iface, DWORD dwReserved)
Definition: ftmarshal.c:290
static ULONG WINAPI FTMarshalImpl_AddRef(LPMARSHAL iface)
Definition: ftmarshal.c:117
static HRESULT WINAPI FTMarshalImpl_QueryInterface(LPMARSHAL iface, REFIID riid, LPVOID *ppv)
Definition: ftmarshal.c:107
static HRESULT WINAPI FTMarshalImpl_MarshalInterface(LPMARSHAL iface, IStream *pStm, REFIID riid, void *pv, DWORD dwDestContext, void *pvDestContext, DWORD mshlflags)
Definition: ftmarshal.c:175

Definition at line 297 of file ftmarshal.c.

Referenced by CoCreateFreeThreadedMarshaler().

◆ iunkvt

const IUnknownVtbl iunkvt
static
Initial value:
=
{
}
static ULONG WINAPI IiFTMUnknown_fnAddRef(IUnknown *iface)
Definition: ftmarshal.c:78
static ULONG WINAPI IiFTMUnknown_fnRelease(IUnknown *iface)
Definition: ftmarshal.c:87
static HRESULT WINAPI IiFTMUnknown_fnQueryInterface(IUnknown *iface, REFIID riid, LPVOID *ppv)
Definition: ftmarshal.c:58

Definition at line 99 of file ftmarshal.c.

Referenced by CoCreateFreeThreadedMarshaler().