2025-04-27 07:49:33 -04:00

43 lines
2.0 KiB
C++

#ifndef __MONIKER_H__
#define __MONIKER_H__
class CDMOMoniker : public IMoniker, public IPropertyBag {
public:
CDMOMoniker(REFCLSID clsid, WCHAR szName[80]);
// IUnknown
STDMETHODIMP QueryInterface(REFIID iid, void **ppv);
STDMETHODIMP_(ULONG) AddRef();
STDMETHODIMP_(ULONG) Release();
// IPersist
STDMETHODIMP GetClassID(CLSID *pClassID);
// IPersistStream
STDMETHODIMP IsDirty();
STDMETHODIMP Load(IStream *pStm);
STDMETHODIMP Save(IStream *pStm, BOOL fClearDirty);
STDMETHODIMP GetSizeMax(ULARGE_INTEGER *pcbSize);
// IMoniker
STDMETHODIMP BindToObject(IBindCtx *pbc, IMoniker *pmkToLeft, REFIID riid, void **ppv);
STDMETHODIMP BindToStorage(IBindCtx *pbc, IMoniker *pmkToLeft, REFIID riid, void **ppv);
STDMETHODIMP Reduce(IBindCtx *pbc, DWORD dwReduceHowFar, IMoniker **ppmkToLeft, IMoniker **ppmkReduced);
STDMETHODIMP ComposeWith(IMoniker *pmkRight, BOOL bOnlyIfNotGeneric, IMoniker **ppmkComposite);
STDMETHODIMP Enum(BOOL fForward, IEnumMoniker **ppenumMoniker);
STDMETHODIMP IsEqual(IMoniker *pmkOtherMoniker);
STDMETHODIMP Hash(DWORD *pdwHash);
STDMETHODIMP IsRunning(IBindCtx *pbc, IMoniker *pmkToLeft, IMoniker *pmkNewlyRunning);
STDMETHODIMP GetTimeOfLastChange(IBindCtx *pbc, IMoniker *pmkToLeft, FILETIME *pFileTime);
STDMETHODIMP Inverse(IMoniker **ppmk);
STDMETHODIMP CommonPrefixWith(IMoniker *pmkOther, IMoniker **ppmkPrefix);
STDMETHODIMP RelativePathTo(IMoniker *pmkOther, IMoniker **ppmkRelPath);
STDMETHODIMP GetDisplayName(IBindCtx *pbc, IMoniker *pmkToLeft, LPOLESTR *ppszDisplayName);
STDMETHODIMP ParseDisplayName(IBindCtx *pbc, IMoniker *pmkToLeft, LPOLESTR psxDisplayName, ULONG *pchEaten, IMoniker **ppmkOut);
STDMETHODIMP IsSystemMoniker(DWORD *pdwMksys);
// IPropertyBag
STDMETHODIMP Read(LPCOLESTR pszPropName, VARIANT *pVar, IErrorLog* pErrorLog);
STDMETHODIMP Write(LPCOLESTR pszPropName, VARIANT *pVar);
private:
ULONG m_cRef;
CLSID m_clsid;
WCHAR m_szName[80];
};
#endif //__MONIKER_H__