ReactOS  0.4.15-dev-506-ga3ec01c
antimoniker.c File Reference
#include <assert.h>
#include <stdarg.h>
#include <string.h>
#include "windef.h"
#include "winbase.h"
#include "winerror.h"
#include "objbase.h"
#include "wine/debug.h"
#include "moniker.h"
Include dependency graph for antimoniker.c:

Go to the source code of this file.

Classes

struct  AntiMonikerImpl
 

Macros

#define COBJMACROS
 
#define NONAMELESSUNION
 

Typedefs

typedef struct AntiMonikerImpl AntiMonikerImpl
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (ole)
 
static AntiMonikerImplimpl_from_IMoniker (IMoniker *iface)
 
static AntiMonikerImplimpl_from_IROTData (IROTData *iface)
 
static HRESULT WINAPI AntiMonikerImpl_QueryInterface (IMoniker *iface, REFIID riid, void **ppvObject)
 
static ULONG WINAPI AntiMonikerImpl_AddRef (IMoniker *iface)
 
static ULONG WINAPI AntiMonikerImpl_Release (IMoniker *iface)
 
static HRESULT WINAPI AntiMonikerImpl_GetClassID (IMoniker *iface, CLSID *pClassID)
 
static HRESULT WINAPI AntiMonikerImpl_IsDirty (IMoniker *iface)
 
static HRESULT WINAPI AntiMonikerImpl_Load (IMoniker *iface, IStream *pStm)
 
static HRESULT WINAPI AntiMonikerImpl_Save (IMoniker *iface, IStream *pStm, BOOL fClearDirty)
 
static HRESULT WINAPI AntiMonikerImpl_GetSizeMax (IMoniker *iface, ULARGE_INTEGER *pcbSize)
 
static HRESULT WINAPI AntiMonikerImpl_BindToObject (IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, REFIID riid, VOID **ppvResult)
 
static HRESULT WINAPI AntiMonikerImpl_BindToStorage (IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, REFIID riid, VOID **ppvResult)
 
static HRESULT WINAPI AntiMonikerImpl_Reduce (IMoniker *iface, IBindCtx *pbc, DWORD dwReduceHowFar, IMoniker **ppmkToLeft, IMoniker **ppmkReduced)
 
static HRESULT WINAPI AntiMonikerImpl_ComposeWith (IMoniker *iface, IMoniker *pmkRight, BOOL fOnlyIfNotGeneric, IMoniker **ppmkComposite)
 
static HRESULT WINAPI AntiMonikerImpl_Enum (IMoniker *iface, BOOL fForward, IEnumMoniker **ppenumMoniker)
 
static HRESULT WINAPI AntiMonikerImpl_IsEqual (IMoniker *iface, IMoniker *pmkOtherMoniker)
 
static HRESULT WINAPI AntiMonikerImpl_Hash (IMoniker *iface, DWORD *pdwHash)
 
static HRESULT WINAPI AntiMonikerImpl_IsRunning (IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, IMoniker *pmkNewlyRunning)
 
static HRESULT WINAPI AntiMonikerImpl_GetTimeOfLastChange (IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, FILETIME *pAntiTime)
 
static HRESULT WINAPI AntiMonikerImpl_Inverse (IMoniker *iface, IMoniker **ppmk)
 
static HRESULT WINAPI AntiMonikerImpl_CommonPrefixWith (IMoniker *iface, IMoniker *pmkOther, IMoniker **ppmkPrefix)
 
static HRESULT WINAPI AntiMonikerImpl_RelativePathTo (IMoniker *iface, IMoniker *pmOther, IMoniker **ppmkRelPath)
 
static HRESULT WINAPI AntiMonikerImpl_GetDisplayName (IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, LPOLESTR *ppszDisplayName)
 
static HRESULT WINAPI AntiMonikerImpl_ParseDisplayName (IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, LPOLESTR pszDisplayName, ULONG *pchEaten, IMoniker **ppmkOut)
 
static HRESULT WINAPI AntiMonikerImpl_IsSystemMoniker (IMoniker *iface, DWORD *pwdMksys)
 
static HRESULT WINAPI AntiMonikerROTDataImpl_QueryInterface (IROTData *iface, REFIID riid, VOID **ppvObject)
 
static ULONG WINAPI AntiMonikerROTDataImpl_AddRef (IROTData *iface)
 
static ULONG WINAPI AntiMonikerROTDataImpl_Release (IROTData *iface)
 
static HRESULT WINAPI AntiMonikerROTDataImpl_GetComparisonData (IROTData *iface, BYTE *pbData, ULONG cbMax, ULONG *pcbData)
 
static HRESULT AntiMonikerImpl_Construct (AntiMonikerImpl *This)
 
HRESULT WINAPI CreateAntiMoniker (IMoniker **ppmk)
 
HRESULT WINAPI AntiMoniker_CreateInstance (IClassFactory *iface, IUnknown *pUnk, REFIID riid, void **ppv)
 

Variables

static const IMonikerVtbl VT_AntiMonikerImpl
 
static const IROTDataVtbl VT_ROTDataImpl
 

Macro Definition Documentation

◆ COBJMACROS

#define COBJMACROS

Definition at line 25 of file antimoniker.c.

◆ NONAMELESSUNION

#define NONAMELESSUNION

Definition at line 26 of file antimoniker.c.

Typedef Documentation

◆ AntiMonikerImpl

Function Documentation

◆ AntiMoniker_CreateInstance()

HRESULT WINAPI AntiMoniker_CreateInstance ( IClassFactory iface,
IUnknown pUnk,
REFIID  riid,
void **  ppv 
)

Definition at line 631 of file antimoniker.c.

633 {
634  IMoniker *pMoniker;
635  HRESULT hr;
636 
637  TRACE("(%p, %s, %p)\n", pUnk, debugstr_guid(riid), ppv);
638 
639  *ppv = NULL;
640 
641  if (pUnk)
642  return CLASS_E_NOAGGREGATION;
643 
644  hr = CreateAntiMoniker(&pMoniker);
645  if (FAILED(hr))
646  return hr;
647 
648  hr = IMoniker_QueryInterface(pMoniker, riid, ppv);
649 
650  if (FAILED(hr))
651  IMoniker_Release(pMoniker);
652 
653  return hr;
654 }
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
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:78
HRESULT WINAPI CreateAntiMoniker(IMoniker **ppmk)
Definition: antimoniker.c:608
#define CLASS_E_NOAGGREGATION
Definition: winerror.h:2662
static void *static void *static LPDIRECTPLAY IUnknown * pUnk
Definition: dplayx.c:30

◆ AntiMonikerImpl_AddRef()

static ULONG WINAPI AntiMonikerImpl_AddRef ( IMoniker iface)
static

Definition at line 105 of file antimoniker.c.

106 {
108 
109  TRACE("(%p)\n",This);
110 
111  return InterlockedIncrement(&This->ref);
112 }
#define TRACE(s)
Definition: solgame.cpp:4
static AntiMonikerImpl * impl_from_IMoniker(IMoniker *iface)
Definition: antimoniker.c:45
#define InterlockedIncrement
Definition: armddk.h:53

Referenced by AntiMonikerImpl_Reduce(), and AntiMonikerROTDataImpl_AddRef().

◆ AntiMonikerImpl_BindToObject()

static HRESULT WINAPI AntiMonikerImpl_BindToObject ( IMoniker iface,
IBindCtx pbc,
IMoniker pmkToLeft,
REFIID  riid,
VOID **  ppvResult 
)
static

Definition at line 229 of file antimoniker.c.

231 {
232  TRACE("(%p,%p,%p,%s,%p)\n",iface,pbc,pmkToLeft,debugstr_guid(riid),ppvResult);
233  return E_NOTIMPL;
234 }
REFIID riid
Definition: precomp.h:44
#define debugstr_guid
Definition: kernel32.h:35
#define TRACE(s)
Definition: solgame.cpp:4
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ AntiMonikerImpl_BindToStorage()

static HRESULT WINAPI AntiMonikerImpl_BindToStorage ( IMoniker iface,
IBindCtx pbc,
IMoniker pmkToLeft,
REFIID  riid,
VOID **  ppvResult 
)
static

Definition at line 240 of file antimoniker.c.

242 {
243  TRACE("(%p,%p,%p,%s,%p)\n",iface,pbc,pmkToLeft,debugstr_guid(riid),ppvResult);
244  return E_NOTIMPL;
245 }
REFIID riid
Definition: precomp.h:44
#define debugstr_guid
Definition: kernel32.h:35
#define TRACE(s)
Definition: solgame.cpp:4
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ AntiMonikerImpl_CommonPrefixWith()

static HRESULT WINAPI AntiMonikerImpl_CommonPrefixWith ( IMoniker iface,
IMoniker pmkOther,
IMoniker **  ppmkPrefix 
)
static

Definition at line 395 of file antimoniker.c.

396 {
397  DWORD mkSys;
398 
399  IMoniker_IsSystemMoniker(pmkOther,&mkSys);
400 
401  if(mkSys==MKSYS_ANTIMONIKER){
402 
403  IMoniker_AddRef(iface);
404 
405  *ppmkPrefix=iface;
406 
407  IMoniker_AddRef(iface);
408 
409  return MK_S_US;
410  }
411  else
412  return MonikerCommonPrefixWith(iface,pmkOther,ppmkPrefix);
413 }
HRESULT WINAPI MonikerCommonPrefixWith(IMoniker *pmkThis, IMoniker *pmkOther, IMoniker **ppmkCommon)
unsigned long DWORD
Definition: ntddk_ex.h:95
#define MK_S_US
Definition: winerror.h:2776

◆ AntiMonikerImpl_ComposeWith()

static HRESULT WINAPI AntiMonikerImpl_ComposeWith ( IMoniker iface,
IMoniker pmkRight,
BOOL  fOnlyIfNotGeneric,
IMoniker **  ppmkComposite 
)
static

Definition at line 269 of file antimoniker.c.

271 {
272 
273  TRACE("(%p,%p,%d,%p)\n",iface,pmkRight,fOnlyIfNotGeneric,ppmkComposite);
274 
275  if ((ppmkComposite==NULL)||(pmkRight==NULL))
276  return E_POINTER;
277 
278  *ppmkComposite=0;
279 
280  if (fOnlyIfNotGeneric)
281  return MK_E_NEEDGENERIC;
282  else
283  return CreateGenericComposite(iface,pmkRight,ppmkComposite);
284 }
smooth NULL
Definition: ftsmooth.c:416
#define MK_E_NEEDGENERIC
Definition: winerror.h:2783
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT WINAPI CreateGenericComposite(IMoniker *pmkFirst, IMoniker *pmkRest, IMoniker **ppmkComposite)
#define E_POINTER
Definition: winerror.h:2365

◆ AntiMonikerImpl_Construct()

static HRESULT AntiMonikerImpl_Construct ( AntiMonikerImpl This)
static

Definition at line 591 of file antimoniker.c.

592 {
593 
594  TRACE("(%p)\n",This);
595 
596  /* Initialize the virtual function table. */
597  This->IMoniker_iface.lpVtbl = &VT_AntiMonikerImpl;
598  This->IROTData_iface.lpVtbl = &VT_ROTDataImpl;
599  This->ref = 0;
600  This->pMarshal = NULL;
601 
602  return S_OK;
603 }
static const IMonikerVtbl VT_AntiMonikerImpl
Definition: antimoniker.c:551
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
#define S_OK
Definition: intsafe.h:59
static const IROTDataVtbl VT_ROTDataImpl
Definition: antimoniker.c:580

Referenced by CreateAntiMoniker().

◆ AntiMonikerImpl_Enum()

static HRESULT WINAPI AntiMonikerImpl_Enum ( IMoniker iface,
BOOL  fForward,
IEnumMoniker **  ppenumMoniker 
)
static

Definition at line 290 of file antimoniker.c.

291 {
292  TRACE("(%p,%d,%p)\n",iface,fForward,ppenumMoniker);
293 
294  if (ppenumMoniker == NULL)
295  return E_POINTER;
296 
297  *ppenumMoniker = NULL;
298 
299  return S_OK;
300 }
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
#define S_OK
Definition: intsafe.h:59
#define E_POINTER
Definition: winerror.h:2365

◆ AntiMonikerImpl_GetClassID()

static HRESULT WINAPI AntiMonikerImpl_GetClassID ( IMoniker iface,
CLSID pClassID 
)
static

Definition at line 141 of file antimoniker.c.

142 {
143  TRACE("(%p,%p)\n",iface,pClassID);
144 
145  if (pClassID==NULL)
146  return E_POINTER;
147 
148  *pClassID = CLSID_AntiMoniker;
149 
150  return S_OK;
151 }
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
#define S_OK
Definition: intsafe.h:59
#define E_POINTER
Definition: winerror.h:2365

◆ AntiMonikerImpl_GetDisplayName()

static HRESULT WINAPI AntiMonikerImpl_GetDisplayName ( IMoniker iface,
IBindCtx pbc,
IMoniker pmkToLeft,
LPOLESTR ppszDisplayName 
)
static

Definition at line 437 of file antimoniker.c.

439 {
440  static const WCHAR back[]={'\\','.','.',0};
441 
442  TRACE("(%p,%p,%p,%p)\n",iface,pbc,pmkToLeft,ppszDisplayName);
443 
444  if (ppszDisplayName==NULL)
445  return E_POINTER;
446 
447  if (pmkToLeft!=NULL){
448  FIXME("() pmkToLeft!=NULL not implemented\n");
449  return E_NOTIMPL;
450  }
451 
452  *ppszDisplayName=CoTaskMemAlloc(sizeof(back));
453 
454  if (*ppszDisplayName==NULL)
455  return E_OUTOFMEMORY;
456 
457  lstrcpyW(*ppszDisplayName,back);
458 
459  return S_OK;
460 }
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define FIXME(fmt,...)
Definition: debug.h:111
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define S_OK
Definition: intsafe.h:59
#define lstrcpyW
Definition: compat.h:415
#define E_NOTIMPL
Definition: ddrawi.h:99
#define E_POINTER
Definition: winerror.h:2365
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
Definition: ifs.c:426

◆ AntiMonikerImpl_GetSizeMax()

static HRESULT WINAPI AntiMonikerImpl_GetSizeMax ( IMoniker iface,
ULARGE_INTEGER pcbSize 
)
static

Definition at line 204 of file antimoniker.c.

205 {
206  TRACE("(%p,%p)\n",iface,pcbSize);
207 
208  if (!pcbSize)
209  return E_POINTER;
210 
211  /* for more details see AntiMonikerImpl_Save comments */
212 
213  /*
214  * Normally the sizemax must be sizeof DWORD, but
215  * I tested this function it usually return 16 bytes
216  * more than the number of bytes used by AntiMoniker::Save function
217  */
218  pcbSize->u.LowPart = sizeof(DWORD)+16;
219 
220  pcbSize->u.HighPart=0;
221 
222  return S_OK;
223 }
#define DWORD
Definition: nt_native.h:44
#define TRACE(s)
Definition: solgame.cpp:4
struct _ULARGE_INTEGER::@3824 u
#define S_OK
Definition: intsafe.h:59
#define E_POINTER
Definition: winerror.h:2365

◆ AntiMonikerImpl_GetTimeOfLastChange()

static HRESULT WINAPI AntiMonikerImpl_GetTimeOfLastChange ( IMoniker iface,
IBindCtx pbc,
IMoniker pmkToLeft,
FILETIME pAntiTime 
)
static

Definition at line 366 of file antimoniker.c.

370 {
371  TRACE("(%p,%p,%p,%p)\n",iface,pbc,pmkToLeft,pAntiTime);
372  return E_NOTIMPL;
373 }
#define TRACE(s)
Definition: solgame.cpp:4
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ AntiMonikerImpl_Hash()

static HRESULT WINAPI AntiMonikerImpl_Hash ( IMoniker iface,
DWORD pdwHash 
)
static

Definition at line 326 of file antimoniker.c.

327 {
328  if (pdwHash==NULL)
329  return E_POINTER;
330 
331  *pdwHash = 0x80000001;
332 
333  return S_OK;
334 }
smooth NULL
Definition: ftsmooth.c:416
#define S_OK
Definition: intsafe.h:59
#define E_POINTER
Definition: winerror.h:2365

◆ AntiMonikerImpl_Inverse()

static HRESULT WINAPI AntiMonikerImpl_Inverse ( IMoniker iface,
IMoniker **  ppmk 
)
static

Definition at line 379 of file antimoniker.c.

380 {
381  TRACE("(%p,%p)\n",iface,ppmk);
382 
383  if (ppmk==NULL)
384  return E_POINTER;
385 
386  *ppmk=0;
387 
388  return MK_E_NOINVERSE;
389 }
#define MK_E_NOINVERSE
Definition: winerror.h:2793
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
#define E_POINTER
Definition: winerror.h:2365

◆ AntiMonikerImpl_IsDirty()

static HRESULT WINAPI AntiMonikerImpl_IsDirty ( IMoniker iface)
static

Definition at line 157 of file antimoniker.c.

158 {
159  /* Note that the OLE-provided implementations of the IPersistStream::IsDirty
160  method in the OLE-provided moniker interfaces always return S_FALSE because
161  their internal state never changes. */
162 
163  TRACE("(%p)\n",iface);
164 
165  return S_FALSE;
166 }
#define S_FALSE
Definition: winerror.h:2357
#define TRACE(s)
Definition: solgame.cpp:4

◆ AntiMonikerImpl_IsEqual()

static HRESULT WINAPI AntiMonikerImpl_IsEqual ( IMoniker iface,
IMoniker pmkOtherMoniker 
)
static

Definition at line 306 of file antimoniker.c.

307 {
308  DWORD mkSys;
309 
310  TRACE("(%p,%p)\n",iface,pmkOtherMoniker);
311 
312  if (pmkOtherMoniker==NULL)
313  return S_FALSE;
314 
315  IMoniker_IsSystemMoniker(pmkOtherMoniker,&mkSys);
316 
317  if (mkSys==MKSYS_ANTIMONIKER)
318  return S_OK;
319  else
320  return S_FALSE;
321 }
#define S_FALSE
Definition: winerror.h:2357
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
unsigned long DWORD
Definition: ntddk_ex.h:95
#define S_OK
Definition: intsafe.h:59

◆ AntiMonikerImpl_IsRunning()

static HRESULT WINAPI AntiMonikerImpl_IsRunning ( IMoniker iface,
IBindCtx pbc,
IMoniker pmkToLeft,
IMoniker pmkNewlyRunning 
)
static

Definition at line 340 of file antimoniker.c.

342 {
344  HRESULT res;
345 
346  TRACE("(%p,%p,%p,%p)\n",iface,pbc,pmkToLeft,pmkNewlyRunning);
347 
348  if (pbc==NULL)
349  return E_INVALIDARG;
350 
351  res=IBindCtx_GetRunningObjectTable(pbc,&rot);
352 
353  if (FAILED(res))
354  return res;
355 
356  res = IRunningObjectTable_IsRunning(rot,iface);
357 
358  IRunningObjectTable_Release(rot);
359 
360  return res;
361 }
GLfloat rot
Definition: 3dtext.c:36
#define E_INVALIDARG
Definition: ddrawi.h:101
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:78
GLuint res
Definition: glext.h:9613

◆ AntiMonikerImpl_IsSystemMoniker()

static HRESULT WINAPI AntiMonikerImpl_IsSystemMoniker ( IMoniker iface,
DWORD pwdMksys 
)
static

Definition at line 478 of file antimoniker.c.

479 {
480  TRACE("(%p,%p)\n",iface,pwdMksys);
481 
482  if (!pwdMksys)
483  return E_POINTER;
484 
485  (*pwdMksys)=MKSYS_ANTIMONIKER;
486 
487  return S_OK;
488 }
#define TRACE(s)
Definition: solgame.cpp:4
#define S_OK
Definition: intsafe.h:59
#define E_POINTER
Definition: winerror.h:2365

◆ AntiMonikerImpl_Load()

static HRESULT WINAPI AntiMonikerImpl_Load ( IMoniker iface,
IStream pStm 
)
static

Definition at line 172 of file antimoniker.c.

173 {
174  DWORD constant=1,dwbuffer;
175  HRESULT res;
176 
177  /* data read by this function is only a DWORD constant (must be 1) ! */
178  res=IStream_Read(pStm,&dwbuffer,sizeof(DWORD),NULL);
179 
180  if (SUCCEEDED(res)&& dwbuffer!=constant)
181  return E_FAIL;
182 
183  return res;
184 }
#define E_FAIL
Definition: ddrawi.h:102
smooth NULL
Definition: ftsmooth.c:416
LONG HRESULT
Definition: typedefs.h:78
unsigned long DWORD
Definition: ntddk_ex.h:95
GLuint res
Definition: glext.h:9613
#define SUCCEEDED(hr)
Definition: intsafe.h:57

◆ AntiMonikerImpl_ParseDisplayName()

static HRESULT WINAPI AntiMonikerImpl_ParseDisplayName ( IMoniker iface,
IBindCtx pbc,
IMoniker pmkToLeft,
LPOLESTR  pszDisplayName,
ULONG pchEaten,
IMoniker **  ppmkOut 
)
static

Definition at line 466 of file antimoniker.c.

469 {
470  TRACE("(%p,%p,%p,%p,%p,%p)\n",iface,pbc,pmkToLeft,pszDisplayName,pchEaten,ppmkOut);
471  return E_NOTIMPL;
472 }
#define TRACE(s)
Definition: solgame.cpp:4
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ AntiMonikerImpl_QueryInterface()

static HRESULT WINAPI AntiMonikerImpl_QueryInterface ( IMoniker iface,
REFIID  riid,
void **  ppvObject 
)
static

Definition at line 60 of file antimoniker.c.

61 {
63 
64  TRACE("(%p,%s,%p)\n",This,debugstr_guid(riid),ppvObject);
65 
66  /* Perform a sanity check on the parameters.*/
67  if ( ppvObject==0 )
68  return E_INVALIDARG;
69 
70  /* Initialize the return parameter */
71  *ppvObject = 0;
72 
73  /* Compare the riid with the interface IDs implemented by this object.*/
74  if (IsEqualIID(&IID_IUnknown, riid) ||
77  IsEqualIID(&IID_IMoniker, riid))
78  *ppvObject = iface;
79  else if (IsEqualIID(&IID_IROTData, riid))
80  *ppvObject = &This->IROTData_iface;
81  else if (IsEqualIID(&IID_IMarshal, riid))
82  {
83  HRESULT hr = S_OK;
84  if (!This->pMarshal)
85  hr = MonikerMarshal_Create(iface, &This->pMarshal);
86  if (hr != S_OK)
87  return hr;
88  return IUnknown_QueryInterface(This->pMarshal, riid, ppvObject);
89  }
90 
91  /* Check that we obtained an interface.*/
92  if ((*ppvObject)==0)
93  return E_NOINTERFACE;
94 
95  /* always increase the reference count by one when it is successful */
96  IMoniker_AddRef(iface);
97 
98  return S_OK;
99 }
#define E_NOINTERFACE
Definition: winerror.h:2364
HRESULT hr
Definition: shlfolder.c:183
REFIID riid
Definition: precomp.h:44
const GUID IID_IPersist
Definition: proxy.cpp:14
#define E_INVALIDARG
Definition: ddrawi.h:101
#define debugstr_guid
Definition: kernel32.h:35
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:78
const GUID IID_IUnknown
const GUID IID_IPersistStream
Definition: proxy.cpp:13
REFIID LPVOID * ppvObject
Definition: precomp.h:44
static AntiMonikerImpl * impl_from_IMoniker(IMoniker *iface)
Definition: antimoniker.c:45
#define S_OK
Definition: intsafe.h:59
HRESULT MonikerMarshal_Create(IMoniker *inner, IUnknown **outer)
Definition: moniker.c:1677
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95

Referenced by AntiMonikerROTDataImpl_QueryInterface(), and CreateAntiMoniker().

◆ AntiMonikerImpl_Reduce()

static HRESULT WINAPI AntiMonikerImpl_Reduce ( IMoniker iface,
IBindCtx pbc,
DWORD  dwReduceHowFar,
IMoniker **  ppmkToLeft,
IMoniker **  ppmkReduced 
)
static

Definition at line 251 of file antimoniker.c.

253 {
254  TRACE("(%p,%p,%d,%p,%p)\n",iface,pbc,dwReduceHowFar,ppmkToLeft,ppmkReduced);
255 
256  if (ppmkReduced==NULL)
257  return E_POINTER;
258 
259  AntiMonikerImpl_AddRef(iface);
260 
261  *ppmkReduced=iface;
262 
263  return MK_S_REDUCED_TO_SELF;
264 }
#define MK_S_REDUCED_TO_SELF
Definition: winerror.h:2773
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
static ULONG WINAPI AntiMonikerImpl_AddRef(IMoniker *iface)
Definition: antimoniker.c:105
#define E_POINTER
Definition: winerror.h:2365

◆ AntiMonikerImpl_RelativePathTo()

static HRESULT WINAPI AntiMonikerImpl_RelativePathTo ( IMoniker iface,
IMoniker pmOther,
IMoniker **  ppmkRelPath 
)
static

Definition at line 419 of file antimoniker.c.

420 {
421  TRACE("(%p,%p,%p)\n",iface,pmOther,ppmkRelPath);
422 
423  if (ppmkRelPath==NULL)
424  return E_POINTER;
425 
426  IMoniker_AddRef(pmOther);
427 
428  *ppmkRelPath=pmOther;
429 
430  return MK_S_HIM;
431 }
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
#define E_POINTER
Definition: winerror.h:2365
#define MK_S_HIM
Definition: winerror.h:2775

◆ AntiMonikerImpl_Release()

static ULONG WINAPI AntiMonikerImpl_Release ( IMoniker iface)
static

Definition at line 118 of file antimoniker.c.

119 {
121  ULONG ref;
122 
123  TRACE("(%p)\n",This);
124 
125  ref = InterlockedDecrement(&This->ref);
126 
127  /* destroy the object if there are no more references to it */
128  if (ref == 0)
129  {
130  if (This->pMarshal) IUnknown_Release(This->pMarshal);
132  }
133 
134  return ref;
135 }
Definition: send.c:48
GLenum GLint ref
Definition: glext.h:6028
#define TRACE(s)
Definition: solgame.cpp:4
#define GetProcessHeap()
Definition: compat.h:404
#define InterlockedDecrement
Definition: armddk.h:52
static AntiMonikerImpl * impl_from_IMoniker(IMoniker *iface)
Definition: antimoniker.c:45
unsigned int ULONG
Definition: retypes.h:1
#define HeapFree(x, y, z)
Definition: compat.h:403

Referenced by AntiMonikerROTDataImpl_Release().

◆ AntiMonikerImpl_Save()

static HRESULT WINAPI AntiMonikerImpl_Save ( IMoniker iface,
IStream pStm,
BOOL  fClearDirty 
)
static

Definition at line 190 of file antimoniker.c.

191 {
192  static const DWORD constant = 1;
193  /* data written by this function is only a DWORD constant set to 1 ! */
194  return IStream_Write(pStm,&constant,sizeof(constant),NULL);
195 }
smooth NULL
Definition: ftsmooth.c:416
unsigned long DWORD
Definition: ntddk_ex.h:95

◆ AntiMonikerROTDataImpl_AddRef()

static ULONG WINAPI AntiMonikerROTDataImpl_AddRef ( IROTData iface)
static

Definition at line 506 of file antimoniker.c.

507 {
509 
510  TRACE("(%p)\n",iface);
511 
512  return AntiMonikerImpl_AddRef(&This->IMoniker_iface);
513 }
static AntiMonikerImpl * impl_from_IROTData(IROTData *iface)
Definition: antimoniker.c:50
#define TRACE(s)
Definition: solgame.cpp:4
static ULONG WINAPI AntiMonikerImpl_AddRef(IMoniker *iface)
Definition: antimoniker.c:105

◆ AntiMonikerROTDataImpl_GetComparisonData()

static HRESULT WINAPI AntiMonikerROTDataImpl_GetComparisonData ( IROTData iface,
BYTE pbData,
ULONG  cbMax,
ULONG pcbData 
)
static

Definition at line 531 of file antimoniker.c.

533 {
534  DWORD constant = 1;
535 
536  TRACE("(%p, %u, %p)\n", pbData, cbMax, pcbData);
537 
538  *pcbData = sizeof(CLSID) + sizeof(DWORD);
539  if (cbMax < *pcbData)
540  return E_OUTOFMEMORY;
541 
542  memcpy(pbData, &CLSID_AntiMoniker, sizeof(CLSID));
543  memcpy(pbData+sizeof(CLSID), &constant, sizeof(DWORD));
544 
545  return S_OK;
546 }
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define TRACE(s)
Definition: solgame.cpp:4
unsigned long DWORD
Definition: ntddk_ex.h:95
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
#define S_OK
Definition: intsafe.h:59
_In_ DWORD _Out_writes_bytes_to_opt_ pcbData void _Inout_ DWORD * pcbData
Definition: wincrypt.h:4949
_In_ HCRYPTHASH _In_ BOOL _In_ DWORD _Inout_updates_bytes_to_ pdwDataLen BYTE * pbData
Definition: wincrypt.h:4201

◆ AntiMonikerROTDataImpl_QueryInterface()

static HRESULT WINAPI AntiMonikerROTDataImpl_QueryInterface ( IROTData iface,
REFIID  riid,
VOID **  ppvObject 
)
static

Definition at line 494 of file antimoniker.c.

495 {
497 
498  TRACE("(%p,%s,%p)\n",iface,debugstr_guid(riid),ppvObject);
499 
500  return AntiMonikerImpl_QueryInterface(&This->IMoniker_iface, riid, ppvObject);
501 }
REFIID riid
Definition: precomp.h:44
#define debugstr_guid
Definition: kernel32.h:35
static AntiMonikerImpl * impl_from_IROTData(IROTData *iface)
Definition: antimoniker.c:50
#define TRACE(s)
Definition: solgame.cpp:4
REFIID LPVOID * ppvObject
Definition: precomp.h:44
static HRESULT WINAPI AntiMonikerImpl_QueryInterface(IMoniker *iface, REFIID riid, void **ppvObject)
Definition: antimoniker.c:60

◆ AntiMonikerROTDataImpl_Release()

static ULONG WINAPI AntiMonikerROTDataImpl_Release ( IROTData iface)
static

Definition at line 518 of file antimoniker.c.

519 {
521 
522  TRACE("(%p)\n",iface);
523 
524  return AntiMonikerImpl_Release(&This->IMoniker_iface);
525 }
static AntiMonikerImpl * impl_from_IROTData(IROTData *iface)
Definition: antimoniker.c:50
static ULONG WINAPI AntiMonikerImpl_Release(IMoniker *iface)
Definition: antimoniker.c:118
#define TRACE(s)
Definition: solgame.cpp:4

◆ CreateAntiMoniker()

HRESULT WINAPI CreateAntiMoniker ( IMoniker **  ppmk)

Definition at line 608 of file antimoniker.c.

609 {
610  AntiMonikerImpl* newAntiMoniker;
611  HRESULT hr;
612 
613  TRACE("(%p)\n",ppmk);
614 
615  newAntiMoniker = HeapAlloc(GetProcessHeap(), 0, sizeof(AntiMonikerImpl));
616 
617  if (newAntiMoniker == 0)
619 
620  hr = AntiMonikerImpl_Construct(newAntiMoniker);
621  if (FAILED(hr))
622  {
623  HeapFree(GetProcessHeap(),0,newAntiMoniker);
624  return hr;
625  }
626 
627  return AntiMonikerImpl_QueryInterface(&newAntiMoniker->IMoniker_iface, &IID_IMoniker,
628  (void**)ppmk);
629 }
IMoniker IMoniker_iface
Definition: antimoniker.c:39
HRESULT hr
Definition: shlfolder.c:183
#define STG_E_INSUFFICIENTMEMORY
Definition: winerror.h:2570
#define TRACE(s)
Definition: solgame.cpp:4
#define GetProcessHeap()
Definition: compat.h:404
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
LONG HRESULT
Definition: typedefs.h:78
static HRESULT WINAPI AntiMonikerImpl_QueryInterface(IMoniker *iface, REFIID riid, void **ppvObject)
Definition: antimoniker.c:60
static HRESULT AntiMonikerImpl_Construct(AntiMonikerImpl *This)
Definition: antimoniker.c:591
#define HeapFree(x, y, z)
Definition: compat.h:403

Referenced by AntiMoniker_CreateInstance(), ClassMoniker_Inverse(), CompositeMonikerImpl_BindToObject(), CompositeMonikerImpl_BindToStorage(), CompositeMonikerImpl_GetTimeOfLastChange(), CompositeMonikerImpl_Inverse(), CompositeMonikerImpl_IsRunning(), CompositeMonikerImpl_ParseDisplayName(), CompositeMonikerImpl_Reduce(), FileMonikerImpl_Inverse(), ItemMonikerImpl_Inverse(), ParseDisplayName_ParseDisplayName(), PointerMonikerImpl_Inverse(), and test_anti_moniker().

◆ impl_from_IMoniker()

static AntiMonikerImpl* impl_from_IMoniker ( IMoniker iface)
inlinestatic

Definition at line 45 of file antimoniker.c.

46 {
47  return CONTAINING_RECORD(iface, AntiMonikerImpl, IMoniker_iface);
48 }
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 AntiMonikerImpl_AddRef(), AntiMonikerImpl_QueryInterface(), and AntiMonikerImpl_Release().

◆ impl_from_IROTData()

static AntiMonikerImpl* impl_from_IROTData ( IROTData iface)
inlinestatic

Definition at line 50 of file antimoniker.c.

51 {
52  return CONTAINING_RECORD(iface, AntiMonikerImpl, IROTData_iface);
53 }
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 AntiMonikerROTDataImpl_AddRef(), AntiMonikerROTDataImpl_QueryInterface(), and AntiMonikerROTDataImpl_Release().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( ole  )

Variable Documentation

◆ VT_AntiMonikerImpl

const IMonikerVtbl VT_AntiMonikerImpl
static
Initial value:
=
{
}
static HRESULT WINAPI AntiMonikerImpl_Load(IMoniker *iface, IStream *pStm)
Definition: antimoniker.c:172
static HRESULT WINAPI AntiMonikerImpl_GetTimeOfLastChange(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, FILETIME *pAntiTime)
Definition: antimoniker.c:366
static HRESULT WINAPI AntiMonikerImpl_Reduce(IMoniker *iface, IBindCtx *pbc, DWORD dwReduceHowFar, IMoniker **ppmkToLeft, IMoniker **ppmkReduced)
Definition: antimoniker.c:251
static HRESULT WINAPI AntiMonikerImpl_Inverse(IMoniker *iface, IMoniker **ppmk)
Definition: antimoniker.c:379
static HRESULT WINAPI AntiMonikerImpl_GetClassID(IMoniker *iface, CLSID *pClassID)
Definition: antimoniker.c:141
static HRESULT WINAPI AntiMonikerImpl_BindToObject(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, REFIID riid, VOID **ppvResult)
Definition: antimoniker.c:229
static HRESULT WINAPI AntiMonikerImpl_Enum(IMoniker *iface, BOOL fForward, IEnumMoniker **ppenumMoniker)
Definition: antimoniker.c:290
static HRESULT WINAPI AntiMonikerImpl_RelativePathTo(IMoniker *iface, IMoniker *pmOther, IMoniker **ppmkRelPath)
Definition: antimoniker.c:419
static HRESULT WINAPI AntiMonikerImpl_IsEqual(IMoniker *iface, IMoniker *pmkOtherMoniker)
Definition: antimoniker.c:306
static HRESULT WINAPI AntiMonikerImpl_Save(IMoniker *iface, IStream *pStm, BOOL fClearDirty)
Definition: antimoniker.c:190
static ULONG WINAPI AntiMonikerImpl_Release(IMoniker *iface)
Definition: antimoniker.c:118
static HRESULT WINAPI AntiMonikerImpl_GetDisplayName(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, LPOLESTR *ppszDisplayName)
Definition: antimoniker.c:437
static HRESULT WINAPI AntiMonikerImpl_IsDirty(IMoniker *iface)
Definition: antimoniker.c:157
static HRESULT WINAPI AntiMonikerImpl_IsRunning(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, IMoniker *pmkNewlyRunning)
Definition: antimoniker.c:340
static HRESULT WINAPI AntiMonikerImpl_IsSystemMoniker(IMoniker *iface, DWORD *pwdMksys)
Definition: antimoniker.c:478
static HRESULT WINAPI AntiMonikerImpl_QueryInterface(IMoniker *iface, REFIID riid, void **ppvObject)
Definition: antimoniker.c:60
static ULONG WINAPI AntiMonikerImpl_AddRef(IMoniker *iface)
Definition: antimoniker.c:105
static HRESULT WINAPI AntiMonikerImpl_BindToStorage(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, REFIID riid, VOID **ppvResult)
Definition: antimoniker.c:240
static HRESULT WINAPI AntiMonikerImpl_Hash(IMoniker *iface, DWORD *pdwHash)
Definition: antimoniker.c:326
static HRESULT WINAPI AntiMonikerImpl_GetSizeMax(IMoniker *iface, ULARGE_INTEGER *pcbSize)
Definition: antimoniker.c:204
static HRESULT WINAPI AntiMonikerImpl_CommonPrefixWith(IMoniker *iface, IMoniker *pmkOther, IMoniker **ppmkPrefix)
Definition: antimoniker.c:395
static HRESULT WINAPI AntiMonikerImpl_ComposeWith(IMoniker *iface, IMoniker *pmkRight, BOOL fOnlyIfNotGeneric, IMoniker **ppmkComposite)
Definition: antimoniker.c:269
static HRESULT WINAPI AntiMonikerImpl_ParseDisplayName(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, LPOLESTR pszDisplayName, ULONG *pchEaten, IMoniker **ppmkOut)
Definition: antimoniker.c:466

Definition at line 551 of file antimoniker.c.

Referenced by AntiMonikerImpl_Construct().

◆ VT_ROTDataImpl

const IROTDataVtbl VT_ROTDataImpl
static
Initial value:
=
{
}
static ULONG WINAPI AntiMonikerROTDataImpl_Release(IROTData *iface)
Definition: antimoniker.c:518
static HRESULT WINAPI AntiMonikerROTDataImpl_GetComparisonData(IROTData *iface, BYTE *pbData, ULONG cbMax, ULONG *pcbData)
Definition: antimoniker.c:531
static ULONG WINAPI AntiMonikerROTDataImpl_AddRef(IROTData *iface)
Definition: antimoniker.c:506
static HRESULT WINAPI AntiMonikerROTDataImpl_QueryInterface(IROTData *iface, REFIID riid, VOID **ppvObject)
Definition: antimoniker.c:494

Definition at line 580 of file antimoniker.c.

Referenced by AntiMonikerImpl_Construct().