|
|
/*****************************************************************************\
* * * moniker.h - moniker and related interfaces and APIs * * * * Version 1.0 * * * * Copyright (c) 1993-1994, Microsoft Corp. All rights reserved. * * * \*****************************************************************************/
#if !defined( _MONIKER_H_ )
#define _MONIKER_H_
#define MK_E_CONNECTMANUALLY MK_E_FIRST
#define MK_E_EXCEEDEDDEADLINE (MK_E_FIRST + 1)
#define MK_E_NEEDGENERIC (MK_E_FIRST + 2)
#define MK_E_UNAVAILABLE (MK_E_FIRST + 3)
#define MK_E_SYNTAX (MK_E_FIRST + 4)
#define MK_E_NOOBJECT (MK_E_FIRST + 5)
#define MK_E_INVALIDEXTENSION (MK_E_FIRST + 6)
#define MK_E_INTERMEDIATEINTERFACENOTSUPPORTED (MK_E_FIRST + 7)
#define MK_E_NOTBINDABLE (MK_E_FIRST + 8)
#define MK_E_NOTBOUND (MK_E_FIRST + 9)
// called IBindCtx->RevokeObjectBound for an
// object which was not bound
#define MK_E_CANTOPENFILE (MK_E_FIRST + 10)
#define MK_E_MUSTBOTHERUSER (MK_E_FIRST + 11)
#define MK_E_NOINVERSE (MK_E_FIRST + 12)
#define MK_E_NOSTORAGE (MK_E_FIRST + 13)
#define MK_E_NOPREFIX (MK_E_FIRST + 14)
// reserved MK_S_FIRST
// reserved (MK_S_FIRST + 1)
#define MK_S_REDUCED_TO_SELF (MK_S_FIRST + 2)
// reserved (MK_S_FIRST + 3)
#define MK_S_ME (MK_S_FIRST + 4)
#define MK_S_HIM (MK_S_FIRST + 5)
#define MK_S_US (MK_S_FIRST + 6)
#define MK_S_MONIKERALREADYREGISTERED (MK_S_FIRST + 7)
// bind options; variable sized
typedef struct FARSTRUCT tagBIND_OPTS { DWORD cbStruct; // sizeof(BIND_OPTS)
DWORD grfFlags; DWORD grfMode; DWORD dwTickCountDeadline; } BIND_OPTS, FAR* LPBIND_OPTS;
// bind flags; controls binding; stored in bind options above
typedef enum { BIND_MAYBOTHERUSER = 1, BIND_JUSTTESTEXISTENCE = 2 } BIND_FLAGS;
// system moniker types; returned from IsSystemMoniker.
typedef enum tagMKSYS { MKSYS_NONE = 0, MKSYS_GENERICCOMPOSITE = 1, MKSYS_FILEMONIKER = 2, MKSYS_ANTIMONIKER = 3, MKSYS_ITEMMONIKER = 4, MKSYS_POINTERMONIKER = 5 }MKSYS;
// bit wise enum to control how much reduction takes place.
typedef enum tagMKREDUCE { MKRREDUCE_ONE = 3<<16, MKRREDUCE_TOUSER = 2<<16, MKRREDUCE_THROUGHUSER = 1<<16, MKRREDUCE_ALL = 0 } MKRREDUCE;
#if defined(__cplusplus)
interface IEnumMoniker; interface IRunningObjectTable; #else
typedef interface IEnumMoniker IEnumMoniker; typedef interface IRunningObjectTable IRunningObjectTable; #endif
typedef IEnumMoniker FAR* LPENUMMONIKER; typedef IRunningObjectTable FAR* LPRUNNINGOBJECTTABLE;
#undef INTERFACE
#define INTERFACE IBindCtx
DECLARE_INTERFACE_(IBindCtx, IUnknown) { // *** IUnknown methods ***
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE;
// *** IBindCtx methods ***
STDMETHOD(RegisterObjectBound) (THIS_ LPUNKNOWN punk) PURE; STDMETHOD(RevokeObjectBound) (THIS_ LPUNKNOWN punk) PURE; STDMETHOD(ReleaseBoundObjects) (THIS) PURE; STDMETHOD(SetBindOptions) (THIS_ LPBIND_OPTS pbindopts) PURE; STDMETHOD(GetBindOptions) (THIS_ LPBIND_OPTS pbindopts) PURE; STDMETHOD(GetRunningObjectTable) (THIS_ LPRUNNINGOBJECTTABLE FAR* pprot) PURE; STDMETHOD(RegisterObjectParam) (THIS_ LPSTR lpszKey, LPUNKNOWN punk) PURE; STDMETHOD(GetObjectParam) (THIS_ LPSTR lpszKey, LPUNKNOWN FAR* ppunk) PURE; STDMETHOD(EnumObjectParam) (THIS_ LPENUMSTRING FAR* ppenum) PURE; STDMETHOD(RevokeObjectParam) (THIS_ LPSTR lpszKey) PURE; }; typedef IBindCtx FAR* LPBC; typedef IBindCtx FAR* LPBINDCTX;
#undef INTERFACE
#define INTERFACE IMoniker
DECLARE_INTERFACE_(IMoniker, IPersistStream) { // *** IUnknown methods ***
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE;
// *** IPersist methods ***
STDMETHOD(GetClassID) (THIS_ LPCLSID lpClassID) PURE;
// *** IPersistStream methods ***
STDMETHOD(IsDirty) (THIS) PURE; STDMETHOD(Load) (THIS_ LPSTREAM pStm) PURE; STDMETHOD(Save) (THIS_ LPSTREAM pStm, BOOL fClearDirty) PURE; STDMETHOD(GetSizeMax) (THIS_ ULARGE_INTEGER FAR * pcbSize) PURE;
// *** IMoniker methods ***
STDMETHOD(BindToObject) (THIS_ LPBC pbc, LPMONIKER pmkToLeft, REFIID riidResult, LPVOID FAR* ppvResult) PURE; STDMETHOD(BindToStorage) (THIS_ LPBC pbc, LPMONIKER pmkToLeft, REFIID riid, LPVOID FAR* ppvObj) PURE; STDMETHOD(Reduce) (THIS_ LPBC pbc, DWORD dwReduceHowFar, LPMONIKER FAR* ppmkToLeft, LPMONIKER FAR * ppmkReduced) PURE; STDMETHOD(ComposeWith) (THIS_ LPMONIKER pmkRight, BOOL fOnlyIfNotGeneric, LPMONIKER FAR* ppmkComposite) PURE; STDMETHOD(Enum) (THIS_ BOOL fForward, LPENUMMONIKER FAR* ppenumMoniker) PURE; STDMETHOD(IsEqual) (THIS_ LPMONIKER pmkOtherMoniker) PURE; STDMETHOD(Hash) (THIS_ LPDWORD pdwHash) PURE; STDMETHOD(IsRunning) (THIS_ LPBC pbc, LPMONIKER pmkToLeft, LPMONIKER pmkNewlyRunning) PURE; STDMETHOD(GetTimeOfLastChange) (THIS_ LPBC pbc, LPMONIKER pmkToLeft, FILETIME FAR* pfiletime) PURE; STDMETHOD(Inverse) (THIS_ LPMONIKER FAR* ppmk) PURE; STDMETHOD(CommonPrefixWith) (THIS_ LPMONIKER pmkOther, LPMONIKER FAR* ppmkPrefix) PURE; STDMETHOD(RelativePathTo) (THIS_ LPMONIKER pmkOther, LPMONIKER FAR* ppmkRelPath) PURE; STDMETHOD(GetDisplayName) (THIS_ LPBC pbc, LPMONIKER pmkToLeft, LPSTR FAR* lplpszDisplayName) PURE; STDMETHOD(ParseDisplayName) (THIS_ LPBC pbc, LPMONIKER pmkToLeft, LPSTR lpszDisplayName, ULONG FAR* pchEaten, LPMONIKER FAR* ppmkOut) PURE; STDMETHOD(IsSystemMoniker) (THIS_ LPDWORD pdwMksys) PURE; }; typedef IMoniker FAR* LPMONIKER;
#undef INTERFACE
#define INTERFACE IRunningObjectTable
DECLARE_INTERFACE_(IRunningObjectTable, IUnknown) { // *** IUnknown methods ***
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE;
// *** IRunningObjectTable methods ***
STDMETHOD(Register) (THIS_ DWORD grfFlags, LPUNKNOWN punkObject, LPMONIKER pmkObjectName, DWORD FAR * pdwRegister) PURE; STDMETHOD(Revoke) (THIS_ DWORD dwRegister) PURE; STDMETHOD(IsRunning) (THIS_ LPMONIKER pmkObjectName) PURE; STDMETHOD(GetObject) (THIS_ LPMONIKER pmkObjectName, LPUNKNOWN FAR* ppunkObject) PURE; STDMETHOD(NoteChangeTime) (THIS_ DWORD dwRegister, FILETIME FAR * pfiletime) PURE; STDMETHOD(GetTimeOfLastChange) (THIS_ LPMONIKER pmkObjectName, FILETIME FAR * pfiletime) PURE; STDMETHOD(EnumRunning) (THIS_ LPENUMMONIKER FAR * ppenumMoniker ) PURE; }; typedef IRunningObjectTable FAR* LPRUNNINGOBJECTTABLE;
#undef INTERFACE
#define INTERFACE IEnumMoniker
DECLARE_INTERFACE_(IEnumMoniker, IUnknown) { // *** IUnknown methods ***
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE;
// *** IEnumOleDataObject methods ***
STDMETHOD(Next) (THIS_ ULONG celt, LPMONIKER FAR* rgelt, ULONG FAR* pceltFetched) PURE; STDMETHOD(Skip) (THIS_ ULONG celt) PURE; STDMETHOD(Reset) (THIS) PURE; STDMETHOD(Clone) (THIS_ IEnumMoniker FAR* FAR* ppenm) PURE; }; typedef IEnumMoniker FAR* LPENUMMONIKER;
STDAPI BindMoniker(LPMONIKER pmk, DWORD grfOpt, REFIID iidResult, LPVOID FAR* ppvResult); STDAPI MkParseDisplayName(LPBC pbc, LPSTR szUserName, ULONG FAR * pchEaten, LPMONIKER FAR * ppmk); STDAPI MonikerRelativePathTo(LPMONIKER pmkSrc, LPMONIKER pmkDest, LPMONIKER FAR* ppmkRelPath, BOOL fCalledFromMethod); STDAPI MonikerCommonPrefixWith(LPMONIKER pmkThis, LPMONIKER pmkOther, LPMONIKER FAR* ppmkCommon); STDAPI CreateBindCtx(DWORD reserved, LPBC FAR* ppbc); STDAPI CreateGenericComposite(LPMONIKER pmkFirst, LPMONIKER pmkRest, LPMONIKER FAR* ppmkComposite); STDAPI GetClassFile (LPCSTR szFilename, CLSID FAR* pclsid);
STDAPI CreateFileMoniker(LPSTR lpszPathName, LPMONIKER FAR* ppmk); STDAPI CreateItemMoniker(LPSTR lpszDelim, LPSTR lpszItem, LPMONIKER FAR* ppmk); STDAPI CreateAntiMoniker(LPMONIKER FAR* ppmk); STDAPI CreatePointerMoniker(LPUNKNOWN punk, LPMONIKER FAR* ppmk);
STDAPI GetRunningObjectTable( DWORD reserved, LPRUNNINGOBJECTTABLE FAR* pprot);
#endif // _MONIKER_H_
|