227 lines
6.6 KiB
C++
227 lines
6.6 KiB
C++
//+---------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1992 - 1995.
|
|
//
|
|
// File: CAsyncMk.cxx
|
|
//
|
|
// Contents:
|
|
//
|
|
// Classes:
|
|
//
|
|
// Functions:
|
|
//
|
|
// History: 10-25-95 JohannP (Johann Posch) Created
|
|
//
|
|
// Note: this class servers as a base class for async moniker
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
#include <urlint.h>
|
|
#include "casyncmk.hxx"
|
|
|
|
// The derived class must implement this method
|
|
inline HRESULT DerivedMustImplement( void )
|
|
{
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
STDMETHODIMP CAsyncMoniker::QueryInterface
|
|
(REFIID riid, LPVOID FAR* ppvObj)
|
|
{
|
|
VDATETHIS(this);
|
|
UrlMkDebugOut((DEB_ASYNCMONIKER, "%p IN CAsyncMoniker::QueryInterface\n", this));
|
|
|
|
HRESULT hresult = NOERROR;
|
|
// Do not validate input as it has already been validated
|
|
// by derived classes.
|
|
|
|
if ( IsEqualIID(riid, IID_IMoniker)
|
|
|| IsEqualIID(riid, IID_IUnknown)
|
|
|| IsEqualIID(riid, IID_IPersistStream)
|
|
|| IsEqualIID(riid, IID_IInternalMoniker)
|
|
|| IsEqualIID(riid, IID_IAsyncMoniker)
|
|
|| IsEqualIID(riid, IID_IAsyncURLMoniker)
|
|
)
|
|
{
|
|
*ppvObj = this;
|
|
InterlockedIncrement((long *)&m_refs);
|
|
}
|
|
else
|
|
{
|
|
*ppvObj = NULL;
|
|
hresult = E_NOINTERFACE;
|
|
}
|
|
|
|
UrlMkDebugOut((DEB_ASYNCMONIKER, "%p OUT CAsyncMoniker::QueryInterface\n", this));
|
|
return hresult;
|
|
}
|
|
|
|
STDMETHODIMP_(ULONG) CAsyncMoniker::AddRef ()
|
|
{
|
|
ULONG crefs;
|
|
UrlMkDebugOut((DEB_ASYNCMONIKER, "%p IN CAsyncMoniker::AddRef(%ld)\n", this, m_refs));
|
|
|
|
crefs = InterlockedIncrement((long *)&m_refs);
|
|
|
|
UrlMkDebugOut((DEB_ASYNCMONIKER, "%p OUT CAsyncMoniker::AddRef(%ld)\n", this, m_refs));
|
|
return crefs;
|
|
}
|
|
|
|
STDMETHODIMP CAsyncMoniker::IsDirty (THIS)
|
|
{
|
|
VDATETHIS(this);
|
|
// monikers are immutable so they are either always dirty or never dirty.
|
|
HRESULT hresult = S_FALSE;
|
|
UrlMkDebugOut((DEB_ASYNCMONIKER, "IN CAsyncMoniker::(%p)\n", this));
|
|
|
|
UrlMkDebugOut((DEB_ASYNCMONIKER, "OUT CAsyncMoniker::(%p) hr (%x)\n", this, hresult));
|
|
return hresult;
|
|
}
|
|
|
|
STDMETHODIMP CAsyncMoniker::Load (THIS_ LPSTREAM pStm)
|
|
{
|
|
VDATETHIS(this);
|
|
UrlMkDebugOut((DEB_ASYNCMONIKER, "IN/OUT CAsyncMoniker::(%p) hr=E_NOTIMPL\n", this));
|
|
return DerivedMustImplement();
|
|
}
|
|
|
|
STDMETHODIMP CAsyncMoniker::Save (THIS_ LPSTREAM pStm,
|
|
BOOL fClearDirty)
|
|
{
|
|
VDATETHIS(this);
|
|
UrlMkDebugOut((DEB_ASYNCMONIKER, "IN/OUT CAsyncMoniker::(%p) hr=E_NOTIMPL\n", this));
|
|
return DerivedMustImplement();
|
|
}
|
|
|
|
STDMETHODIMP CAsyncMoniker::GetSizeMax (THIS_ ULARGE_INTEGER FAR * pcbSize)
|
|
{
|
|
VDATETHIS(this);
|
|
UrlMkDebugOut((DEB_ASYNCMONIKER, "IN/OUT CAsyncMoniker::(%p) hr=E_NOTIMPL\n", this));
|
|
return DerivedMustImplement();
|
|
}
|
|
|
|
// *** IMoniker methods ***
|
|
STDMETHODIMP CAsyncMoniker::BindToObject (THIS_ LPBC pbc, LPMONIKER pmkToLeft,
|
|
REFIID riidResult, LPVOID FAR* ppvResult)
|
|
{
|
|
VDATETHIS(this);
|
|
UrlMkDebugOut((DEB_ASYNCMONIKER, "IN/OUT CAsyncMoniker::(%p) hr=E_NOTIMPL\n", this));
|
|
return DerivedMustImplement();
|
|
}
|
|
|
|
STDMETHODIMP CAsyncMoniker::BindToStorage (THIS_ LPBC pbc, LPMONIKER pmkToLeft,
|
|
REFIID riid, LPVOID FAR* ppvObj)
|
|
{
|
|
VDATETHIS(this);
|
|
UrlMkDebugOut((DEB_ASYNCMONIKER, "IN/OUT CAsyncMoniker::(%p) hr=E_NOTIMPL\n", this));
|
|
return DerivedMustImplement();
|
|
}
|
|
|
|
STDMETHODIMP CAsyncMoniker::Reduce (THIS_ LPBC pbc, DWORD dwReduceHowFar, LPMONIKER FAR*
|
|
ppmkToLeft, LPMONIKER FAR * ppmkReduced)
|
|
{
|
|
VDATETHIS(this);
|
|
*ppmkReduced = this;
|
|
AddRef();
|
|
return ResultFromScode(MK_S_REDUCED_TO_SELF);
|
|
}
|
|
|
|
STDMETHODIMP CAsyncMoniker::ComposeWith (THIS_ LPMONIKER pmkRight, BOOL fOnlyIfNotGeneric,
|
|
LPMONIKER FAR* ppmkComposite)
|
|
{
|
|
VDATETHIS(this);
|
|
UrlMkDebugOut((DEB_ASYNCMONIKER, "IN/OUT CAsyncMoniker::(%p) hr=E_NOTIMPL\n", this));
|
|
return DerivedMustImplement();
|
|
}
|
|
|
|
STDMETHODIMP CAsyncMoniker::Enum (THIS_ BOOL fForward, LPENUMMONIKER FAR* ppenumMoniker)
|
|
{
|
|
VDATETHIS(this);
|
|
UrlMkDebugOut((DEB_ASYNCMONIKER, "IN/OUT CAsyncMoniker::(%p) hr=E_NOTIMPL\n", this));
|
|
return DerivedMustImplement();
|
|
}
|
|
|
|
STDMETHODIMP CAsyncMoniker::IsEqual (THIS_ LPMONIKER pmkOtherMoniker)
|
|
{
|
|
VDATETHIS(this);
|
|
UrlMkDebugOut((DEB_ASYNCMONIKER, "IN/OUT CAsyncMoniker::(%p) hr=E_NOTIMPL\n", this));
|
|
return DerivedMustImplement();
|
|
}
|
|
|
|
STDMETHODIMP CAsyncMoniker::Hash (THIS_ LPDWORD pdwHash)
|
|
{
|
|
VDATETHIS(this);
|
|
UrlMkDebugOut((DEB_ASYNCMONIKER, "IN/OUT CAsyncMoniker::(%p) hr=E_NOTIMPL\n", this));
|
|
return DerivedMustImplement();
|
|
}
|
|
|
|
STDMETHODIMP CAsyncMoniker::GetTimeOfLastChange (THIS_ LPBC pbc, LPMONIKER pmkToLeft,
|
|
FILETIME FAR* pfiletime)
|
|
{
|
|
VDATETHIS(this);
|
|
UrlMkDebugOut((DEB_ASYNCMONIKER, "IN/OUT CAsyncMoniker::(%p) hr=E_NOTIMPL\n", this));
|
|
return DerivedMustImplement();
|
|
}
|
|
|
|
STDMETHODIMP CAsyncMoniker::Inverse (THIS_ LPMONIKER FAR* ppmk)
|
|
{
|
|
VDATETHIS(this);
|
|
*ppmk = NULL;
|
|
return ResultFromScode(MK_E_NOINVERSE);
|
|
}
|
|
|
|
STDMETHODIMP CAsyncMoniker::CommonPrefixWith (LPMONIKER pmkOther, LPMONIKER FAR*
|
|
ppmkPrefix)
|
|
{
|
|
VDATETHIS(this);
|
|
UrlMkDebugOut((DEB_ASYNCMONIKER, "IN/OUT CAsyncMoniker::(%p) hr=E_NOTIMPL\n", this));
|
|
return DerivedMustImplement();
|
|
}
|
|
|
|
STDMETHODIMP CAsyncMoniker::RelativePathTo (THIS_ LPMONIKER pmkOther, LPMONIKER FAR*
|
|
ppmkRelPath)
|
|
{
|
|
VDATETHIS(this);
|
|
UrlMkDebugOut((DEB_ASYNCMONIKER, "IN/OUT CAsyncMoniker::(%p) hr=E_NOTIMPL\n", this));
|
|
return DerivedMustImplement();
|
|
}
|
|
|
|
STDMETHODIMP CAsyncMoniker::GetDisplayName (THIS_ LPBC pbc, LPMONIKER pmkToLeft,
|
|
LPWSTR FAR* lplpszDisplayName)
|
|
{
|
|
VDATETHIS(this);
|
|
UrlMkDebugOut((DEB_ASYNCMONIKER, "IN/OUT CAsyncMoniker::(%p) hr=E_NOTIMPL\n", this));
|
|
return DerivedMustImplement();
|
|
}
|
|
|
|
STDMETHODIMP CAsyncMoniker::ParseDisplayName (THIS_ LPBC pbc, LPMONIKER pmkToLeft,
|
|
LPWSTR lpszDisplayName, ULONG FAR* pchEaten,
|
|
LPMONIKER FAR* ppmkOut)
|
|
{
|
|
VDATETHIS(this);
|
|
UrlMkDebugOut((DEB_ASYNCMONIKER, "IN/OUT CAsyncMoniker::(%p) hr=E_NOTIMPL\n", this));
|
|
return DerivedMustImplement();
|
|
}
|
|
|
|
STDMETHODIMP CAsyncMoniker::IsSystemMoniker (THIS_ LPDWORD pdwMksys)
|
|
{
|
|
VDATEPTROUT (pdwMksys, DWORD);
|
|
*pdwMksys = 0;
|
|
|
|
return NOERROR;
|
|
}
|
|
|
|
STDMETHODIMP CAsyncMoniker::IsRunning (THIS_ LPBC pbc, LPMONIKER pmkToLeft,
|
|
LPMONIKER pmkNewlyRunning)
|
|
{
|
|
VDATETHIS(this);
|
|
VDATEIFACE (pbc);
|
|
LPRUNNINGOBJECTTABLE pROT;
|
|
HRESULT hresult = S_FALSE;
|
|
|
|
return hresult;
|
|
}
|
|
|
|
|
|
|