home *** CD-ROM | disk | FTP | other *** search
/ C Programming Starter Kit 2.0 / SamsPublishing-CProgrammingStarterKit-v2.0-Win31.iso / bc45 / msinc.pak / MONIKER.H < prev    next >
Text File  |  1997-07-23  |  10KB  |  262 lines

  1. /*****************************************************************************\
  2. *                                                                             *
  3. * moniker.h -   Moniker and related interfaces and APIs                                           *
  4. *                                                                             *
  5. *               OLE Version 2.0                                               *
  6. *                                                                             *
  7. \*****************************************************************************/
  8.  
  9. /*
  10.  *      C/C++ Run Time Library - Version 6.5
  11.  *
  12.  *      Copyright (c) 1994 by Borland International
  13.  *      All Rights Reserved.
  14.  *
  15.  */
  16.  
  17. #if !defined(__FLAT__)
  18. #if !defined( _MONIKER_H_ )
  19. #define _MONIKER_H_
  20. #define __MONIKER_H
  21.  
  22. #define MK_E_CONNECTMANUALLY        MK_E_FIRST
  23. #define MK_E_EXCEEDEDDEADLINE       (MK_E_FIRST + 1)
  24. #define MK_E_NEEDGENERIC            (MK_E_FIRST + 2)
  25. #define MK_E_UNAVAILABLE            (MK_E_FIRST + 3)
  26. #define MK_E_SYNTAX                 (MK_E_FIRST + 4)
  27. #define MK_E_NOOBJECT               (MK_E_FIRST + 5)
  28. #define MK_E_INVALIDEXTENSION       (MK_E_FIRST + 6)
  29. #define MK_E_INTERMEDIATEINTERFACENOTSUPPORTED (MK_E_FIRST + 7)
  30. #define MK_E_NOTBINDABLE            (MK_E_FIRST + 8)
  31. #define MK_E_NOTBOUND               (MK_E_FIRST + 9)
  32.                 // called IBindCtx->RevokeObjectBound for an
  33.                 // object which was not bound
  34. #define MK_E_CANTOPENFILE           (MK_E_FIRST + 10)
  35. #define MK_E_MUSTBOTHERUSER         (MK_E_FIRST + 11)
  36. #define MK_E_NOINVERSE              (MK_E_FIRST + 12)
  37. #define MK_E_NOSTORAGE              (MK_E_FIRST + 13)
  38. #define MK_E_NOPREFIX               (MK_E_FIRST + 14)
  39.  
  40.  
  41. // reserved                     MK_S_FIRST
  42. // reserved                     (MK_S_FIRST + 1)
  43. #define MK_S_REDUCED_TO_SELF    (MK_S_FIRST + 2)
  44. // reserved                     (MK_S_FIRST + 3)
  45. #define MK_S_ME                 (MK_S_FIRST + 4)
  46. #define MK_S_HIM                (MK_S_FIRST + 5)
  47. #define MK_S_US                 (MK_S_FIRST + 6)
  48. #define MK_S_MONIKERALREADYREGISTERED (MK_S_FIRST + 7)
  49.  
  50.  
  51. // bind options; variable sized
  52. typedef struct FARSTRUCT tagBIND_OPTS
  53. {
  54.     DWORD       cbStruct;       //  sizeof(BIND_OPTS)
  55.     DWORD       grfFlags;
  56.     DWORD       grfMode;
  57.     DWORD       dwTickCountDeadline;
  58. } BIND_OPTS, FAR* LPBIND_OPTS;
  59.  
  60.  
  61. // bind flags; controls binding; stored in bind options above
  62. typedef enum
  63. {
  64.     BIND_MAYBOTHERUSER = 1,
  65.     BIND_JUSTTESTEXISTENCE = 2
  66. } BIND_FLAGS;
  67.  
  68.  
  69. // system moniker types; returned from IsSystemMoniker.
  70. typedef enum tagMKSYS
  71. {
  72.     MKSYS_NONE = 0,
  73.     MKSYS_GENERICCOMPOSITE = 1,
  74.     MKSYS_FILEMONIKER = 2,
  75.     MKSYS_ANTIMONIKER = 3,
  76.     MKSYS_ITEMMONIKER = 4,
  77.     MKSYS_POINTERMONIKER = 5
  78. }MKSYS;
  79.  
  80.  
  81. // bit wise enum to control how much reduction takes place.
  82. typedef enum tagMKREDUCE
  83. {
  84.     MKRREDUCE_ONE           =   3<<16,
  85.     MKRREDUCE_TOUSER        =   2<<16,
  86.     MKRREDUCE_THROUGHUSER   =   1<<16,
  87.     MKRREDUCE_ALL           =   0
  88. } MKRREDUCE;
  89.  
  90.  
  91. #if defined(__cplusplus)
  92. interface IEnumMoniker;
  93. interface IRunningObjectTable;
  94. #else
  95. typedef interface IEnumMoniker IEnumMoniker;
  96. typedef interface IRunningObjectTable IRunningObjectTable;
  97. #endif
  98.  
  99. typedef       IEnumMoniker FAR* LPENUMMONIKER;
  100. typedef         IRunningObjectTable FAR* LPRUNNINGOBJECTTABLE;
  101.  
  102.  
  103.  
  104. #undef  INTERFACE
  105. #define INTERFACE   IBindCtx
  106.  
  107. DECLARE_INTERFACE_(IBindCtx, IUnknown)
  108. {
  109.     // *** IUnknown methods ***
  110.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  111.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  112.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  113.  
  114.     // *** IBindCtx methods ***
  115.     STDMETHOD(RegisterObjectBound) (THIS_ LPUNKNOWN punk) PURE;
  116.     STDMETHOD(RevokeObjectBound) (THIS_ LPUNKNOWN punk) PURE;
  117.     STDMETHOD(ReleaseBoundObjects) (THIS) PURE;
  118.  
  119.     STDMETHOD(SetBindOptions) (THIS_ LPBIND_OPTS pbindopts) PURE;
  120.     STDMETHOD(GetBindOptions) (THIS_ LPBIND_OPTS pbindopts) PURE;
  121.     STDMETHOD(GetRunningObjectTable) (THIS_ LPRUNNINGOBJECTTABLE  FAR*
  122.     pprot) PURE;
  123.     STDMETHOD(RegisterObjectParam) (THIS_ LPSTR lpszKey, LPUNKNOWN punk) PURE;
  124.     STDMETHOD(GetObjectParam) (THIS_ LPSTR lpszKey, LPUNKNOWN FAR* ppunk) PURE;
  125.     STDMETHOD(EnumObjectParam) (THIS_ LPENUMSTRING FAR* ppenum) PURE;
  126.     STDMETHOD(RevokeObjectParam) (THIS_ LPSTR lpszKey) PURE;
  127. };
  128. typedef             IBindCtx FAR* LPBC;
  129. typedef         IBindCtx FAR* LPBINDCTX;
  130.  
  131.  
  132.  
  133. #undef  INTERFACE
  134. #define INTERFACE   IMoniker
  135.  
  136. DECLARE_INTERFACE_(IMoniker, IPersistStream)
  137. {
  138.     // *** IUnknown methods ***
  139.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  140.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  141.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  142.  
  143.     // *** IPersist methods ***
  144.     STDMETHOD(GetClassID) (THIS_ LPCLSID lpClassID) PURE;
  145.  
  146.     // *** IPersistStream methods ***
  147.     STDMETHOD(IsDirty) (THIS) PURE;
  148.     STDMETHOD(Load) (THIS_ LPSTREAM pStm) PURE;
  149.     STDMETHOD(Save) (THIS_ LPSTREAM pStm,
  150.             BOOL fClearDirty) PURE;
  151.     STDMETHOD(GetSizeMax) (THIS_ ULARGE_INTEGER FAR * pcbSize) PURE;
  152.  
  153.     // *** IMoniker methods ***
  154.     STDMETHOD(BindToObject) (THIS_ LPBC pbc, LPMONIKER pmkToLeft,
  155.     REFIID riidResult, LPVOID FAR* ppvResult) PURE;
  156.     STDMETHOD(BindToStorage) (THIS_ LPBC pbc, LPMONIKER pmkToLeft,
  157.     REFIID riid, LPVOID FAR* ppvObj) PURE;
  158.     STDMETHOD(Reduce) (THIS_ LPBC pbc, DWORD dwReduceHowFar, LPMONIKER FAR*
  159.     ppmkToLeft, LPMONIKER FAR * ppmkReduced) PURE;
  160.     STDMETHOD(ComposeWith) (THIS_ LPMONIKER pmkRight, BOOL fOnlyIfNotGeneric,
  161.     LPMONIKER FAR* ppmkComposite) PURE;
  162.     STDMETHOD(Enum) (THIS_ BOOL fForward, LPENUMMONIKER FAR* ppenumMoniker)
  163.     PURE;
  164.     STDMETHOD(IsEqual) (THIS_ LPMONIKER pmkOtherMoniker) PURE;
  165.     STDMETHOD(Hash) (THIS_ LPDWORD pdwHash) PURE;
  166.     STDMETHOD(IsRunning) (THIS_ LPBC pbc, LPMONIKER pmkToLeft, LPMONIKER
  167.     pmkNewlyRunning) PURE;
  168.     STDMETHOD(GetTimeOfLastChange) (THIS_ LPBC pbc, LPMONIKER pmkToLeft,
  169.     FILETIME FAR* pfiletime) PURE;
  170.     STDMETHOD(Inverse) (THIS_ LPMONIKER FAR* ppmk) PURE;
  171.     STDMETHOD(CommonPrefixWith) (THIS_ LPMONIKER pmkOther, LPMONIKER FAR*
  172.     ppmkPrefix) PURE;
  173.     STDMETHOD(RelativePathTo) (THIS_ LPMONIKER pmkOther, LPMONIKER FAR*
  174.     ppmkRelPath) PURE;
  175.     STDMETHOD(GetDisplayName) (THIS_ LPBC pbc, LPMONIKER pmkToLeft,
  176.     LPSTR FAR* lplpszDisplayName) PURE;
  177.     STDMETHOD(ParseDisplayName) (THIS_ LPBC pbc, LPMONIKER pmkToLeft,
  178.     LPSTR lpszDisplayName, ULONG FAR* pchEaten,
  179.     LPMONIKER FAR* ppmkOut) PURE;
  180.     STDMETHOD(IsSystemMoniker) (THIS_ LPDWORD pdwMksys) PURE;
  181. };
  182. typedef         IMoniker FAR* LPMONIKER;
  183.  
  184.  
  185. //  IRunningObjectTable::Register flags
  186. #define ROTFLAGS_REGISTRATIONKEEPSALIVE 1
  187.  
  188. #undef  INTERFACE
  189. #define INTERFACE   IRunningObjectTable
  190.  
  191. DECLARE_INTERFACE_(IRunningObjectTable, IUnknown)
  192. {
  193.     // *** IUnknown methods ***
  194.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  195.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  196.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  197.  
  198.     // *** IRunningObjectTable methods ***
  199.     STDMETHOD(Register) (THIS_ DWORD grfFlags, LPUNKNOWN punkObject,
  200.     LPMONIKER pmkObjectName, DWORD FAR * pdwRegister) PURE;
  201.     STDMETHOD(Revoke) (THIS_ DWORD dwRegister) PURE;
  202.     STDMETHOD(IsRunning) (THIS_ LPMONIKER pmkObjectName) PURE;
  203.     STDMETHOD(GetObject) (THIS_ LPMONIKER pmkObjectName,
  204.     LPUNKNOWN FAR* ppunkObject) PURE;
  205.     STDMETHOD(NoteChangeTime) (THIS_ DWORD dwRegister, FILETIME FAR * pfiletime) PURE;
  206.     STDMETHOD(GetTimeOfLastChange) (THIS_ LPMONIKER pmkObjectName, FILETIME FAR * pfiletime) PURE;
  207.     STDMETHOD(EnumRunning) (THIS_ LPENUMMONIKER FAR * ppenumMoniker ) PURE;
  208. };
  209. typedef         IRunningObjectTable FAR* LPRUNNINGOBJECTTABLE;
  210.  
  211.  
  212.  
  213. #undef  INTERFACE
  214. #define INTERFACE   IEnumMoniker
  215.  
  216. DECLARE_INTERFACE_(IEnumMoniker, IUnknown)
  217. {
  218.     // *** IUnknown methods ***
  219.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  220.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  221.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  222.  
  223.     // *** IEnumOleDataObject methods ***
  224.     STDMETHOD(Next) (THIS_ ULONG celt, LPMONIKER FAR* rgelt, ULONG FAR* pceltFetched) PURE;
  225.     STDMETHOD(Skip) (THIS_ ULONG celt) PURE;
  226.     STDMETHOD(Reset) (THIS) PURE;
  227.     STDMETHOD(Clone) (THIS_ IEnumMoniker FAR* FAR* ppenm) PURE;
  228. };
  229. typedef       IEnumMoniker FAR* LPENUMMONIKER;
  230.  
  231.  
  232.  
  233.  
  234. STDAPI  BindMoniker(LPMONIKER pmk, DWORD grfOpt, REFIID iidResult, LPVOID FAR* ppvResult);
  235. STDAPI  MkParseDisplayName(LPBC pbc, LPSTR szUserName,
  236.         ULONG FAR * pchEaten, LPMONIKER FAR * ppmk);
  237. STDAPI  MonikerRelativePathTo(LPMONIKER pmkSrc, LPMONIKER pmkDest, LPMONIKER
  238.         FAR* ppmkRelPath, BOOL fCalledFromMethod);
  239. STDAPI  MonikerCommonPrefixWith(LPMONIKER pmkThis, LPMONIKER pmkOther,
  240.         LPMONIKER FAR* ppmkCommon);
  241. STDAPI  CreateBindCtx(DWORD reserved, LPBC FAR* ppbc);
  242. STDAPI  CreateGenericComposite(LPMONIKER pmkFirst, LPMONIKER pmkRest,
  243.     LPMONIKER FAR* ppmkComposite);
  244. STDAPI  GetClassFile (LPCSTR szFilename, CLSID FAR* pclsid);
  245.  
  246. STDAPI  CreateFileMoniker(LPSTR lpszPathName, LPMONIKER FAR* ppmk);
  247. STDAPI  CreateItemMoniker(LPSTR lpszDelim, LPSTR lpszItem,
  248.     LPMONIKER FAR* ppmk);
  249. STDAPI  CreateAntiMoniker(LPMONIKER FAR* ppmk);
  250. STDAPI  CreatePointerMoniker(LPUNKNOWN punk, LPMONIKER FAR* ppmk);
  251.  
  252. STDAPI  GetRunningObjectTable( DWORD reserved, LPRUNNINGOBJECTTABLE FAR* pprot);
  253.  
  254. #endif  // _MONIKER_H_
  255. #else  /* !__FLAT__ */
  256. #ifndef RC_INVOKED
  257. #pragma message("WARNING: your code should #include objbase.h instead of moniker.h")
  258. #endif /* !RC_INVOKED */
  259.  
  260. #include <objbase.h>
  261.  
  262. #endif  /* __FLAT__ */