rmafiles.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:42k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /****************************************************************************
  2.  * 
  3.  *  $Id: rmafiles.h,v 1.1 2003/05/30 02:17:36 gabest Exp $
  4.  *
  5.  *  Copyright (C) 1995-1999 RealNetworks, Inc. All rights reserved..
  6.  *  
  7.  *  http://www.real.com/devzone
  8.  *
  9.  *  This program contains proprietary 
  10.  *  information of Progressive Networks, Inc, and is licensed
  11.  *  subject to restrictions on use and distribution.
  12.  *
  13.  *
  14.  *  RealMedia Architecture File Format and File System Plug-in Interfaces.
  15.  *
  16.  */
  17. #ifndef _RMAFILES_H_
  18. #define _RMAFILES_H_
  19. /*
  20.  * Forward declarations of some interfaces defined here-in.
  21.  */
  22. typedef _INTERFACE IRMAFileObject IRMAFileObject;
  23. typedef _INTERFACE IRMAFileResponse IRMAFileResponse;
  24. typedef _INTERFACE IRMAFileSystemObject IRMAFileSystemObject;
  25. typedef _INTERFACE IRMAFileStat IRMAFileStat;
  26. typedef _INTERFACE IRMAFileStatResponse IRMAFileStatResponse;
  27. typedef _INTERFACE IRMAFileSystemManager IRMAFileSystemManager;
  28. typedef _INTERFACE IRMAFileSystemManagerResponse IRMAFileSystemManagerResponse;
  29. typedef _INTERFACE IRMAFileExists IRMAFileExists;
  30. typedef _INTERFACE IRMAFileExistsResponse IRMAFileExistsResponse;
  31. typedef _INTERFACE IRMAFileMimeMapper IRMAFileMimeMapper;
  32. typedef _INTERFACE IRMAFileMimeMapperResponse IRMAFileMimeMapperResponse;
  33. typedef _INTERFACE IRMABroadcastMapper IRMABroadcastMapper;
  34. typedef _INTERFACE IRMABroadcastMapperResponse IRMABroadcastMapperResponse;
  35. typedef _INTERFACE IRMAGetFileFromSamePoolResponse IRMAGetFileFromSamePoolResponse;
  36. typedef _INTERFACE IRMABuffer IRMABuffer;
  37. typedef _INTERFACE IRMAPacket IRMAPacket;
  38. typedef _INTERFACE IRMAValues IRMAValues;
  39. typedef _INTERFACE IRMAMetaCreation IRMAMetaCreation;
  40. typedef _INTERFACE IRMAAuthenticator               IRMAAuthenticator;
  41. typedef _INTERFACE IRMARequest                     IRMARequest;
  42. typedef _INTERFACE IRMAFileRename                  IRMAFileRename;
  43. typedef _INTERFACE IRMADirHandler IRMADirHandler;
  44. typedef _INTERFACE IRMADirHandlerResponse IRMADirHandlerResponse;
  45. typedef _INTERFACE IRMAFileRemove                  IRMAFileRemove;
  46. /****************************************************************************
  47.  *  Defines:
  48.  * PN_FILE_XXXX
  49.  *  Purpose:
  50.  * Flags for opening file objects
  51.  */
  52. #define PN_FILE_READ 1
  53. #define PN_FILE_WRITE 2
  54. #define PN_FILE_BINARY 4
  55. #define PN_FILE_NOTRUNC 8
  56. /****************************************************************************
  57.  *  Defines:
  58.  * RMA_FILEADVISE_XXXX
  59.  *  Purpose:
  60.  * Flags for file object Advise method
  61.  */
  62. #define RMA_FILEADVISE_RANDOMACCESS 1
  63. #if defined(_UNIX) || defined(_WINDOWS)
  64. #include <sys/stat.h>
  65. /*
  66.  * This is a subset of standard stat()/fstat() values that both Unix and
  67.  * Windows support (or at least define).
  68.  *
  69.  * These flags are returned from IRMAFileStatResponse::StatDone() in the
  70.  * ulMode argument.
  71.  */
  72. #define PN_S_IFMT   S_IFMT
  73. #define PN_S_IFDIR  S_IFDIR
  74. #define PN_S_IFCHR  S_IFCHR
  75. #define PN_S_IFIFO  S_IFIFO
  76. #define PN_S_IFREG  S_IFREG
  77. #else
  78. /* Macintosh */
  79. #define PN_S_IFMT   0170000
  80. #define PN_S_IFDIR  0040000
  81. #define PN_S_IFCHR  0020000
  82. #define PN_S_IFIFO  0010000
  83. #define PN_S_IFREG  0100000
  84. #endif
  85. /****************************************************************************
  86.  * 
  87.  *  Interface:
  88.  * 
  89.  * IRMAFileObject
  90.  * 
  91.  *  Purpose:
  92.  * 
  93.  * Object that exports file control API
  94.  * 
  95.  *  IID_IRMAFileObject:
  96.  * 
  97.  * {00000200-0901-11d1-8B06-00A024406D59}
  98.  * 
  99.  */
  100. DEFINE_GUID(IID_IRMAFileObject, 0x00000200, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  101. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  102. #undef  INTERFACE
  103. #define INTERFACE   IRMAFileObject
  104. DECLARE_INTERFACE_(IRMAFileObject, IUnknown)
  105. {
  106.     /*
  107.      * IUnknown methods
  108.      */
  109.     STDMETHOD(QueryInterface) (THIS_
  110. REFIID riid,
  111. void** ppvObj) PURE;
  112.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  113.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  114.     /*
  115.      * IRMAFileObject methods
  116.      */
  117.     /************************************************************************
  118.      * Method:
  119.      *     IRMAFileObject::Init
  120.      * Purpose:
  121.      *     Associates a file object with the file response object it should
  122.      *     notify of operation completness. This method should also check
  123.      *     for validity of the object (for example by opening it if it is
  124.      *     a local file).
  125.      */
  126.     STDMETHOD(Init) (THIS_
  127. ULONG32     /*IN*/  ulFlags,
  128. IRMAFileResponse*   /*IN*/  pFileResponse) PURE;
  129.     /************************************************************************
  130.      * Method:
  131.      *     IRMAFileObject::GetFilename
  132.      * Purpose:
  133.      *     Returns the filename (without any path information) associated
  134.      *     with a file object.
  135.      *
  136.      *     Note: The returned pointer's lifetime expires as soon as the
  137.      *     caller returns from a function which was called from the RMA
  138.      *     core (i.e. when you return control to the RMA core)
  139.      *
  140.      */
  141.     STDMETHOD(GetFilename) (THIS_
  142. REF(const char*)    /*OUT*/  pFilename) PURE;
  143.     /************************************************************************
  144.      * Method:
  145.      *     IRMAFileObject::Close
  146.      * Purpose:
  147.      *     Closes the file resource and releases all resources associated
  148.      *     with the object.
  149.      */
  150.     STDMETHOD(Close) (THIS) PURE;
  151.     /************************************************************************
  152.      * Method:
  153.      *     IRMAFileObject::Read
  154.      * Purpose:
  155.      *     Reads a buffer of data of the specified length from the file
  156.      *     and asynchronously returns it to the caller via the 
  157.      *     IRMAFileResponse interface passed in to Init.
  158.      */
  159.     STDMETHOD(Read) (THIS_
  160. ULONG32 ulCount) PURE;
  161.     /************************************************************************
  162.      * Method:
  163.      *     IRMAFileObject::Write
  164.      * Purpose:
  165.      *     Writes a buffer of data to the file and asynchronously notifies
  166.      *     the caller via the IRMAFileResponse interface passed in to Init,
  167.      *     of the completeness of the operation.
  168.      */
  169.     STDMETHOD(Write) (THIS_
  170. IRMABuffer* pBuffer) PURE;
  171.     /************************************************************************
  172.      * Method:
  173.      *     IRMAFileObject::Seek
  174.      * Purpose:
  175.      *     Seeks to an offset in the file and asynchronously notifies
  176.      *     the caller via the IRMAFileResponse interface passed in to Init,
  177.      *     of the completeness of the operation.
  178.      *     If the bRelative flag is TRUE, it is a relative seek; else
  179.      *     an absolute seek.
  180.      */
  181.     STDMETHOD(Seek) (THIS_
  182. ULONG32 ulOffset,
  183. BOOL bRelative) PURE;    
  184.     /************************************************************************
  185.      * Method:
  186.      *     IRMAFileObject::Advise
  187.      * Purpose:
  188.      *      To pass information to the File Object advising it about usage
  189.      *     heuristics.
  190.      */
  191.     STDMETHOD(Advise) (THIS_
  192. ULONG32 ulInfo) PURE;
  193. };
  194. /****************************************************************************
  195.  * 
  196.  *  Interface:
  197.  * 
  198.  * IRMAFileResponse
  199.  * 
  200.  *  Purpose:
  201.  * 
  202.  * Object that exports file response API
  203.  * 
  204.  *  IID_IRMAFileResponse:
  205.  * 
  206.  * {00000201-0901-11d1-8B06-00A024406D59}
  207.  * 
  208.  */
  209. DEFINE_GUID(IID_IRMAFileResponse, 0x00000201, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  210. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  211. #undef  INTERFACE
  212. #define INTERFACE   IRMAFileResponse
  213. DECLARE_INTERFACE_(IRMAFileResponse, IUnknown)
  214. {
  215.     /*
  216.      * IUnknown methods
  217.      */
  218.     STDMETHOD(QueryInterface) (THIS_
  219. REFIID riid,
  220. void** ppvObj) PURE;
  221.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  222.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  223.     /*
  224.      * IRMAFileResponse methods
  225.      */
  226.     /************************************************************************
  227.      * Method:
  228.      *     IRMAFileResponse::InitDone
  229.      * Purpose:
  230.      *     Notification interface provided by users of the IRMAFileObject
  231.      *     interface. This method is called by the IRMAFileObject when the
  232.      *     initialization of the file is complete. If the file is not valid 
  233.      *     for the file system, the status PNR_FAILED should be 
  234.      *     returned.
  235.      */
  236.     STDMETHOD(InitDone) (THIS_
  237. PN_RESULT     status) PURE;
  238.     /************************************************************************
  239.      * Method:
  240.      *     IRMAFileResponse::CloseDone
  241.      * Purpose:
  242.      *     Notification interface provided by users of the IRMAFileObject
  243.      *     interface. This method is called by the IRMAFileObject when the
  244.      *     close of the file is complete.
  245.      */
  246.     STDMETHOD(CloseDone) (THIS_
  247. PN_RESULT     status) PURE;
  248.     /************************************************************************
  249.      * Method:
  250.      *     IRMAFileResponse::ReadDone
  251.      * Purpose:
  252.      *     Notification interface provided by users of the IRMAFileObject
  253.      *     interface. This method is called by the IRMAFileObject when the
  254.      *     last read from the file is complete and a buffer is available.
  255.      */
  256.     STDMETHOD(ReadDone) (THIS_ 
  257. PN_RESULT     status,
  258. IRMABuffer*     pBuffer) PURE;
  259.     /************************************************************************
  260.      * Method:
  261.      *     IRMAFileResponse::WriteDone
  262.      * Purpose:
  263.      *     Notification interface provided by users of the IRMAFileObject
  264.      *     interface. This method is called by the IRMAFileObject when the
  265.      *     last write to the file is complete.
  266.      */
  267.     STDMETHOD(WriteDone) (THIS_ 
  268. PN_RESULT     status) PURE;
  269.     /************************************************************************
  270.      * Method:
  271.      *     IRMAFileResponse::SeekDone
  272.      * Purpose:
  273.      *     Notification interface provided by users of the IRMAFileObject
  274.      *     interface. This method is called by the IRMAFileObject when the
  275.      *     last seek in the file is complete.
  276.      */
  277.     STDMETHOD(SeekDone) (THIS_ 
  278. PN_RESULT     status) PURE;
  279. };
  280. /****************************************************************************
  281.  * 
  282.  *  Interface:
  283.  * 
  284.  * IRMAFileSystemObject
  285.  * 
  286.  *  Purpose:
  287.  * 
  288.  * Object that allows a Controller to communicate with a specific
  289.  * File System plug-in session
  290.  * 
  291.  *  IID_IRMAFileSystemObject:
  292.  * 
  293.  * {00000202-0901-11d1-8B06-00A024406D59}
  294.  * 
  295.  */
  296. DEFINE_GUID(IID_IRMAFileSystemObject, 0x00000202, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  297. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  298. #undef  INTERFACE
  299. #define INTERFACE   IRMAFileSystemObject
  300. DECLARE_INTERFACE_(IRMAFileSystemObject, IUnknown)
  301. {
  302.     /*
  303.      * IUnknown methods
  304.      */
  305.     STDMETHOD(QueryInterface) (THIS_
  306. REFIID riid,
  307. void** ppvObj) PURE;
  308.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  309.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  310.     /*
  311.      * IRMAFileSystemObject methods
  312.      */
  313.     /************************************************************************
  314.      * Method:
  315.      *     IRMAFileSystemObject::GetFileSystemInfo
  316.      * Purpose:
  317.      *     Returns information vital to the instantiation of file system
  318.      *     plugin.
  319.      *
  320.      *     pShortName should be a short, human readable name in the form
  321.      *      of "company-fsname".  For example: pShortName = "pn-local".
  322.      */
  323.     STDMETHOD(GetFileSystemInfo)    (THIS_
  324.     REF(const char*) /*OUT*/ pShortName,
  325.     REF(const char*) /*OUT*/ pProtocol) PURE;
  326.     STDMETHOD(InitFileSystem) (THIS_
  327. IRMAValues* pOptions) PURE;
  328.     STDMETHOD(CreateFile) (THIS_
  329. IUnknown**    /*OUT*/ ppFileObject) PURE;
  330.     /*
  331.      * The following method is deprecated and should return PNR_NOTIMPL
  332.      */
  333.     STDMETHOD(CreateDir) (THIS_
  334. IUnknown**   /*OUT*/ ppDirObject) PURE;
  335. };
  336. /****************************************************************************
  337.  * 
  338.  *  Interface:
  339.  * 
  340.  * IRMAFileStat
  341.  * 
  342.  *  Purpose:
  343.  * 
  344.  *      Gets information about a specific File object
  345.  * 
  346.  *  IID_IRMAFileStat:
  347.  *  
  348.  * {00000205-0901-11d1-8B06-00A024406D59}
  349.  * 
  350.  */
  351. DEFINE_GUID(IID_IRMAFileStat, 0x00000205, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  352. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  353. #undef  INTERFACE
  354. #define INTERFACE   IRMAFileStat
  355. DECLARE_INTERFACE_(IRMAFileStat, IUnknown)
  356. {
  357.     /*
  358.      * IUnknown methods
  359.      */
  360.     STDMETHOD(QueryInterface)   (THIS_
  361.                                 REFIID riid,
  362.                                 void** ppvObj) PURE;
  363.     STDMETHOD_(ULONG,AddRef)  (THIS) PURE;
  364.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  365.     /*
  366.      * IRMAFileStat methods
  367.      */
  368.     STDMETHOD(Stat) (THIS_
  369. IRMAFileStatResponse* pFileStatResponse
  370. ) PURE;
  371. };
  372. /****************************************************************************
  373.  * 
  374.  *  Interface:
  375.  * 
  376.  * IRMAFileStatResponse
  377.  * 
  378.  *  Purpose:
  379.  * 
  380.  *      Returns information about a specific File object
  381.  * 
  382.  *  IID_IRMAFileStatResponse:
  383.  *  
  384.  * {00000206-0901-11d1-8B06-00A024406D59}
  385.  * 
  386.  */
  387. DEFINE_GUID(IID_IRMAFileStatResponse, 0x00000206, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  388. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  389. #undef  INTERFACE
  390. #define INTERFACE   IRMAFileStatResponse
  391. DECLARE_INTERFACE_(IRMAFileStatResponse, IUnknown)
  392. {
  393.     /*
  394.      * IUnknown methods
  395.      */
  396.     STDMETHOD(QueryInterface)   (THIS_
  397.                                 REFIID riid,
  398.                                 void** ppvObj) PURE;
  399.     STDMETHOD_(ULONG,AddRef)  (THIS) PURE;
  400.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  401.     /*
  402.      * IRMAFileStat methods
  403.      */
  404.     STDMETHOD(StatDone) (THIS_
  405.  PN_RESULT status,
  406.  UINT32 ulSize,
  407.  UINT32 ulCreationTime,
  408.  UINT32 ulAccessTime,
  409.  UINT32 ulModificationTime,
  410.  UINT32 ulMode) PURE;
  411. };
  412. /****************************************************************************
  413.  * 
  414.  *  Interface:
  415.  * 
  416.  * IRMAFileSystemManager
  417.  * 
  418.  *  Purpose:
  419.  * 
  420.  *      Gives out File Objects based on URLs
  421.  * 
  422.  *  IID_IRMAFileSystemManager:
  423.  *  
  424.  * {00000207-0901-11d1-8B06-00A024406D59}
  425.  * 
  426.  */
  427. DEFINE_GUID(IID_IRMAFileSystemManager, 0x00000207, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  428. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  429. #undef  INTERFACE
  430. #define INTERFACE   IRMAFileSystemManager
  431. #define CLSID_IRMAFileSystemManager IID_IRMAFileSystemManager
  432. DECLARE_INTERFACE_(IRMAFileSystemManager, IUnknown)
  433. {
  434.     /*
  435.      * IUnknown methods
  436.      */
  437.     STDMETHOD(QueryInterface)   (THIS_
  438.                                 REFIID riid,
  439.                                 void** ppvObj) PURE;
  440.     STDMETHOD_(ULONG,AddRef)  (THIS) PURE;
  441.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  442.     /*
  443.      * IRMAFileSystemManager methods
  444.      */
  445.     STDMETHOD(Init) (THIS_
  446.     IRMAFileSystemManagerResponse* /*IN*/  pFileManagerResponse
  447.     ) PURE;
  448.     /* GetFileObject attempts to locate an existing file via the DoesExist
  449.      * method in each file system's objects, and returns that object through
  450.      * FSManagerResponse->FileObjectReady
  451.      */
  452.     STDMETHOD(GetFileObject) (THIS_
  453.  IRMARequest* pRequest,
  454.  IRMAAuthenticator* pAuthenticator) PURE;
  455.     /* GetNewFileObject is similar to GetFileObject except that no DoesExist
  456.      * checks are done.  The first file system that matches the mount point
  457.      * or protocol for the path in the request object creates the file
  458.      * which is then returned through FileObjectReady.  This is especially
  459.      * useful for those who wish to open a brand new file for writing.
  460.      */
  461.     STDMETHOD(GetNewFileObject) (THIS_
  462.  IRMARequest* pRequest,
  463.  IRMAAuthenticator* pAuthenticator) PURE;
  464.     STDMETHOD(GetRelativeFileObject) (THIS_
  465.       IUnknown* pOriginalObject,
  466.       const char* pPath) PURE;
  467.     /*
  468.      * The following method is deprecated and should return PNR_NOTIMPL
  469.      */
  470.     STDMETHOD(GetDirObjectFromURL) (THIS_
  471.                                         const char* pURL) PURE;
  472. };
  473. /****************************************************************************
  474.  * 
  475.  *  Interface:
  476.  * 
  477.  * IRMAFileSystemManagerResponse
  478.  * 
  479.  *  Purpose:
  480.  * 
  481.  *      Gives out File System objects based on URLs
  482.  * 
  483.  *  IID_IRMAFileSystemManagerResponse:
  484.  *  
  485.  * {00000208-0901-11d1-8B06-00A024406D59}
  486.  * 
  487.  */
  488. DEFINE_GUID(IID_IRMAFileSystemManagerResponse, 0x00000208, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  489. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  490. #undef  INTERFACE
  491. #define INTERFACE   IRMAFileSystemManagerResponse
  492. DECLARE_INTERFACE_(IRMAFileSystemManagerResponse, IUnknown)
  493. {
  494.     /*
  495.      * IUnknown methods
  496.      */
  497.     STDMETHOD(QueryInterface)   (THIS_
  498.                                 REFIID riid,
  499.                                 void** ppvObj) PURE;
  500.     STDMETHOD_(ULONG,AddRef)  (THIS) PURE;
  501.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  502.     /*
  503.      * IRMAFileSystemManagerResponse methods
  504.      */
  505.     /************************************************************************
  506.      * Method:
  507.      * IRMAFileSystemManagerResponse::InitDone
  508.      * Purpose:
  509.      */
  510.     STDMETHOD(InitDone)     (THIS_
  511.     PN_RESULT     status) PURE;
  512.     STDMETHOD(FileObjectReady) (THIS_
  513. PN_RESULT status,
  514.                                 IUnknown* pObject) PURE;
  515.     /*
  516.      * The following method is deprecated and should return PNR_NOTIMPL
  517.      */
  518.     STDMETHOD(DirObjectReady) (THIS_
  519. PN_RESULT status,
  520.                                 IUnknown* pDirObject) PURE;
  521. };
  522. /****************************************************************************
  523.  * 
  524.  *  Interface:
  525.  * 
  526.  * IRMAFileExists
  527.  * 
  528.  *  Purpose:
  529.  * 
  530.  * Checks for the existense of a file.  Must be implemented.
  531.  * 
  532.  *  IID_IRMAFileExists:
  533.  * 
  534.  * {00000209-0901-11d1-8B06-00A024406D59}
  535.  * 
  536.  */
  537. DEFINE_GUID(IID_IRMAFileExists, 0x00000209, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  538. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  539. #undef  INTERFACE
  540. #define INTERFACE   IRMAFileExists
  541. DECLARE_INTERFACE_(IRMAFileExists, IUnknown)
  542. {
  543.     /*
  544.      * IUnknown methods
  545.      */
  546.     STDMETHOD(QueryInterface) (THIS_
  547. REFIID riid,
  548. void** ppvObj) PURE;
  549.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  550.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  551.     /*
  552.      * IRMAFileExists methods
  553.      */
  554.     /************************************************************************
  555.      * Method:
  556.      *     IRMAFileExists::DoesExist
  557.      * Purpose:
  558.      */
  559.     STDMETHOD(DoesExist) (THIS_
  560. const char* /*IN*/  pPath, 
  561. IRMAFileExistsResponse* /*IN*/  pFileResponse) PURE;
  562. };
  563. /****************************************************************************
  564.  * 
  565.  *  Interface:
  566.  * 
  567.  * IRMAFileExistsResponse
  568.  * 
  569.  *  Purpose:
  570.  * 
  571.  * Response interface for IRMAFileExists.  Must be implemented.
  572.  * 
  573.  *  IID_IRMAFileExistsResponse:
  574.  * 
  575.  * {0000020A-0901-11d1-8B06-00A024406D59}
  576.  * 
  577.  */
  578. DEFINE_GUID(IID_IRMAFileExistsResponse, 0x0000020a, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  579. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  580. #undef  INTERFACE
  581. #define INTERFACE   IRMAFileExists
  582. DECLARE_INTERFACE_(IRMAFileExistsResponse, IUnknown)
  583. {
  584.     /*
  585.      * IUnknown methods
  586.      */
  587.     STDMETHOD(QueryInterface) (THIS_
  588. REFIID riid,
  589. void** ppvObj) PURE;
  590.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  591.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  592.     /*
  593.      * IRMAFileExistsResponse methods
  594.      */
  595.     STDMETHOD(DoesExistDone) (THIS_
  596.       BOOL bExist) PURE;
  597. };
  598. /****************************************************************************
  599.  * 
  600.  *  Interface:
  601.  * 
  602.  * IRMAFileMimeMapper
  603.  * 
  604.  *  Purpose:
  605.  * 
  606.  * Allows you to specify a mime type for a specific file.
  607.  * Optional interface.
  608.  * 
  609.  *  IID_IRMAFileMimeMapper:
  610.  * 
  611.  * {0000020B-0901-11d1-8B06-00A024406D59}
  612.  * 
  613.  */
  614. DEFINE_GUID(IID_IRMAFileMimeMapper, 0x0000020b, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  615. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  616. #undef  INTERFACE
  617. #define INTERFACE   IRMAFileMimeMapper
  618. DECLARE_INTERFACE_(IRMAFileMimeMapper, IUnknown)
  619. {
  620.     /*
  621.      * IUnknown methods
  622.      */
  623.     STDMETHOD(QueryInterface) (THIS_
  624. REFIID riid,
  625. void** ppvObj) PURE;
  626.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  627.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  628.     /*
  629.      * IRMAFileMimeMapper methods
  630.      */
  631.     /************************************************************************
  632.      * Method:
  633.      *     IRMAFileMimeMapper::FindMimeType
  634.      * Purpose:
  635.      */
  636.     STDMETHOD(FindMimeType) (THIS_
  637.     const char*     /*IN*/  pURL, 
  638.     IRMAFileMimeMapperResponse* /*IN*/  pMimeMapperResponse
  639.     ) PURE;
  640. };
  641. /****************************************************************************
  642.  * 
  643.  *  Interface:
  644.  * 
  645.  * IRMAFileMimeMapperResponse
  646.  * 
  647.  *  Purpose:
  648.  * 
  649.  * Response interface for IRMAFileMimeMapper.
  650.  * Optional interface.
  651.  * 
  652.  *  IID_IRMAFileMimeMapperResponse:
  653.  * 
  654.  * {0000020C-0901-11d1-8B06-00A024406D59}
  655.  * 
  656.  */
  657. DEFINE_GUID(IID_IRMAFileMimeMapperResponse, 0x0000020c, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  658. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  659. #undef  INTERFACE
  660. #define INTERFACE   IRMAFileMimeMapperResponse
  661. DECLARE_INTERFACE_(IRMAFileMimeMapperResponse, IUnknown)
  662. {
  663.     /*
  664.      * IUnknown methods
  665.      */
  666.     STDMETHOD(QueryInterface) (THIS_
  667. REFIID riid,
  668. void** ppvObj) PURE;
  669.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  670.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  671.     /*
  672.      * IRMAFileMimeMapperResponse methods
  673.      */
  674.     /************************************************************************
  675.      * Method:
  676.      *     IRMAFileMimeMapperResponse::MimeTypeFound
  677.      * Purpose:
  678.      *     Notification interface provided by users of the IRMAFileMimeMapper
  679.      *     interface. This method is called by the IRMAFileObject when the
  680.      *     initialization of the file is complete, and the Mime type is
  681.      *     available for the request file. If the file is not valid for the
  682.      *     file system, the status PNR_FAILED should be returned,
  683.      *     with a mime type of NULL. If the file is valid but the mime type
  684.      *     is unknown, then the status PNR_OK should be returned with
  685.      *     a mime type of NULL.
  686.      *     
  687.      */
  688.     STDMETHOD(MimeTypeFound) (THIS_
  689.       PN_RESULT status,
  690.       const char* pMimeType) PURE;
  691. };
  692. /****************************************************************************
  693.  * 
  694.  *  Interface:
  695.  * 
  696.  * IRMABroadcastMapper
  697.  * 
  698.  *  Purpose:
  699.  * 
  700.  * Associates a file with a broadcast format plugin.
  701.  * Implementation only required by broadcast plugin file systems.
  702.  * 
  703.  *  IID_IRMABroadcastMapper:
  704.  * 
  705.  * {0000020D-0901-11d1-8B06-00A024406D59}
  706.  * 
  707.  */
  708. DEFINE_GUID(IID_IRMABroadcastMapper, 0x0000020d, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  709. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  710. #undef  INTERFACE
  711. #define INTERFACE   IRMABroadcastMapper
  712. DECLARE_INTERFACE_(IRMABroadcastMapper, IUnknown)
  713. {
  714.     /*
  715.      * IUnknown methods
  716.      */
  717.     STDMETHOD(QueryInterface) (THIS_
  718. REFIID riid,
  719. void** ppvObj) PURE;
  720.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  721.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  722.     /*
  723.      * IRMABroadcastMapper methods
  724.      */
  725.     /************************************************************************
  726.      * Method:
  727.      *     IRMABroadcastMapper::FindBroadcastType
  728.      * Purpose:
  729.      */
  730.     STDMETHOD(FindBroadcastType) (THIS_
  731. const char*      /*IN*/  pURL, 
  732. IRMABroadcastMapperResponse* /*IN*/  pBroadcastMapperResponse) PURE;
  733. };
  734. /****************************************************************************
  735.  * 
  736.  *  Interface:
  737.  * 
  738.  * IRMABroadcastMapperResponse
  739.  * 
  740.  *  Purpose:
  741.  * 
  742.  * Response interface for IRMABroadcastMapper.
  743.  * Implementation only required by broadcast plugin file systems.
  744.  * 
  745.  *  IID_IRMABroadcastMapperResponse:
  746.  * 
  747.  * {0000020E-0901-11d1-8B06-00A024406D59}
  748.  * 
  749.  */
  750. DEFINE_GUID(IID_IRMABroadcastMapperResponse, 0x0000020e, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  751. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  752. #undef  INTERFACE
  753. #define INTERFACE   IRMABroadcastMapperResponse
  754. DECLARE_INTERFACE_(IRMABroadcastMapperResponse, IUnknown)
  755. {
  756.     /*
  757.      * IUnknown methods
  758.      */
  759.     STDMETHOD(QueryInterface) (THIS_
  760. REFIID riid,
  761. void** ppvObj) PURE;
  762.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  763.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  764.     /*
  765.      * IRMABroadcastMapperResponse methods
  766.      */
  767.     /************************************************************************
  768.      * Method:
  769.      *     IRMABroadcastMapperResponse::BroadcastTypeFound
  770.      * Purpose:
  771.      *     Notification interface provided by users of the IRMABroadcastMapper
  772.      *     interface. This method is called by the File Object when the
  773.      *     initialization of the file is complete, and the broadcast type is
  774.      *     available for the request file. If the file is not valid for the
  775.      *     file system, the status PNR_FAILED should be returned,
  776.      *     with the broadcast type set to NULL.
  777.      *     
  778.      */
  779.     STDMETHOD(BroadcastTypeFound) (THIS_
  780.   PN_RESULT status,
  781.   const char* pBroadcastType) PURE;
  782. };
  783. /****************************************************************************
  784.  * 
  785.  *  Interface:
  786.  * 
  787.  * IRMAGetFileFromSamePool
  788.  * 
  789.  *  Purpose:
  790.  * 
  791.  *      Gives out File Objects based on filenames and relative "paths"
  792.  * 
  793.  *  IID_IRMAGetFileFromSamePool:
  794.  *  
  795.  * {0000020f-0901-11d1-8B06-00A024406D59}
  796.  * 
  797.  */
  798. DEFINE_GUID(IID_IRMAGetFileFromSamePool, 0x0000020f, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  799. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  800. #undef  INTERFACE
  801. #define INTERFACE   IRMAGetFileFromSamePool
  802. #define CLSID_IRMAGetFileFromSamePool IID_IRMAGetFileFromSamePool
  803. DECLARE_INTERFACE_(IRMAGetFileFromSamePool, IUnknown)
  804. {
  805.     /*
  806.      * IUnknown methods
  807.      */
  808.     STDMETHOD(QueryInterface)   (THIS_
  809.                                 REFIID riid,
  810.                                 void** ppvObj) PURE;
  811.     STDMETHOD_(ULONG,AddRef)  (THIS) PURE;
  812.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  813.     /*
  814.      * IRMAGetFileFromSamePool method
  815.      */
  816.     /************************************************************************
  817.      * Method:
  818.      *     IRMAGetFileFromSamePool::GetFileObjectFromPool
  819.      * Purpose:
  820.      *      To get another FileObject from the same pool. 
  821.      */
  822.     STDMETHOD(GetFileObjectFromPool) (THIS_
  823.  IRMAGetFileFromSamePoolResponse*) PURE;
  824. };
  825. /****************************************************************************
  826.  * 
  827.  *  Interface:
  828.  * 
  829.  * IRMAGetFileFromSamePoolResponse
  830.  * 
  831.  *  Purpose:
  832.  * 
  833.  *      Gives out File Objects based on filenames and relative "paths"
  834.  * 
  835.  *  IID_IRMAGetFileFromSamePoolResponse:
  836.  *  
  837.  * {00000210-0901-11d1-8B06-00A024406D59}
  838.  * 
  839.  */
  840. DEFINE_GUID(IID_IRMAGetFileFromSamePoolResponse, 0x00000210, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  841. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  842. #undef  INTERFACE
  843. #define INTERFACE   IRMAGetFileFromSamePoolResponse
  844. #define CLSID_IRMAGetFileFromSamePoolResponse IID_IRMAGetFileFromSamePoolResponse
  845. DECLARE_INTERFACE_(IRMAGetFileFromSamePoolResponse, IUnknown)
  846. {
  847.     /*
  848.      * IUnknown methods
  849.      */
  850.     STDMETHOD(QueryInterface)   (THIS_
  851.                                 REFIID riid,
  852.                                 void** ppvObj) PURE;
  853.     STDMETHOD_(ULONG,AddRef)  (THIS) PURE;
  854.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  855.     /*
  856.      * IRMAGetFileFromSamePoolResponse method
  857.      */
  858.     /************************************************************************
  859.      * Method:
  860.      *     IRMAGetFileFromSamePoolResponse::FileObjectReady
  861.      * Purpose:
  862.      *      To return another FileObject from the same pool. 
  863.      */
  864.     STDMETHOD(FileObjectReady) (THIS_
  865. PN_RESULT status,
  866. IUnknown* ppUnknown) PURE;
  867. };
  868. /****************************************************************************
  869.  * 
  870.  *  Interface:
  871.  * 
  872.  * IRMAFileAuthenticator
  873.  * 
  874.  *  Purpose:
  875.  * 
  876.  *      Set and Get a file object's authenticator object.
  877.  * 
  878.  *  IID_IRMAFileAuthenticator:
  879.  *  
  880.  * {00000211-0901-11d1-8B06-00A024406D59}
  881.  * 
  882.  */
  883. DEFINE_GUID(IID_IRMAFileAuthenticator, 0x00000211, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  884. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  885. #undef  INTERFACE
  886. #define INTERFACE   IRMAFileAuthenticator
  887. #define CLSID_IRMAFileAuthenticator IID_IRMAFileAuthenticator
  888. DECLARE_INTERFACE_(IRMAFileAuthenticator, IUnknown)
  889. {
  890.     /*
  891.      * IUnknown methods
  892.      */
  893.     STDMETHOD(QueryInterface)   (THIS_
  894.                                 REFIID riid,
  895.                                 void** ppvObj) PURE;
  896.     STDMETHOD_(ULONG,AddRef)  (THIS) PURE;
  897.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  898.     /*
  899.      * IRMAFileAuthenticator methods
  900.      */
  901.     STDMETHOD(SetAuthenticator) (THIS_
  902.  IRMAAuthenticator* pAuthenticator) PURE;
  903.     
  904.     STDMETHOD(GetAuthenticator) (THIS_
  905.  REF(IRMAAuthenticator*) pAuthenticator) PURE;
  906. };
  907. /****************************************************************************
  908.  * 
  909.  *  Interface:
  910.  * 
  911.  * IRMARequestHandler
  912.  * 
  913.  *  Purpose:
  914.  * 
  915.  *      Object to manage IRMARequest objects
  916.  * 
  917.  *  IID_IRMARequestHandler:
  918.  *  
  919.  * {00000212-0901-11d1-8B06-00A024406D59}
  920.  * 
  921.  */
  922. DEFINE_GUID(IID_IRMARequestHandler, 0x00000212, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  923. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  924. #undef  INTERFACE
  925. #define INTERFACE   IRMARequestHandler
  926. #define CLSID_IRMARequestHandler IID_IRMARequestHandler
  927. DECLARE_INTERFACE_(IRMARequestHandler, IUnknown)
  928. {
  929.     /*
  930.      * IUnknown methods
  931.      */
  932.     STDMETHOD(QueryInterface)   (THIS_
  933.                                 REFIID riid,
  934.                                 void** ppvObj) PURE;
  935.     STDMETHOD_(ULONG,AddRef)  (THIS) PURE;
  936.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  937.     /************************************************************************
  938.      * Method:
  939.      *     IRMARequestHandler::SetRequest
  940.      * Purpose:
  941.      *     Associates an IRMARequest with an object
  942.      */
  943.     STDMETHOD(SetRequest)   (THIS_
  944.     IRMARequest*        /*IN*/  pRequest) PURE;
  945.     /************************************************************************
  946.      * Method:
  947.      *     IRMARequestHandler::GetRequest
  948.      * Purpose:
  949.      *     Gets the IRMARequest object associated with an object
  950.      */
  951.     STDMETHOD(GetRequest)   (THIS_
  952.     REF(IRMARequest*)        /*OUT*/  pRequest) PURE;
  953. };
  954. /****************************************************************************
  955.  * 
  956.  *  Interface:
  957.  * 
  958.  * IRMARequestContext
  959.  * 
  960.  *  Purpose:
  961.  * 
  962.  *      Object to manage the context of the Request
  963.  * 
  964.  *  IID_IRMARequestContext:
  965.  *  
  966.  * {00000217-0901-11d1-8B06-00A024406D59}
  967.  * 
  968.  */
  969. DEFINE_GUID(IID_IRMARequestContext, 0x00000217, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  970. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  971. #undef  INTERFACE
  972. #define INTERFACE   IRMARequestContext
  973. #define CLSID_IRMARequestContext IID_IRMARequestContext
  974. DECLARE_INTERFACE_(IRMARequestContext, IUnknown)
  975. {
  976.     /*
  977.      * IUnknown methods
  978.      */
  979.     STDMETHOD(QueryInterface)   (THIS_
  980.                                 REFIID riid,
  981.                                 void** ppvObj) PURE;
  982.     STDMETHOD_(ULONG,AddRef)  (THIS) PURE;
  983.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  984.     /*
  985.      * IRMARequestContext methods
  986.      */
  987.     /************************************************************************
  988.      * Method:
  989.      *     IRMARequestContext::SetUserContext
  990.      * Purpose:
  991.      *     Sets the Authenticated users Context.
  992.      */
  993.     STDMETHOD(SetUserContext)
  994.     (
  995. THIS_
  996. IUnknown* pIUnknownNewContext
  997.     ) PURE;
  998.     /************************************************************************
  999.      * Method:
  1000.      *     IRMARequestContext::GetUserContext
  1001.      * Purpose:
  1002.      *     Gets the Authenticated users Context.
  1003.      */
  1004.     STDMETHOD(GetUserContext)
  1005.     (
  1006. THIS_
  1007. REF(IUnknown*) pIUnknownCurrentContext
  1008.     ) PURE;
  1009.     /************************************************************************
  1010.      * Method:
  1011.      *     IRMARequestContext::SetRequester
  1012.      * Purpose:
  1013.      *     Sets the Object that made the request.
  1014.      */
  1015.     STDMETHOD(SetRequester)
  1016.     (
  1017. THIS_
  1018. IUnknown* pIUnknownNewRequester
  1019.     ) PURE;
  1020.     /************************************************************************
  1021.      * Method:
  1022.      *     IRMARequestContext::GetRequester
  1023.      * Purpose:
  1024.      *     Gets the Object that made the request.
  1025.      */
  1026.     STDMETHOD(GetRequester)
  1027.     (
  1028. THIS_
  1029. REF(IUnknown*) pIUnknownCurrentRequester
  1030.     ) PURE;
  1031. };
  1032. /****************************************************************************
  1033.  * 
  1034.  *  Interface:
  1035.  * 
  1036.  * IRMARequest
  1037.  * 
  1038.  *  Purpose:
  1039.  * 
  1040.  *      Object to manage the RFC822 headers sent by the client
  1041.  * 
  1042.  *  IID_IRMARequest:
  1043.  *  
  1044.  * {00000213-0901-11d1-8B06-00A024406D59}
  1045.  * 
  1046.  */
  1047. DEFINE_GUID(IID_IRMARequest, 0x00000213, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  1048. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  1049. #undef  INTERFACE
  1050. #define INTERFACE   IRMARequest
  1051. #define CLSID_IRMARequest IID_IRMARequest
  1052. DECLARE_INTERFACE_(IRMARequest, IUnknown)
  1053. {
  1054.     /*
  1055.      * IUnknown methods
  1056.      */
  1057.     STDMETHOD(QueryInterface)   (THIS_
  1058.                                 REFIID riid,
  1059.                                 void** ppvObj) PURE;
  1060.     STDMETHOD_(ULONG,AddRef)  (THIS) PURE;
  1061.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  1062.     /*
  1063.      * IRMARequest methods
  1064.      */
  1065.     /************************************************************************
  1066.      * Method:
  1067.      *     IRMARequest::SetRequestHeaders
  1068.      * Purpose:
  1069.      *     Sets the headers that will be sent in the RFC822 header section
  1070.      *      of the request message
  1071.      */
  1072.     STDMETHOD(SetRequestHeaders) (THIS_
  1073. IRMAValues* pRequestHeaders) PURE;
  1074.     
  1075.     /************************************************************************
  1076.      * Method:
  1077.      *     IRMARequest::GetRequestHeaders
  1078.      * Purpose:
  1079.      *     Gets the headers that were sent in the RFC822 header section
  1080.      *     of the request message
  1081.      */
  1082.     STDMETHOD(GetRequestHeaders) (THIS_
  1083. REF(IRMAValues*) pRequestHeaders) PURE;
  1084.     /************************************************************************
  1085.      * Method:
  1086.      *     IRMARequest::SetResponseHeaders
  1087.      * Purpose:
  1088.      *     Sets the headers that will be returned in the RFC822 header
  1089.      *     section of the response message
  1090.      */
  1091.     STDMETHOD(SetResponseHeaders) (THIS_
  1092. IRMAValues* pResponseHeaders) PURE;
  1093.     
  1094.     /************************************************************************
  1095.      * Method:
  1096.      *     IRMARequest::GetResponseHeaders
  1097.      * Purpose:
  1098.      *     Gets the headers that were returned in the RFC822 header section
  1099.      *     of the response message
  1100.      */
  1101.     STDMETHOD(GetResponseHeaders) (THIS_
  1102. REF(IRMAValues*) pResponseHeaders) PURE;
  1103.     /************************************************************************
  1104.      * Method:
  1105.      *     IRMARequest::SetURL
  1106.      * Purpose:
  1107.      *     Sets the fully qualified path associated with a file object.
  1108.      *     Note: On the server, this path does not include the file system
  1109.      *      mount point.
  1110.      */
  1111.     STDMETHOD(SetURL) (THIS_
  1112. const char* pURL) PURE;
  1113.     /************************************************************************
  1114.      * Method:
  1115.      *     IRMARequest::GetURL
  1116.      * Purpose:
  1117.      *     Returns the fully qualified path associated with a file object.
  1118.      *     Note: On the server, this path does not include the file system
  1119.      *      mount point.
  1120.      *
  1121.      *     Note: The returned pointer's lifetime expires as soon as the
  1122.      *     caller returns from a function which was called from the RMA
  1123.      *     core (i.e. when you return control to the RMA core)
  1124.      */
  1125.     STDMETHOD(GetURL) (THIS_
  1126. REF(const char*) pURL) PURE;
  1127. };
  1128. /****************************************************************************
  1129.  * 
  1130.  *  Interface:
  1131.  * 
  1132.  * IRMAFileRename
  1133.  * 
  1134.  *  Purpose:
  1135.  * 
  1136.  *      Interface to allow renaming of files.  Query off of the File Object.
  1137.  * Not all filesystem plugins implement this feature.
  1138.  * 
  1139.  *  IID_IRMAFileRename:
  1140.  *  
  1141.  * {00000214-0901-11d1-8B06-00A024406D59}
  1142.  * 
  1143.  */
  1144. DEFINE_GUID(IID_IRMAFileRename, 0x00000214, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  1145. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  1146. #undef  INTERFACE
  1147. #define INTERFACE   IRMAFileRename
  1148. DECLARE_INTERFACE_(IRMAFileRename, IUnknown)
  1149. {
  1150.     /*
  1151.      * IUnknown methods
  1152.      */
  1153.     STDMETHOD(QueryInterface)   (THIS_
  1154.                                 REFIID riid,
  1155.                                 void** ppvObj) PURE;
  1156.     STDMETHOD_(ULONG,AddRef)  (THIS) PURE;
  1157.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  1158.     /*
  1159.      * IRMAFileRename methods
  1160.      */
  1161.     /************************************************************************
  1162.      * Method:
  1163.      *     IRMAFileRename::Rename
  1164.      * Purpose:
  1165.      *     Renames a file to a new name.
  1166.      */
  1167.     STDMETHOD(Rename) (THIS_
  1168. const char* pNewFileName) PURE;
  1169. };
  1170.     
  1171. /****************************************************************************
  1172.  * 
  1173.  *  Interface:
  1174.  * 
  1175.  * IRMADirHandler
  1176.  * 
  1177.  *  Purpose:
  1178.  * 
  1179.  * Object that exports directory handler API
  1180.  * 
  1181.  *  IID_IRMADirHandler:
  1182.  * 
  1183.  * {00000215-0901-11d1-8B06-00A024406D59}
  1184.  * 
  1185.  */
  1186. DEFINE_GUID(IID_IRMADirHandler, 0x00000215, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  1187. #undef  INTERFACE
  1188. #define INTERFACE   IRMADirHandler
  1189. DECLARE_INTERFACE_(IRMADirHandler, IUnknown)
  1190. {
  1191.     /*
  1192.      * IUnknown methods
  1193.      */
  1194.     STDMETHOD(QueryInterface) (THIS_
  1195. REFIID riid,
  1196. void** ppvObj) PURE;
  1197.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  1198.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  1199.     /*
  1200.      * IRMADirHandler methods
  1201.      */
  1202.     /************************************************************************
  1203.      * Method:
  1204.      *     IRMADirHandler::InitDirHandler
  1205.      * Purpose:
  1206.      *     Associates a directory handler with the directory handler
  1207.      *     response, it should notify of operation completness.
  1208.      */
  1209.     STDMETHOD(InitDirHandler) (THIS_
  1210. IRMADirHandlerResponse*    /*IN*/  pDirResponse) PURE;
  1211.     /************************************************************************
  1212.      * Method:
  1213.      *     IRMADirHandler::CloseDirHandler
  1214.      * Purpose:
  1215.      *     Closes the directory handler resource and releases all resources
  1216.      *     associated with the object.
  1217.      */
  1218.     STDMETHOD(CloseDirHandler) (THIS) PURE;
  1219.     /************************************************************************
  1220.      * Method:
  1221.      *     IRMADirHandler::MakeDir
  1222.      * Purpose:
  1223.      *     Create the directory
  1224.      */
  1225.     STDMETHOD(MakeDir) (THIS) PURE;
  1226.     /************************************************************************
  1227.      * Method:
  1228.      *     IRMADirHandler::ReadDir
  1229.      * Purpose:
  1230.      *     Get a dump of the directory
  1231.      */
  1232.     STDMETHOD(ReadDir) (THIS) PURE;
  1233. };
  1234. /****************************************************************************
  1235.  * 
  1236.  *  Interface:
  1237.  * 
  1238.  * IRMADirHandlerResponse
  1239.  * 
  1240.  *  Purpose:
  1241.  * 
  1242.  * Object that exports the directory handler response API
  1243.  * 
  1244.  *  IID_IRMADirHandlerResponse:
  1245.  * 
  1246.  * {00000216-0901-11d1-8B06-00A024406D59}
  1247.  * 
  1248.  */
  1249. DEFINE_GUID(IID_IRMADirHandlerResponse, 0x00000216, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  1250. #undef  INTERFACE
  1251. #define INTERFACE   IRMADirHandlerResponse
  1252. DECLARE_INTERFACE_(IRMADirHandlerResponse, IUnknown)
  1253. {
  1254.     /*
  1255.      * IUnknown methods
  1256.      */
  1257.     STDMETHOD(QueryInterface) (THIS_
  1258. REFIID riid,
  1259. void** ppvObj) PURE;
  1260.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  1261.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  1262.     /*
  1263.      * IRMADirHandlerResponse methods
  1264.      */
  1265.     /************************************************************************
  1266.      * Method:
  1267.      *     IRMADirHandlerResponse::InitDirHandlerDone
  1268.      * Purpose:
  1269.      *     Notification interface provided by users of the IRMADirHandler
  1270.      *     interface. This method is called by the IRMADirHandler when the
  1271.      *     initialization of the object is complete.
  1272.      */
  1273.     STDMETHOD(InitDirHandlerDone) (THIS_
  1274. PN_RESULT     status) PURE;
  1275.     /************************************************************************
  1276.      * Method:
  1277.      *     IRMADirHandlerResponse::CloseDirHandlerDone
  1278.      * Purpose:
  1279.      *     Notification interface provided by users of the IRMADirHandler
  1280.      *     interface. This method is called by the IRMADirHandler when the
  1281.      *     close of the directory is complete.
  1282.      */
  1283.     STDMETHOD(CloseDirHandlerDone) (THIS_
  1284. PN_RESULT     status) PURE;
  1285.     /************************************************************************
  1286.      * Method:
  1287.      *     IRMADirHandler::MakeDirDone
  1288.      * Purpose:
  1289.      *     Notification interface provided by users of the IRMADirHandler
  1290.      *     interface. This method is called by the IRMADirHandler when the
  1291.      *     attempt to create the directory is complete.
  1292.      */
  1293.     STDMETHOD(MakeDirDone) (THIS_ 
  1294. PN_RESULT     status) PURE;
  1295.     /************************************************************************
  1296.      * Method:
  1297.      *     IRMADirHandler::ReadDirDone
  1298.      * Purpose:
  1299.      *     Notification interface provided by users of the IRMADirHandler
  1300.      *     interface. This method is called by the IRMADirHandler when the
  1301.      *     read from the directory is complete and a buffer is available.
  1302.      */
  1303.     STDMETHOD(ReadDirDone) (THIS_ 
  1304. PN_RESULT     status,
  1305. IRMABuffer*     pBuffer) PURE;
  1306. };
  1307. /****************************************************************************
  1308.  * 
  1309.  *  Interface:
  1310.  * 
  1311.  * IRMAFileRemove
  1312.  * 
  1313.  *  Purpose:
  1314.  * 
  1315.  *      Interface to allow removing of files.  Query off of the File Object.
  1316.  * Not all filesystem plugins implement this feature.
  1317.  * 
  1318.  *  IID_IRMAFileRemove:
  1319.  *  
  1320.  * {0000021A-0901-11d1-8B06-00A024406D59}
  1321.  * 
  1322.  */
  1323. DEFINE_GUID(IID_IRMAFileRemove, 0x0000021A, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  1324. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  1325. #undef  INTERFACE
  1326. #define INTERFACE   IRMAFileRemove
  1327. DECLARE_INTERFACE_(IRMAFileRemove, IUnknown)
  1328. {
  1329.     /*
  1330.      * IUnknown methods
  1331.      */
  1332.     STDMETHOD(QueryInterface)   (THIS_
  1333.                                 REFIID riid,
  1334.                                 void** ppvObj) PURE;
  1335.     STDMETHOD_(ULONG,AddRef)  (THIS) PURE;
  1336.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  1337.     /*
  1338.      * IRMAFileRemove methods
  1339.      */
  1340.     /************************************************************************
  1341.      * Method:
  1342.      *     IRMAFileRemove::Remove
  1343.      * Purpose:
  1344.      *     Removes a file from the file system.
  1345.      */
  1346.     STDMETHOD(Remove) (THIS) PURE;
  1347. };
  1348. #endif  /* _RMAFILES_H_ */