hxfiles.h
上传用户:zhongxx05
上传日期:2007-06-06
资源大小:33641k
文件大小:70k
源码类别:

Symbian

开发平台:

C/C++

  1. /* ***** BEGIN LICENSE BLOCK ***** 
  2.  * Version: RCSL 1.0/RPSL 1.0 
  3.  *  
  4.  * Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved. 
  5.  *      
  6.  * The contents of this file, and the files included with this file, are 
  7.  * subject to the current version of the RealNetworks Public Source License 
  8.  * Version 1.0 (the "RPSL") available at 
  9.  * http://www.helixcommunity.org/content/rpsl unless you have licensed 
  10.  * the file under the RealNetworks Community Source License Version 1.0 
  11.  * (the "RCSL") available at http://www.helixcommunity.org/content/rcsl, 
  12.  * in which case the RCSL will apply. You may also obtain the license terms 
  13.  * directly from RealNetworks.  You may not use this file except in 
  14.  * compliance with the RPSL or, if you have a valid RCSL with RealNetworks 
  15.  * applicable to this file, the RCSL.  Please see the applicable RPSL or 
  16.  * RCSL for the rights, obligations and limitations governing use of the 
  17.  * contents of the file.  
  18.  *  
  19.  * This file is part of the Helix DNA Technology. RealNetworks is the 
  20.  * developer of the Original Code and owns the copyrights in the portions 
  21.  * it created. 
  22.  *  
  23.  * This file, and the files included with this file, is distributed and made 
  24.  * available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
  25.  * EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
  26.  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 
  27.  * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
  28.  * 
  29.  * Technology Compatibility Kit Test Suite(s) Location: 
  30.  *    http://www.helixcommunity.org/content/tck 
  31.  * 
  32.  * Contributor(s): 
  33.  *  
  34.  * ***** END LICENSE BLOCK ***** */ 
  35. #ifndef _HXFILES_H_
  36. #define _HXFILES_H_
  37. /*
  38.  * Forward declarations of some interfaces defined here-in.
  39.  */
  40. typedef _INTERFACE IHXFileObject IHXFileObject;
  41. typedef _INTERFACE IHXFileObjectExt IHXFileObjectExt;
  42. typedef _INTERFACE IHXFileResponse IHXFileResponse;
  43. typedef _INTERFACE IHXFileSystemObject IHXFileSystemObject;
  44. typedef _INTERFACE IHXFileStat IHXFileStat;
  45. typedef _INTERFACE IHXFileStatResponse IHXFileStatResponse;
  46. typedef _INTERFACE IHXFileSystemManager IHXFileSystemManager;
  47. typedef _INTERFACE IHXFileSystemManagerResponse IHXFileSystemManagerResponse;
  48. typedef _INTERFACE IHXFileExists IHXFileExists;
  49. typedef _INTERFACE IHXFileExistsResponse IHXFileExistsResponse;
  50. typedef _INTERFACE IHXFileMimeMapper IHXFileMimeMapper;
  51. typedef _INTERFACE IHXFileMimeMapperResponse IHXFileMimeMapperResponse;
  52. typedef _INTERFACE IHXBroadcastMapper IHXBroadcastMapper;
  53. typedef _INTERFACE IHXBroadcastMapperResponse IHXBroadcastMapperResponse;
  54. typedef _INTERFACE IHXGetFileFromSamePoolResponse IHXGetFileFromSamePoolResponse;
  55. typedef _INTERFACE IHXBuffer IHXBuffer;
  56. typedef _INTERFACE IHXPacket IHXPacket;
  57. typedef _INTERFACE IHXValues IHXValues;
  58. typedef _INTERFACE IHXMetaCreation IHXMetaCreation;
  59. typedef _INTERFACE IHXAuthenticator               IHXAuthenticator;
  60. typedef _INTERFACE IHXRequest                     IHXRequest;
  61. typedef _INTERFACE IHXFileRename                  IHXFileRename;
  62. typedef _INTERFACE IHXFileMove IHXFileMove;
  63. typedef _INTERFACE IHXDirHandler IHXDirHandler;
  64. typedef _INTERFACE IHXDirHandlerResponse IHXDirHandlerResponse;
  65. typedef _INTERFACE IHXFileRemove                  IHXFileRemove;
  66. // $Private:
  67. typedef _INTERFACE IHXFastFileFactory             IHXFastFileFactory;
  68. typedef _INTERFACE IHXHTTPPostObject IHXHTTPPostObject;
  69. typedef _INTERFACE IHXHTTPPostResponse IHXHTTPPostResponse;
  70. typedef _INTERFACE IHXHTTPRedirect IHXHTTPRedirect;
  71. typedef _INTERFACE IHXHTTPRedirectResponse IHXHTTPRedirectResponse;
  72. typedef _INTERFACE IHXRM2Converter2               IHXRM2Converter2;
  73. typedef _INTERFACE IHXRM2Converter2Response       IHXRM2Converter2Response;
  74. typedef _INTERFACE IHXPoolPathAdjustment IHXPoolPathAdjustment;
  75. typedef _INTERFACE IHXPostDataHandler IHXPostDataHandler;
  76. // $EndPrivate.
  77. /****************************************************************************
  78.  *  Defines:
  79.  * HX_FILE_XXXX
  80.  *  Purpose:
  81.  * Flags for opening file objects
  82.  */
  83. #define HX_FILE_READ 1
  84. #define HX_FILE_WRITE 2
  85. #define HX_FILE_BINARY 4
  86. #define HX_FILE_NOTRUNC 8
  87. #define HX_FILE_NOPAC 16
  88. /****************************************************************************
  89.  *  Defines:
  90.  * HX_FILEADVISE_XXXX
  91.  *  Purpose:
  92.  * Flags for file object Advise method
  93.  */
  94. #define HX_FILEADVISE_RANDOMACCESS 1
  95. #define HX_FILEADVISE_SYNCACCESS 2
  96. #define HX_FILEADVISE_ASYNCACCESS 3
  97. #define HX_FILEADVISE_RANDOMACCESSONLY  4
  98. #define HX_FILEADVISE_ANYACCESS         5
  99. /****************************************************************************
  100.  *  Defines:
  101.  * HX_FILERESPONSEADVISE_XXXX
  102.  *  Purpose:
  103.  * Flags for file response Advise method
  104.  */
  105. #define HX_FILERESPONSEADVISE_REQUIREFULLREAD 1
  106. #if defined(_UNIX) || defined(_WINDOWS)
  107. #include "hlxclib/sys/stat.h"
  108. /*
  109.  * This is a subset of standard stat()/fstat() values that both Unix and
  110.  * Windows support (or at least define).
  111.  *
  112.  * These flags are returned from IHXFileStatResponse::StatDone() in the
  113.  * ulMode argument.
  114.  */
  115. #define HX_S_IFMT   S_IFMT
  116. #define HX_S_IFDIR  S_IFDIR
  117. #define HX_S_IFCHR  S_IFCHR
  118. #define HX_S_IFIFO  S_IFIFO
  119. #define HX_S_IFREG  S_IFREG
  120. #else
  121. /* Macintosh */
  122. #define HX_S_IFMT   0170000
  123. #define HX_S_IFDIR  0040000
  124. #define HX_S_IFCHR  0020000
  125. #define HX_S_IFIFO  0010000
  126. #define HX_S_IFREG  0100000
  127. #endif
  128. /****************************************************************************
  129.  * 
  130.  *  Interface:
  131.  * 
  132.  * IHXFileObject
  133.  * 
  134.  *  Purpose:
  135.  * 
  136.  * Object that exports file control API
  137.  * 
  138.  *  IID_IHXFileObject:
  139.  * 
  140.  * {00000200-0901-11d1-8B06-00A024406D59}
  141.  * 
  142.  */
  143. DEFINE_GUID(IID_IHXFileObject, 0x00000200, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  144. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  145. #undef  INTERFACE
  146. #define INTERFACE   IHXFileObject
  147. DECLARE_INTERFACE_(IHXFileObject, IUnknown)
  148. {
  149.     /*
  150.      * IUnknown methods
  151.      */
  152.     STDMETHOD(QueryInterface) (THIS_
  153. REFIID riid,
  154. void** ppvObj) PURE;
  155.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  156.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  157.     /*
  158.      * IHXFileObject methods
  159.      */
  160.     /************************************************************************
  161.      * Method:
  162.      *     IHXFileObject::Init
  163.      * Purpose:
  164.      *     Associates a file object with the file response object it should
  165.      *     notify of operation completness. This method should also check
  166.      *     for validity of the object (for example by opening it if it is
  167.      *     a local file).
  168.      */
  169.     STDMETHOD(Init) (THIS_
  170. ULONG32     /*IN*/  ulFlags,
  171. IHXFileResponse*   /*IN*/  pFileResponse) PURE;
  172.     /************************************************************************
  173.      * Method:
  174.      *     IHXFileObject::GetFilename
  175.      * Purpose:
  176.      *     Returns the filename (without any path information) associated
  177.      *     with a file object.
  178.      *
  179.      *     Note: The returned pointer's lifetime expires as soon as the
  180.      *     caller returns from a function which was called from the RMA
  181.      *     core (i.e. when you return control to the RMA core)
  182.      *
  183.      */
  184.     STDMETHOD(GetFilename) (THIS_
  185. REF(const char*)    /*OUT*/  pFilename) PURE;
  186.     /************************************************************************
  187.      * Method:
  188.      *     IHXFileObject::Close
  189.      * Purpose:
  190.      *     Closes the file resource and releases all resources associated
  191.      *     with the object.
  192.      */
  193.     STDMETHOD(Close) (THIS) PURE;
  194.     /************************************************************************
  195.      * Method:
  196.      *     IHXFileObject::Read
  197.      * Purpose:
  198.      *     Reads a buffer of data of the specified length from the file
  199.      *     and asynchronously returns it to the caller via the 
  200.      *     IHXFileResponse interface passed in to Init.
  201.      */
  202.     STDMETHOD(Read) (THIS_
  203. ULONG32 ulCount) PURE;
  204.     /************************************************************************
  205.      * Method:
  206.      *     IHXFileObject::Write
  207.      * Purpose:
  208.      *     Writes a buffer of data to the file and asynchronously notifies
  209.      *     the caller via the IHXFileResponse interface passed in to Init,
  210.      *     of the completeness of the operation.
  211.      */
  212.     STDMETHOD(Write) (THIS_
  213. IHXBuffer* pBuffer) PURE;
  214.     /************************************************************************
  215.      * Method:
  216.      *     IHXFileObject::Seek
  217.      * Purpose:
  218.      *     Seeks to an offset in the file and asynchronously notifies
  219.      *     the caller via the IHXFileResponse interface passed in to Init,
  220.      *     of the completeness of the operation.
  221.      *     If the bRelative flag is TRUE, it is a relative seek; else
  222.      *     an absolute seek.
  223.      */
  224.     STDMETHOD(Seek) (THIS_
  225. ULONG32 ulOffset,
  226. BOOL bRelative) PURE;    
  227.     /************************************************************************
  228.      * Method:
  229.      *     IHXFileObject::Advise
  230.      * Purpose:
  231.      *      To pass information to the File Object advising it about usage
  232.      *     heuristics.
  233.      */
  234.     STDMETHOD(Advise) (THIS_
  235. ULONG32 ulInfo) PURE;
  236. };
  237. /****************************************************************************
  238.  *
  239.  *  Interface:
  240.  *
  241.  *  IHXFileObjectExt
  242.  *
  243.  *  Purpose:
  244.  *
  245.  *  Object that exports file control API
  246.  *
  247.  *  IID_IHXFileObjectExt:
  248.  *
  249.  *  {96DD5EB5-7EFD-4084-95CD-4D192A9036AF}
  250.  *
  251.  */
  252.  DEFINE_GUID(IID_IHXFileObjectExt, 0x96dd5eb5, 0x7efd, 0x4084, 0x95, 0xcd, 0x4d,
  253.                        0x19, 0x2a, 0x90, 0x36, 0xaf);
  254. #undef  INTERFACE
  255. #define INTERFACE   IHXFileObjectExt
  256. DECLARE_INTERFACE_(IHXFileObjectExt, IUnknown)
  257. {
  258.     /*
  259.      *  IUnknown methods
  260.      */
  261.     STDMETHOD(QueryInterface)   (THIS_
  262.                 REFIID riid,
  263.                 void** ppvObj) PURE;
  264.     STDMETHOD_(ULONG32,AddRef)  (THIS) PURE;
  265.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  266.     /************************************************************************
  267.      * Method:
  268.      *     IHXFileObjectExt::GetFullFilename
  269.      * Purpose:
  270.      *     Returns the filename, with path information, associated
  271.      *     with a file object.
  272.      *
  273.      *     Note: The returned pointer's lifetime expires as soon as the
  274.      *     caller returns from a function which was called from the RMA
  275.      *     core (i.e. when you return control to the RMA core)
  276.      *
  277.      */
  278.     STDMETHOD(GetFullFilename) (THIS_
  279.                                REF(IHXBuffer*)  /*OUT*/  pFullFilename) PURE;
  280. };
  281. /****************************************************************************
  282.  * 
  283.  *  Interface:
  284.  * 
  285.  * IHXFileResponse
  286.  * 
  287.  *  Purpose:
  288.  * 
  289.  * Object that exports file response API
  290.  * 
  291.  *  IID_IHXFileResponse:
  292.  * 
  293.  * {00000201-0901-11d1-8B06-00A024406D59}
  294.  * 
  295.  */
  296. DEFINE_GUID(IID_IHXFileResponse, 0x00000201, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  297. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  298. #undef  INTERFACE
  299. #define INTERFACE   IHXFileResponse
  300. DECLARE_INTERFACE_(IHXFileResponse, IUnknown)
  301. {
  302.     /*
  303.      * IUnknown methods
  304.      */
  305.     STDMETHOD(QueryInterface) (THIS_
  306. REFIID riid,
  307. void** ppvObj) PURE;
  308.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  309.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  310.     /*
  311.      * IHXFileResponse methods
  312.      */
  313.     /************************************************************************
  314.      * Method:
  315.      *     IHXFileResponse::InitDone
  316.      * Purpose:
  317.      *     Notification interface provided by users of the IHXFileObject
  318.      *     interface. This method is called by the IHXFileObject when the
  319.      *     initialization of the file is complete. If the file is not valid 
  320.      *     for the file system, the status HXR_FAILED should be 
  321.      *     returned.
  322.      */
  323.     STDMETHOD(InitDone) (THIS_
  324. HX_RESULT     status) PURE;
  325.     /************************************************************************
  326.      * Method:
  327.      *     IHXFileResponse::CloseDone
  328.      * Purpose:
  329.      *     Notification interface provided by users of the IHXFileObject
  330.      *     interface. This method is called by the IHXFileObject when the
  331.      *     close of the file is complete.
  332.      */
  333.     STDMETHOD(CloseDone) (THIS_
  334. HX_RESULT     status) PURE;
  335.     /************************************************************************
  336.      * Method:
  337.      *     IHXFileResponse::ReadDone
  338.      * Purpose:
  339.      *     Notification interface provided by users of the IHXFileObject
  340.      *     interface. This method is called by the IHXFileObject when the
  341.      *     last read from the file is complete and a buffer is available.
  342.      */
  343.     STDMETHOD(ReadDone) (THIS_ 
  344. HX_RESULT     status,
  345. IHXBuffer*     pBuffer) PURE;
  346.     /************************************************************************
  347.      * Method:
  348.      *     IHXFileResponse::WriteDone
  349.      * Purpose:
  350.      *     Notification interface provided by users of the IHXFileObject
  351.      *     interface. This method is called by the IHXFileObject when the
  352.      *     last write to the file is complete.
  353.      */
  354.     STDMETHOD(WriteDone) (THIS_ 
  355. HX_RESULT     status) PURE;
  356.     /************************************************************************
  357.      * Method:
  358.      *     IHXFileResponse::SeekDone
  359.      * Purpose:
  360.      *     Notification interface provided by users of the IHXFileObject
  361.      *     interface. This method is called by the IHXFileObject when the
  362.      *     last seek in the file is complete.
  363.      */
  364.     STDMETHOD(SeekDone) (THIS_ 
  365. HX_RESULT     status) PURE;
  366. };
  367. /****************************************************************************
  368.  * 
  369.  *  Interface:
  370.  * 
  371.  *      IHXAdvise
  372.  * 
  373.  *  Purpose:
  374.  * 
  375.  *      Allow IHXFileObject to query its IHXFileResponse interface
  376.  * 
  377.  *  IID_IHXAdvise:
  378.  * 
  379.  *      {43C3A3B8-8F76-4394-A4F8-07AA9091A0CA}
  380.  * 
  381.  */
  382. DEFINE_GUID(IID_IHXAdvise, 0x43c3a3b8, 0x8f76, 0x4394, 0xa4, 0xf8, 0x7, 
  383.                         0xaa, 0x90, 0x91, 0xa0, 0xca);
  384. #undef  INTERFACE
  385. #define INTERFACE   IHXAdvise
  386. DECLARE_INTERFACE_(IHXAdvise, IUnknown)
  387. {
  388.     /*
  389.      *  IUnknown methods
  390.      */
  391.     STDMETHOD(QueryInterface)           (THIS_
  392.                                         REFIID riid,
  393.                                         void** ppvObj) PURE;
  394.     STDMETHOD_(ULONG32,AddRef)          (THIS) PURE;
  395.     STDMETHOD_(ULONG32,Release)         (THIS) PURE;
  396.     /*
  397.      *  IHXAdvise methods
  398.      */
  399.     /************************************************************************
  400.      *  Method:
  401.      *      IHXAdvise::Advise
  402.      *  Purpose:
  403.      *      Allows IHXFileObject to query its IHXFileResponse about
  404.      *      usage heuristics. It should pass HX_FILERESPONSEADVISE_xxx
  405.      *      flags into this method.
  406.      */
  407.     STDMETHOD(Advise)   (THIS_ ULONG32 ulInfo) PURE;
  408. };
  409. /****************************************************************************
  410.  * 
  411.  *  Interface:
  412.  * 
  413.  * IHXFileSystemObject
  414.  * 
  415.  *  Purpose:
  416.  * 
  417.  * Object that allows a Controller to communicate with a specific
  418.  * File System plug-in session
  419.  * 
  420.  *  IID_IHXFileSystemObject:
  421.  * 
  422.  * {00000202-0901-11d1-8B06-00A024406D59}
  423.  * 
  424.  */
  425. DEFINE_GUID(IID_IHXFileSystemObject, 0x00000202, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  426. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  427. #undef  INTERFACE
  428. #define INTERFACE   IHXFileSystemObject
  429. DECLARE_INTERFACE_(IHXFileSystemObject, IUnknown)
  430. {
  431.     /*
  432.      * IUnknown methods
  433.      */
  434.     STDMETHOD(QueryInterface) (THIS_
  435. REFIID riid,
  436. void** ppvObj) PURE;
  437.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  438.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  439.     /*
  440.      * IHXFileSystemObject methods
  441.      */
  442.     /************************************************************************
  443.      * Method:
  444.      *     IHXFileSystemObject::GetFileSystemInfo
  445.      * Purpose:
  446.      *     Returns information vital to the instantiation of file system
  447.      *     plugin.
  448.      *
  449.      *     pShortName should be a short, human readable name in the form
  450.      *      of "company-fsname".  For example: pShortName = "pn-local".
  451.      */
  452.     STDMETHOD(GetFileSystemInfo)    (THIS_
  453.     REF(const char*) /*OUT*/ pShortName,
  454.     REF(const char*) /*OUT*/ pProtocol) PURE;
  455.     STDMETHOD(InitFileSystem) (THIS_
  456. IHXValues* pOptions) PURE;
  457.     STDMETHOD(CreateFile) (THIS_
  458. IUnknown**    /*OUT*/ ppFileObject) PURE;
  459.     /*
  460.      * The following method is deprecated and should return HXR_NOTIMPL
  461.      */
  462.     STDMETHOD(CreateDir) (THIS_
  463. IUnknown**   /*OUT*/ ppDirObject) PURE;
  464. };
  465. /****************************************************************************
  466.  * 
  467.  *  Interface:
  468.  * 
  469.  * IHXFileStat
  470.  * 
  471.  *  Purpose:
  472.  * 
  473.  *      Gets information about a specific File object
  474.  * 
  475.  *  IID_IHXFileStat:
  476.  *  
  477.  * {00000205-0901-11d1-8B06-00A024406D59}
  478.  * 
  479.  */
  480. DEFINE_GUID(IID_IHXFileStat, 0x00000205, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  481. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  482. #undef  INTERFACE
  483. #define INTERFACE   IHXFileStat
  484. DECLARE_INTERFACE_(IHXFileStat, IUnknown)
  485. {
  486.     /*
  487.      * IUnknown methods
  488.      */
  489.     STDMETHOD(QueryInterface)   (THIS_
  490.                                 REFIID riid,
  491.                                 void** ppvObj) PURE;
  492.     STDMETHOD_(ULONG32,AddRef)  (THIS) PURE;
  493.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  494.     /*
  495.      * IHXFileStat methods
  496.      */
  497.     STDMETHOD(Stat) (THIS_
  498. IHXFileStatResponse* pFileStatResponse
  499. ) PURE;
  500. };
  501. /****************************************************************************
  502.  * 
  503.  *  Interface:
  504.  * 
  505.  * IHXFileStatResponse
  506.  * 
  507.  *  Purpose:
  508.  * 
  509.  *      Returns information about a specific File object
  510.  * 
  511.  *  IID_IHXFileStatResponse:
  512.  *  
  513.  * {00000206-0901-11d1-8B06-00A024406D59}
  514.  * 
  515.  */
  516. DEFINE_GUID(IID_IHXFileStatResponse, 0x00000206, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  517. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  518. #undef  INTERFACE
  519. #define INTERFACE   IHXFileStatResponse
  520. DECLARE_INTERFACE_(IHXFileStatResponse, IUnknown)
  521. {
  522.     /*
  523.      * IUnknown methods
  524.      */
  525.     STDMETHOD(QueryInterface)   (THIS_
  526.                                 REFIID riid,
  527.                                 void** ppvObj) PURE;
  528.     STDMETHOD_(ULONG32,AddRef)  (THIS) PURE;
  529.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  530.     /*
  531.      * IHXFileStat methods
  532.      */
  533.     STDMETHOD(StatDone) (THIS_
  534.  HX_RESULT status,
  535.  UINT32 ulSize,
  536.  UINT32 ulCreationTime,
  537.  UINT32 ulAccessTime,
  538.  UINT32 ulModificationTime,
  539.  UINT32 ulMode) PURE;
  540. };
  541. /****************************************************************************
  542.  * 
  543.  *  Interface:
  544.  * 
  545.  * IHXFileSystemManager
  546.  * 
  547.  *  Purpose:
  548.  * 
  549.  *      Gives out File Objects based on URLs
  550.  * 
  551.  *  IID_IHXFileSystemManager:
  552.  *  
  553.  * {00000207-0901-11d1-8B06-00A024406D59}
  554.  * 
  555.  */
  556. DEFINE_GUID(IID_IHXFileSystemManager, 0x00000207, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  557. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  558. #undef  INTERFACE
  559. #define INTERFACE   IHXFileSystemManager
  560. #define CLSID_IHXFileSystemManager IID_IHXFileSystemManager
  561. DECLARE_INTERFACE_(IHXFileSystemManager, IUnknown)
  562. {
  563.     /*
  564.      * IUnknown methods
  565.      */
  566.     STDMETHOD(QueryInterface)   (THIS_
  567.                                 REFIID riid,
  568.                                 void** ppvObj) PURE;
  569.     STDMETHOD_(ULONG32,AddRef)  (THIS) PURE;
  570.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  571.     /*
  572.      * IHXFileSystemManager methods
  573.      */
  574.     STDMETHOD(Init) (THIS_
  575.     IHXFileSystemManagerResponse* /*IN*/  pFileManagerResponse
  576.     ) PURE;
  577.     /* GetFileObject attempts to locate an existing file via the DoesExist
  578.      * method in each file system's objects, and returns that object through
  579.      * FSManagerResponse->FileObjectReady
  580.      */
  581.     STDMETHOD(GetFileObject) (THIS_
  582.  IHXRequest* pRequest,
  583.  IHXAuthenticator* pAuthenticator) PURE;
  584.     /* GetNewFileObject is similar to GetFileObject except that no DoesExist
  585.      * checks are done.  The first file system that matches the mount point
  586.      * or protocol for the path in the request object creates the file
  587.      * which is then returned through FileObjectReady.  This is especially
  588.      * useful for those who wish to open a brand new file for writing.
  589.      */
  590.     STDMETHOD(GetNewFileObject) (THIS_
  591.  IHXRequest* pRequest,
  592.  IHXAuthenticator* pAuthenticator) PURE;
  593.     STDMETHOD(GetRelativeFileObject) (THIS_
  594.       IUnknown* pOriginalObject,
  595.       const char* pPath) PURE;
  596.     /*
  597.      * The following method is deprecated and should return HXR_NOTIMPL
  598.      */
  599.     STDMETHOD(GetDirObjectFromURL) (THIS_
  600.                                         const char* pURL) PURE;
  601. };
  602. /****************************************************************************
  603.  * 
  604.  *  Interface:
  605.  * 
  606.  * IHXFileSystemManagerResponse
  607.  * 
  608.  *  Purpose:
  609.  * 
  610.  *      Gives out File System objects based on URLs
  611.  * 
  612.  *  IID_IHXFileSystemManagerResponse:
  613.  *  
  614.  * {00000208-0901-11d1-8B06-00A024406D59}
  615.  * 
  616.  */
  617. DEFINE_GUID(IID_IHXFileSystemManagerResponse, 0x00000208, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  618. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  619. #undef  INTERFACE
  620. #define INTERFACE   IHXFileSystemManagerResponse
  621. DECLARE_INTERFACE_(IHXFileSystemManagerResponse, IUnknown)
  622. {
  623.     /*
  624.      * IUnknown methods
  625.      */
  626.     STDMETHOD(QueryInterface)   (THIS_
  627.                                 REFIID riid,
  628.                                 void** ppvObj) PURE;
  629.     STDMETHOD_(ULONG32,AddRef)  (THIS) PURE;
  630.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  631.     /*
  632.      * IHXFileSystemManagerResponse methods
  633.      */
  634.     /************************************************************************
  635.      * Method:
  636.      * IHXFileSystemManagerResponse::InitDone
  637.      * Purpose:
  638.      */
  639.     STDMETHOD(InitDone)     (THIS_
  640.     HX_RESULT     status) PURE;
  641.     STDMETHOD(FileObjectReady) (THIS_
  642. HX_RESULT status,
  643.                                 IUnknown* pObject) PURE;
  644.     /*
  645.      * The following method is deprecated and should return HXR_NOTIMPL
  646.      */
  647.     STDMETHOD(DirObjectReady) (THIS_
  648. HX_RESULT status,
  649.                                 IUnknown* pDirObject) PURE;
  650. };
  651. /****************************************************************************
  652.  * 
  653.  *  Interface:
  654.  * 
  655.  * IHXFileExists
  656.  * 
  657.  *  Purpose:
  658.  * 
  659.  * Checks for the existense of a file.  Must be implemented.
  660.  * 
  661.  *  IID_IHXFileExists:
  662.  * 
  663.  * {00000209-0901-11d1-8B06-00A024406D59}
  664.  * 
  665.  */
  666. DEFINE_GUID(IID_IHXFileExists, 0x00000209, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  667. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  668. #undef  INTERFACE
  669. #define INTERFACE   IHXFileExists
  670. DECLARE_INTERFACE_(IHXFileExists, IUnknown)
  671. {
  672.     /*
  673.      * IUnknown methods
  674.      */
  675.     STDMETHOD(QueryInterface) (THIS_
  676. REFIID riid,
  677. void** ppvObj) PURE;
  678.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  679.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  680.     /*
  681.      * IHXFileExists methods
  682.      */
  683.     /************************************************************************
  684.      * Method:
  685.      *     IHXFileExists::DoesExist
  686.      * Purpose:
  687.      */
  688.     STDMETHOD(DoesExist) (THIS_
  689. const char* /*IN*/  pPath, 
  690. IHXFileExistsResponse* /*IN*/  pFileResponse) PURE;
  691. };
  692. /****************************************************************************
  693.  * 
  694.  *  Interface:
  695.  * 
  696.  * IHXFileExistsResponse
  697.  * 
  698.  *  Purpose:
  699.  * 
  700.  * Response interface for IHXFileExists.  Must be implemented.
  701.  * 
  702.  *  IID_IHXFileExistsResponse:
  703.  * 
  704.  * {0000020A-0901-11d1-8B06-00A024406D59}
  705.  * 
  706.  */
  707. DEFINE_GUID(IID_IHXFileExistsResponse, 0x0000020a, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  708. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  709. #undef  INTERFACE
  710. #define INTERFACE   IHXFileExists
  711. DECLARE_INTERFACE_(IHXFileExistsResponse, IUnknown)
  712. {
  713.     /*
  714.      * IUnknown methods
  715.      */
  716.     STDMETHOD(QueryInterface) (THIS_
  717. REFIID riid,
  718. void** ppvObj) PURE;
  719.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  720.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  721.     /*
  722.      * IHXFileExistsResponse methods
  723.      */
  724.     STDMETHOD(DoesExistDone) (THIS_
  725.       BOOL bExist) PURE;
  726. };
  727. /****************************************************************************
  728.  * 
  729.  *  Interface:
  730.  * 
  731.  * IHXFileMimeMapper
  732.  * 
  733.  *  Purpose:
  734.  * 
  735.  * Allows you to specify a mime type for a specific file.
  736.  * Optional interface.
  737.  * 
  738.  *  IID_IHXFileMimeMapper:
  739.  * 
  740.  * {0000020B-0901-11d1-8B06-00A024406D59}
  741.  * 
  742.  */
  743. DEFINE_GUID(IID_IHXFileMimeMapper, 0x0000020b, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  744. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  745. #undef  INTERFACE
  746. #define INTERFACE   IHXFileMimeMapper
  747. DECLARE_INTERFACE_(IHXFileMimeMapper, IUnknown)
  748. {
  749.     /*
  750.      * IUnknown methods
  751.      */
  752.     STDMETHOD(QueryInterface) (THIS_
  753. REFIID riid,
  754. void** ppvObj) PURE;
  755.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  756.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  757.     /*
  758.      * IHXFileMimeMapper methods
  759.      */
  760.     /************************************************************************
  761.      * Method:
  762.      *     IHXFileMimeMapper::FindMimeType
  763.      * Purpose:
  764.      */
  765.     STDMETHOD(FindMimeType) (THIS_
  766.     const char*     /*IN*/  pURL, 
  767.     IHXFileMimeMapperResponse* /*IN*/  pMimeMapperResponse
  768.     ) PURE;
  769. };
  770. /****************************************************************************
  771.  * 
  772.  *  Interface:
  773.  * 
  774.  * IHXFileMimeMapperResponse
  775.  * 
  776.  *  Purpose:
  777.  * 
  778.  * Response interface for IHXFileMimeMapper.
  779.  * Optional interface.
  780.  * 
  781.  *  IID_IHXFileMimeMapperResponse:
  782.  * 
  783.  * {0000020C-0901-11d1-8B06-00A024406D59}
  784.  * 
  785.  */
  786. DEFINE_GUID(IID_IHXFileMimeMapperResponse, 0x0000020c, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  787. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  788. #undef  INTERFACE
  789. #define INTERFACE   IHXFileMimeMapperResponse
  790. DECLARE_INTERFACE_(IHXFileMimeMapperResponse, IUnknown)
  791. {
  792.     /*
  793.      * IUnknown methods
  794.      */
  795.     STDMETHOD(QueryInterface) (THIS_
  796. REFIID riid,
  797. void** ppvObj) PURE;
  798.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  799.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  800.     /*
  801.      * IHXFileMimeMapperResponse methods
  802.      */
  803.     /************************************************************************
  804.      * Method:
  805.      *     IHXFileMimeMapperResponse::MimeTypeFound
  806.      * Purpose:
  807.      *     Notification interface provided by users of the IHXFileMimeMapper
  808.      *     interface. This method is called by the IHXFileObject when the
  809.      *     initialization of the file is complete, and the Mime type is
  810.      *     available for the request file. If the file is not valid for the
  811.      *     file system, the status HXR_FAILED should be returned,
  812.      *     with a mime type of NULL. If the file is valid but the mime type
  813.      *     is unknown, then the status HXR_OK should be returned with
  814.      *     a mime type of NULL.
  815.      *     
  816.      */
  817.     STDMETHOD(MimeTypeFound) (THIS_
  818.       HX_RESULT status,
  819.       const char* pMimeType) PURE;
  820. };
  821. /****************************************************************************
  822.  * 
  823.  *  Interface:
  824.  * 
  825.  * IHXBroadcastMapper
  826.  * 
  827.  *  Purpose:
  828.  * 
  829.  * Associates a file with a broadcast format plugin.
  830.  * Implementation only required by broadcast plugin file systems.
  831.  * 
  832.  *  IID_IHXBroadcastMapper:
  833.  * 
  834.  * {0000020D-0901-11d1-8B06-00A024406D59}
  835.  * 
  836.  */
  837. DEFINE_GUID(IID_IHXBroadcastMapper, 0x0000020d, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  838. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  839. #undef  INTERFACE
  840. #define INTERFACE   IHXBroadcastMapper
  841. DECLARE_INTERFACE_(IHXBroadcastMapper, IUnknown)
  842. {
  843.     /*
  844.      * IUnknown methods
  845.      */
  846.     STDMETHOD(QueryInterface) (THIS_
  847. REFIID riid,
  848. void** ppvObj) PURE;
  849.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  850.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  851.     /*
  852.      * IHXBroadcastMapper methods
  853.      */
  854.     /************************************************************************
  855.      * Method:
  856.      *     IHXBroadcastMapper::FindBroadcastType
  857.      * Purpose:
  858.      */
  859.     STDMETHOD(FindBroadcastType) (THIS_
  860. const char*      /*IN*/  pURL, 
  861. IHXBroadcastMapperResponse* /*IN*/  pBroadcastMapperResponse) PURE;
  862. };
  863. /****************************************************************************
  864.  * 
  865.  *  Interface:
  866.  * 
  867.  * IHXBroadcastMapperResponse
  868.  * 
  869.  *  Purpose:
  870.  * 
  871.  * Response interface for IHXBroadcastMapper.
  872.  * Implementation only required by broadcast plugin file systems.
  873.  * 
  874.  *  IID_IHXBroadcastMapperResponse:
  875.  * 
  876.  * {0000020E-0901-11d1-8B06-00A024406D59}
  877.  * 
  878.  */
  879. DEFINE_GUID(IID_IHXBroadcastMapperResponse, 0x0000020e, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  880. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  881. #undef  INTERFACE
  882. #define INTERFACE   IHXBroadcastMapperResponse
  883. DECLARE_INTERFACE_(IHXBroadcastMapperResponse, IUnknown)
  884. {
  885.     /*
  886.      * IUnknown methods
  887.      */
  888.     STDMETHOD(QueryInterface) (THIS_
  889. REFIID riid,
  890. void** ppvObj) PURE;
  891.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  892.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  893.     /*
  894.      * IHXBroadcastMapperResponse methods
  895.      */
  896.     /************************************************************************
  897.      * Method:
  898.      *     IHXBroadcastMapperResponse::BroadcastTypeFound
  899.      * Purpose:
  900.      *     Notification interface provided by users of the IHXBroadcastMapper
  901.      *     interface. This method is called by the File Object when the
  902.      *     initialization of the file is complete, and the broadcast type is
  903.      *     available for the request file. If the file is not valid for the
  904.      *     file system, the status HXR_FAILED should be returned,
  905.      *     with the broadcast type set to NULL.
  906.      *     
  907.      */
  908.     STDMETHOD(BroadcastTypeFound) (THIS_
  909.   HX_RESULT status,
  910.   const char* pBroadcastType) PURE;
  911. };
  912. /****************************************************************************
  913.  * 
  914.  *  Interface:
  915.  * 
  916.  * IHXGetFileFromSamePool
  917.  * 
  918.  *  Purpose:
  919.  * 
  920.  *      Gives out File Objects based on filenames and relative "paths"
  921.  * 
  922.  *  IID_IHXGetFileFromSamePool:
  923.  *  
  924.  * {0000020f-0901-11d1-8B06-00A024406D59}
  925.  * 
  926.  */
  927. DEFINE_GUID(IID_IHXGetFileFromSamePool, 0x0000020f, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  928. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  929. #undef  INTERFACE
  930. #define INTERFACE   IHXGetFileFromSamePool
  931. #define CLSID_IHXGetFileFromSamePool IID_IHXGetFileFromSamePool
  932. DECLARE_INTERFACE_(IHXGetFileFromSamePool, IUnknown)
  933. {
  934.     /*
  935.      * IUnknown methods
  936.      */
  937.     STDMETHOD(QueryInterface)   (THIS_
  938.                                 REFIID riid,
  939.                                 void** ppvObj) PURE;
  940.     STDMETHOD_(ULONG32,AddRef)  (THIS) PURE;
  941.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  942.     /*
  943.      * IHXGetFileFromSamePool method
  944.      */
  945.     /************************************************************************
  946.      * Method:
  947.      *     IHXGetFileFromSamePool::GetFileObjectFromPool
  948.      * Purpose:
  949.      *      To get another FileObject from the same pool. 
  950.      */
  951.     STDMETHOD(GetFileObjectFromPool) (THIS_
  952.  IHXGetFileFromSamePoolResponse*) PURE;
  953. };
  954. /****************************************************************************
  955.  * 
  956.  *  Interface:
  957.  * 
  958.  * IHXGetFileFromSamePoolResponse
  959.  * 
  960.  *  Purpose:
  961.  * 
  962.  *      Gives out File Objects based on filenames and relative "paths"
  963.  * 
  964.  *  IID_IHXGetFileFromSamePoolResponse:
  965.  *  
  966.  * {00000210-0901-11d1-8B06-00A024406D59}
  967.  * 
  968.  */
  969. DEFINE_GUID(IID_IHXGetFileFromSamePoolResponse, 0x00000210, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  970. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  971. #undef  INTERFACE
  972. #define INTERFACE   IHXGetFileFromSamePoolResponse
  973. #define CLSID_IHXGetFileFromSamePoolResponse IID_IHXGetFileFromSamePoolResponse
  974. DECLARE_INTERFACE_(IHXGetFileFromSamePoolResponse, IUnknown)
  975. {
  976.     /*
  977.      * IUnknown methods
  978.      */
  979.     STDMETHOD(QueryInterface)   (THIS_
  980.                                 REFIID riid,
  981.                                 void** ppvObj) PURE;
  982.     STDMETHOD_(ULONG32,AddRef)  (THIS) PURE;
  983.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  984.     /*
  985.      * IHXGetFileFromSamePoolResponse method
  986.      */
  987.     /************************************************************************
  988.      * Method:
  989.      *     IHXGetFileFromSamePoolResponse::FileObjectReady
  990.      * Purpose:
  991.      *      To return another FileObject from the same pool. 
  992.      */
  993.     STDMETHOD(FileObjectReady) (THIS_
  994. HX_RESULT status,
  995. IUnknown* ppUnknown) PURE;
  996. };
  997. /****************************************************************************
  998.  * 
  999.  *  Interface:
  1000.  * 
  1001.  * IHXFileAuthenticator
  1002.  * 
  1003.  *  Purpose:
  1004.  * 
  1005.  *      Set and Get a file object's authenticator object.
  1006.  * 
  1007.  *  IID_IHXFileAuthenticator:
  1008.  *  
  1009.  * {00000211-0901-11d1-8B06-00A024406D59}
  1010.  * 
  1011.  */
  1012. DEFINE_GUID(IID_IHXFileAuthenticator, 0x00000211, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  1013. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  1014. #undef  INTERFACE
  1015. #define INTERFACE   IHXFileAuthenticator
  1016. #define CLSID_IHXFileAuthenticator IID_IHXFileAuthenticator
  1017. DECLARE_INTERFACE_(IHXFileAuthenticator, IUnknown)
  1018. {
  1019.     /*
  1020.      * IUnknown methods
  1021.      */
  1022.     STDMETHOD(QueryInterface)   (THIS_
  1023.                                 REFIID riid,
  1024.                                 void** ppvObj) PURE;
  1025.     STDMETHOD_(ULONG32,AddRef)  (THIS) PURE;
  1026.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  1027.     /*
  1028.      * IHXFileAuthenticator methods
  1029.      */
  1030.     STDMETHOD(SetAuthenticator) (THIS_
  1031.  IHXAuthenticator* pAuthenticator) PURE;
  1032.     
  1033.     STDMETHOD(GetAuthenticator) (THIS_
  1034.  REF(IHXAuthenticator*) pAuthenticator) PURE;
  1035. };
  1036. /****************************************************************************
  1037.  * 
  1038.  *  Interface:
  1039.  * 
  1040.  * IHXRequestHandler
  1041.  * 
  1042.  *  Purpose:
  1043.  * 
  1044.  *      Object to manage IHXRequest objects
  1045.  * 
  1046.  *  IID_IHXRequestHandler:
  1047.  *  
  1048.  * {00000212-0901-11d1-8B06-00A024406D59}
  1049.  * 
  1050.  */
  1051. DEFINE_GUID(IID_IHXRequestHandler, 0x00000212, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  1052. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  1053. #undef  INTERFACE
  1054. #define INTERFACE   IHXRequestHandler
  1055. #define CLSID_IHXRequestHandler IID_IHXRequestHandler
  1056. DECLARE_INTERFACE_(IHXRequestHandler, IUnknown)
  1057. {
  1058.     /*
  1059.      * IUnknown methods
  1060.      */
  1061.     STDMETHOD(QueryInterface)   (THIS_
  1062.                                 REFIID riid,
  1063.                                 void** ppvObj) PURE;
  1064.     STDMETHOD_(ULONG32,AddRef)  (THIS) PURE;
  1065.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  1066.     /************************************************************************
  1067.      * Method:
  1068.      *     IHXRequestHandler::SetRequest
  1069.      * Purpose:
  1070.      *     Associates an IHXRequest with an object
  1071.      */
  1072.     STDMETHOD(SetRequest)   (THIS_
  1073.     IHXRequest*        /*IN*/  pRequest) PURE;
  1074.     /************************************************************************
  1075.      * Method:
  1076.      *     IHXRequestHandler::GetRequest
  1077.      * Purpose:
  1078.      *     Gets the IHXRequest object associated with an object
  1079.      */
  1080.     STDMETHOD(GetRequest)   (THIS_
  1081.     REF(IHXRequest*)        /*OUT*/  pRequest) PURE;
  1082. };
  1083. /****************************************************************************
  1084.  * 
  1085.  *  Interface:
  1086.  * 
  1087.  * IHXRequestContext
  1088.  * 
  1089.  *  Purpose:
  1090.  * 
  1091.  *      Object to manage the context of the Request
  1092.  * 
  1093.  *  IID_IHXRequestContext:
  1094.  *  
  1095.  * {00000217-0901-11d1-8B06-00A024406D59}
  1096.  * 
  1097.  */
  1098. DEFINE_GUID(IID_IHXRequestContext, 0x00000217, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  1099. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  1100. #undef  INTERFACE
  1101. #define INTERFACE   IHXRequestContext
  1102. #define CLSID_IHXRequestContext IID_IHXRequestContext
  1103. DECLARE_INTERFACE_(IHXRequestContext, IUnknown)
  1104. {
  1105.     /*
  1106.      * IUnknown methods
  1107.      */
  1108.     STDMETHOD(QueryInterface)   (THIS_
  1109.                                 REFIID riid,
  1110.                                 void** ppvObj) PURE;
  1111.     STDMETHOD_(ULONG32,AddRef)  (THIS) PURE;
  1112.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  1113.     /*
  1114.      * IHXRequestContext methods
  1115.      */
  1116.     /************************************************************************
  1117.      * Method:
  1118.      *     IHXRequestContext::SetUserContext
  1119.      * Purpose:
  1120.      *     Sets the Authenticated users Context.
  1121.      */
  1122.     STDMETHOD(SetUserContext)
  1123.     (
  1124. THIS_
  1125. IUnknown* pIUnknownNewContext
  1126.     ) PURE;
  1127.     /************************************************************************
  1128.      * Method:
  1129.      *     IHXRequestContext::GetUserContext
  1130.      * Purpose:
  1131.      *     Gets the Authenticated users Context.
  1132.      */
  1133.     STDMETHOD(GetUserContext)
  1134.     (
  1135. THIS_
  1136. REF(IUnknown*) pIUnknownCurrentContext
  1137.     ) PURE;
  1138.     /************************************************************************
  1139.      * Method:
  1140.      *     IHXRequestContext::SetRequester
  1141.      * Purpose:
  1142.      *     Sets the Object that made the request.
  1143.      */
  1144.     STDMETHOD(SetRequester)
  1145.     (
  1146. THIS_
  1147. IUnknown* pIUnknownNewRequester
  1148.     ) PURE;
  1149.     /************************************************************************
  1150.      * Method:
  1151.      *     IHXRequestContext::GetRequester
  1152.      * Purpose:
  1153.      *     Gets the Object that made the request.
  1154.      */
  1155.     STDMETHOD(GetRequester)
  1156.     (
  1157. THIS_
  1158. REF(IUnknown*) pIUnknownCurrentRequester
  1159.     ) PURE;
  1160. };
  1161. /****************************************************************************
  1162.  * 
  1163.  *  Interface:
  1164.  * 
  1165.  * IHXRequest
  1166.  * 
  1167.  *  Purpose:
  1168.  * 
  1169.  *      Object to manage the RFC822 headers sent by the client
  1170.  * 
  1171.  *  IID_IHXRequest:
  1172.  *  
  1173.  * {00000213-0901-11d1-8B06-00A024406D59}
  1174.  * 
  1175.  */
  1176. DEFINE_GUID(IID_IHXRequest, 0x00000213, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  1177. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  1178. #undef  INTERFACE
  1179. #define INTERFACE   IHXRequest
  1180. #define CLSID_IHXRequest IID_IHXRequest
  1181. DECLARE_INTERFACE_(IHXRequest, IUnknown)
  1182. {
  1183.     /*
  1184.      * IUnknown methods
  1185.      */
  1186.     STDMETHOD(QueryInterface)   (THIS_
  1187.                                 REFIID riid,
  1188.                                 void** ppvObj) PURE;
  1189.     STDMETHOD_(ULONG32,AddRef)  (THIS) PURE;
  1190.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  1191.     /*
  1192.      * IHXRequest methods
  1193.      */
  1194.     /************************************************************************
  1195.      * Method:
  1196.      *     IHXRequest::SetRequestHeaders
  1197.      * Purpose:
  1198.      *     Sets the headers that will be sent in the RFC822 header section
  1199.      *      of the request message
  1200.      */
  1201.     STDMETHOD(SetRequestHeaders) (THIS_
  1202. IHXValues* pRequestHeaders) PURE;
  1203.     
  1204.     /************************************************************************
  1205.      * Method:
  1206.      *     IHXRequest::GetRequestHeaders
  1207.      * Purpose:
  1208.      *     Gets the headers that were sent in the RFC822 header section
  1209.      *     of the request message
  1210.      */
  1211.     STDMETHOD(GetRequestHeaders) (THIS_
  1212. REF(IHXValues*) pRequestHeaders) PURE;
  1213.     /************************************************************************
  1214.      * Method:
  1215.      *     IHXRequest::SetResponseHeaders
  1216.      * Purpose:
  1217.      *     Sets the headers that will be returned in the RFC822 header
  1218.      *     section of the response message
  1219.      */
  1220.     STDMETHOD(SetResponseHeaders) (THIS_
  1221. IHXValues* pResponseHeaders) PURE;
  1222.     
  1223.     /************************************************************************
  1224.      * Method:
  1225.      *     IHXRequest::GetResponseHeaders
  1226.      * Purpose:
  1227.      *     Gets the headers that were returned in the RFC822 header section
  1228.      *     of the response message
  1229.      */
  1230.     STDMETHOD(GetResponseHeaders) (THIS_
  1231. REF(IHXValues*) pResponseHeaders) PURE;
  1232.     /************************************************************************
  1233.      * Method:
  1234.      *     IHXRequest::SetURL
  1235.      * Purpose:
  1236.      *     Sets the fully qualified path associated with a file object.
  1237.      *     Note: On the server, this path does not include the file system
  1238.      *      mount point.
  1239.      */
  1240.     STDMETHOD(SetURL) (THIS_
  1241. const char* pURL) PURE;
  1242.     /************************************************************************
  1243.      * Method:
  1244.      *     IHXRequest::GetURL
  1245.      * Purpose:
  1246.      *     Returns the fully qualified path associated with a file object.
  1247.      *     Note: On the server, this path does not include the file system
  1248.      *      mount point.
  1249.      *
  1250.      *     Note: The returned pointer's lifetime expires as soon as the
  1251.      *     caller returns from a function which was called from the RMA
  1252.      *     core (i.e. when you return control to the RMA core)
  1253.      */
  1254.     STDMETHOD(GetURL) (THIS_
  1255. REF(const char*) pURL) PURE;
  1256. };
  1257. /****************************************************************************
  1258.  * 
  1259.  *  Interface:
  1260.  * 
  1261.  * IHXFileRename
  1262.  * 
  1263.  *  Purpose:
  1264.  * 
  1265.  *      Interface to allow renaming of files.  Query off of the File Object.
  1266.  * Not all filesystem plugins implement this feature.
  1267.  * 
  1268.  *  IID_IHXFileRename:
  1269.  *  
  1270.  * {00000214-0901-11d1-8B06-00A024406D59}
  1271.  * 
  1272.  */
  1273. DEFINE_GUID(IID_IHXFileRename, 0x00000214, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  1274. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  1275. #undef  INTERFACE
  1276. #define INTERFACE   IHXFileRename
  1277. DECLARE_INTERFACE_(IHXFileRename, IUnknown)
  1278. {
  1279.     /*
  1280.      * IUnknown methods
  1281.      */
  1282.     STDMETHOD(QueryInterface)   (THIS_
  1283.                                 REFIID riid,
  1284.                                 void** ppvObj) PURE;
  1285.     STDMETHOD_(ULONG32,AddRef)  (THIS) PURE;
  1286.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  1287.     /*
  1288.      * IHXFileRename methods
  1289.      */
  1290.     /************************************************************************
  1291.      * Method:
  1292.      *     IHXFileRename::Rename
  1293.      * Purpose:
  1294.      *     Renames a file to a new name.
  1295.      */
  1296.     STDMETHOD(Rename) (THIS_
  1297. const char* pNewFileName) PURE;
  1298. };
  1299. /****************************************************************************
  1300.  * 
  1301.  *  Interface:
  1302.  * 
  1303.  * IHXFileMove
  1304.  * 
  1305.  *  Purpose:
  1306.  * 
  1307.  *      Interface to allow removing of files.  Query off of the File Object.
  1308.  * Not all filesystem plugins implement this feature.
  1309.  * 
  1310.  *  IID_IHXFileMove:
  1311.  *  
  1312.  * {23E72FB0-DE0E-11d5-AA9A-00010251B340}
  1313.  * 
  1314.  */
  1315. DEFINE_GUID(IID_IHXFileMove, 0x23e72fb0, 0xde0e, 0x11d5, 0xaa, 0x9a, 0x0, 
  1316. 0x1, 0x2, 0x51, 0xb3, 0x40);
  1317. #undef  INTERFACE
  1318. #define INTERFACE   IHXFileMove
  1319. DECLARE_INTERFACE_(IHXFileMove, IUnknown)
  1320. {
  1321.     /*
  1322.      * IUnknown methods
  1323.      */
  1324.     STDMETHOD(QueryInterface)   (THIS_
  1325.                                 REFIID riid,
  1326.                                 void** ppvObj) PURE;
  1327.     STDMETHOD_(ULONG32,AddRef)  (THIS) PURE;
  1328.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  1329.     /*
  1330.      * IHXFileMove methods
  1331.      */
  1332.     /************************************************************************
  1333.      * Method:
  1334.      *     IHXFileMove::Move
  1335.      * Purpose:
  1336.      *     Moves a file to a different location in the file system
  1337.      */
  1338.     STDMETHOD(Move) (THIS_
  1339. const char* pNewFilePathName) PURE;
  1340. };
  1341.     
  1342. /****************************************************************************
  1343.  * 
  1344.  *  Interface:
  1345.  * 
  1346.  * IHXDirHandler
  1347.  * 
  1348.  *  Purpose:
  1349.  * 
  1350.  * Object that exports directory handler API
  1351.  * 
  1352.  *  IID_IHXDirHandler:
  1353.  * 
  1354.  * {00000215-0901-11d1-8B06-00A024406D59}
  1355.  * 
  1356.  */
  1357. DEFINE_GUID(IID_IHXDirHandler, 0x00000215, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  1358. #undef  INTERFACE
  1359. #define INTERFACE   IHXDirHandler
  1360. DECLARE_INTERFACE_(IHXDirHandler, IUnknown)
  1361. {
  1362.     /*
  1363.      * IUnknown methods
  1364.      */
  1365.     STDMETHOD(QueryInterface) (THIS_
  1366. REFIID riid,
  1367. void** ppvObj) PURE;
  1368.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  1369.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  1370.     /*
  1371.      * IHXDirHandler methods
  1372.      */
  1373.     /************************************************************************
  1374.      * Method:
  1375.      *     IHXDirHandler::InitDirHandler
  1376.      * Purpose:
  1377.      *     Associates a directory handler with the directory handler
  1378.      *     response, it should notify of operation completness.
  1379.      */
  1380.     STDMETHOD(InitDirHandler) (THIS_
  1381. IHXDirHandlerResponse*    /*IN*/  pDirResponse) PURE;
  1382.     /************************************************************************
  1383.      * Method:
  1384.      *     IHXDirHandler::CloseDirHandler
  1385.      * Purpose:
  1386.      *     Closes the directory handler resource and releases all resources
  1387.      *     associated with the object.
  1388.      */
  1389.     STDMETHOD(CloseDirHandler) (THIS) PURE;
  1390.     /************************************************************************
  1391.      * Method:
  1392.      *     IHXDirHandler::MakeDir
  1393.      * Purpose:
  1394.      *     Create the directory
  1395.      */
  1396.     STDMETHOD(MakeDir) (THIS) PURE;
  1397.     /************************************************************************
  1398.      * Method:
  1399.      *     IHXDirHandler::ReadDir
  1400.      * Purpose:
  1401.      *     Get a dump of the directory
  1402.      */
  1403.     STDMETHOD(ReadDir) (THIS) PURE;
  1404. };
  1405. /****************************************************************************
  1406.  * 
  1407.  *  Interface:
  1408.  * 
  1409.  * IHXDirHandlerResponse
  1410.  * 
  1411.  *  Purpose:
  1412.  * 
  1413.  * Object that exports the directory handler response API
  1414.  * 
  1415.  *  IID_IHXDirHandlerResponse:
  1416.  * 
  1417.  * {00000216-0901-11d1-8B06-00A024406D59}
  1418.  * 
  1419.  */
  1420. DEFINE_GUID(IID_IHXDirHandlerResponse, 0x00000216, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  1421. #undef  INTERFACE
  1422. #define INTERFACE   IHXDirHandlerResponse
  1423. DECLARE_INTERFACE_(IHXDirHandlerResponse, IUnknown)
  1424. {
  1425.     /*
  1426.      * IUnknown methods
  1427.      */
  1428.     STDMETHOD(QueryInterface) (THIS_
  1429. REFIID riid,
  1430. void** ppvObj) PURE;
  1431.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  1432.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  1433.     /*
  1434.      * IHXDirHandlerResponse methods
  1435.      */
  1436.     /************************************************************************
  1437.      * Method:
  1438.      *     IHXDirHandlerResponse::InitDirHandlerDone
  1439.      * Purpose:
  1440.      *     Notification interface provided by users of the IHXDirHandler
  1441.      *     interface. This method is called by the IHXDirHandler when the
  1442.      *     initialization of the object is complete.
  1443.      */
  1444.     STDMETHOD(InitDirHandlerDone) (THIS_
  1445. HX_RESULT     status) PURE;
  1446.     /************************************************************************
  1447.      * Method:
  1448.      *     IHXDirHandlerResponse::CloseDirHandlerDone
  1449.      * Purpose:
  1450.      *     Notification interface provided by users of the IHXDirHandler
  1451.      *     interface. This method is called by the IHXDirHandler when the
  1452.      *     close of the directory is complete.
  1453.      */
  1454.     STDMETHOD(CloseDirHandlerDone) (THIS_
  1455. HX_RESULT     status) PURE;
  1456.     /************************************************************************
  1457.      * Method:
  1458.      *     IHXDirHandler::MakeDirDone
  1459.      * Purpose:
  1460.      *     Notification interface provided by users of the IHXDirHandler
  1461.      *     interface. This method is called by the IHXDirHandler when the
  1462.      *     attempt to create the directory is complete.
  1463.      */
  1464.     STDMETHOD(MakeDirDone) (THIS_ 
  1465. HX_RESULT     status) PURE;
  1466.     /************************************************************************
  1467.      * Method:
  1468.      *     IHXDirHandler::ReadDirDone
  1469.      * Purpose:
  1470.      *     Notification interface provided by users of the IHXDirHandler
  1471.      *     interface. This method is called by the IHXDirHandler when the
  1472.      *     read from the directory is complete and a buffer is available.
  1473.      */
  1474.     STDMETHOD(ReadDirDone) (THIS_ 
  1475. HX_RESULT     status,
  1476. IHXBuffer*     pBuffer) PURE;
  1477. };
  1478. // $Private:
  1479. /****************************************************************************
  1480.  * 
  1481.  *  Interface:
  1482.  * 
  1483.  * IHXGetRecursionLevel
  1484.  * 
  1485.  *  Purpose:
  1486.  * 
  1487.  * Set's Recursion Level
  1488.  * 
  1489.  *  IID_GetRecursionLevel:
  1490.  * 
  1491.  * {00000218-0901-11d1-8B06-00A024406D59}
  1492.  * 
  1493.  */
  1494. DEFINE_GUID(IID_IHXGetRecursionLevel, 0x00000218, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  1495. #undef  INTERFACE
  1496. #define INTERFACE   IHXGetRecursionLevel
  1497. DECLARE_INTERFACE_(IHXGetRecursionLevel, IUnknown)
  1498. {
  1499.     /*
  1500.      * IUnknown methods
  1501.      */
  1502.     STDMETHOD(QueryInterface) (THIS_
  1503. REFIID riid,
  1504. void** ppvObj) PURE;
  1505.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  1506.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  1507.     /*
  1508.      * IHXGetRecursionLevel methods
  1509.      */
  1510.     STDMETHOD_(UINT32, GetRecursionLevel) (THIS) PURE;
  1511. };
  1512. /****************************************************************************
  1513.  * 
  1514.  *  Interface:
  1515.  * 
  1516.  * IHXFileRestrictor
  1517.  * 
  1518.  *  Purpose:
  1519.  * 
  1520.  * Allows restrictions on per file basis.  This will only get called for
  1521.  *  HTTP and it will only send in the localport.  Maybe some day.....
  1522.  * 
  1523.  *  IID_IHXFileRestrictor:
  1524.  * 
  1525.  * {00000219-0901-11d1-8B06-00A024406D59}
  1526.  * 
  1527.  */
  1528. DEFINE_GUID(IID_IHXFileRestrictor, 0x00000219, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  1529. #undef  INTERFACE
  1530. #define INTERFACE   IHXFileRestrictor
  1531. DECLARE_INTERFACE_(IHXFileRestrictor, IUnknown)
  1532. {
  1533.     /*
  1534.      * IUnknown methods
  1535.      */
  1536.     STDMETHOD(QueryInterface) (THIS_
  1537. REFIID riid,
  1538. void** ppvObj) PURE;
  1539.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  1540.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  1541.     /*
  1542.      * IHXFileRestrictor methods
  1543.      */
  1544.     STDMETHOD_(BOOL, IsAllowed) (THIS_
  1545. const char* url,
  1546. ULONG32 LocalAddr,
  1547. UINT16 LocalPort,
  1548. ULONG32 RemoteAddr,
  1549. UINT16 RemotePort) PURE;
  1550. };
  1551. // $EndPrivate.
  1552. /****************************************************************************
  1553.  * 
  1554.  *  Interface:
  1555.  * 
  1556.  * IHXFileRemove
  1557.  * 
  1558.  *  Purpose:
  1559.  * 
  1560.  *      Interface to allow removing of files.  Query off of the File Object.
  1561.  * Not all filesystem plugins implement this feature.
  1562.  * 
  1563.  *  IID_IHXFileRemove:
  1564.  *  
  1565.  * {0000021A-0901-11d1-8B06-00A024406D59}
  1566.  * 
  1567.  */
  1568. DEFINE_GUID(IID_IHXFileRemove, 0x0000021A, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  1569. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  1570. #undef  INTERFACE
  1571. #define INTERFACE   IHXFileRemove
  1572. DECLARE_INTERFACE_(IHXFileRemove, IUnknown)
  1573. {
  1574.     /*
  1575.      * IUnknown methods
  1576.      */
  1577.     STDMETHOD(QueryInterface)   (THIS_
  1578.                                 REFIID riid,
  1579.                                 void** ppvObj) PURE;
  1580.     STDMETHOD_(ULONG32,AddRef)  (THIS) PURE;
  1581.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  1582.     /*
  1583.      * IHXFileRemove methods
  1584.      */
  1585.     /************************************************************************
  1586.      * Method:
  1587.      *     IHXFileRemove::Remove
  1588.      * Purpose:
  1589.      *     Removes a file from the file system.
  1590.      */
  1591.     STDMETHOD(Remove) (THIS) PURE;
  1592. };
  1593. // $Private:
  1594. /****************************************************************************
  1595.  * 
  1596.  *  Interface:
  1597.  * 
  1598.  * IHXFastFileFactory
  1599.  * 
  1600.  *  Purpose:
  1601.  * 
  1602.  *      Interface to allow wrapping file objects with a buffer and block-sharing
  1603.  * sceme.  Query off the server class factory.
  1604.  * 
  1605.  *  IID_IHXFastFileFactory:
  1606.  *  
  1607.  * {0000021C-0901-11d1-8B06-00A024406D59}
  1608.  * 
  1609.  */
  1610. DEFINE_GUID(IID_IHXFastFileFactory, 0x0000021C, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  1611. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  1612. #define CLSID_IHXFastFileFactory IID_IHXFastFileFactory
  1613. #undef  INTERFACE
  1614. #define INTERFACE   IHXFastFileFactory
  1615. DECLARE_INTERFACE_(IHXFastFileFactory, IUnknown)
  1616. {
  1617.     /*
  1618.      * IUnknown methods
  1619.      */
  1620.     STDMETHOD(QueryInterface)   (THIS_
  1621.                                 REFIID riid,
  1622.                                 void** ppvObj) PURE;
  1623.     STDMETHOD_(ULONG32,AddRef)  (THIS) PURE;
  1624.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  1625.     /*
  1626.      * IHXFastFileFactory methods
  1627.      */
  1628.     /************************************************************************
  1629.      * Method:
  1630.      *     IHXFastFileFactory::Wrap
  1631.      * Purpose:
  1632.      *     Return an instantiated wrapper around an existing (but
  1633.      *      uninitialized) file object.
  1634.      *
  1635.      */
  1636.     STDMETHOD(Wrap) (THIS_
  1637.  REF(IUnknown*) /*OUT*/ pWrapper,
  1638.  IUnknown*      /*IN*/  pFileObj,
  1639.  UINT32         /*IN*/  ulBlockSize,
  1640.                                  BOOL           /*IN*/  bAlignReads,
  1641.                                  BOOL           /*IN*/  bCacheStats) PURE;
  1642. };
  1643. /****************************************************************************
  1644.  *
  1645.  *  Interface:
  1646.  *
  1647.  *      IHXFastFileFactory2
  1648.  *
  1649.  *  Purpose:
  1650.  *
  1651.  *      Interface to allow wrapping file objects with a buffer and block-sharing
  1652.  *      sceme.  Query off the server class factory.
  1653.  *
  1654.  *  IID_IHXFastFileFactory2:
  1655.  * 
  1656.  *      {0000021F-0901-11d1-8B06-00A024406D59}
  1657.  *
  1658.  */
  1659. DEFINE_GUID(IID_IHXFastFileFactory2, 0x0000021F, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
  1660.                         0xa0, 0x24, 0x40, 0x6d, 0x59);
  1661. #define CLSID_IHXFastFileFactory2 IID_IHXFastFileFactory2
  1662. #undef  INTERFACE
  1663. #define INTERFACE   IHXFastFileFactory2
  1664. DECLARE_INTERFACE_(IHXFastFileFactory2, IUnknown)
  1665. {
  1666.     /************************************************************************
  1667.      *  Method:
  1668.      *      IHXFastFileFactory2::Wrap
  1669.      *  Purpose:
  1670.      *      Return an instantiated wrapper around an existing (but
  1671.      *      uninitialized) file object.
  1672.      *
  1673.      */
  1674.     STDMETHOD(Wrap)             (THIS_
  1675.                                  REF(IUnknown*) /*OUT*/ pWrapper,
  1676.                                  IUnknown*      /*IN*/  pFileObj,
  1677.                                  UINT32         /*IN*/  ulBlockSize,
  1678.                                  BOOL           /*IN*/  bAlignReads,
  1679.                                  BOOL           /*IN*/  bCacheStats,
  1680.                                  UINT32         /*IN*/  ulMaxBlockSize) PURE;
  1681. };
  1682. /****************************************************************************
  1683.  * 
  1684.  *  Interface:
  1685.  * 
  1686.  * IHXFilePlacementRead
  1687.  * 
  1688.  *  Purpose:
  1689.  * 
  1690.  *      Reads into the passed buffer
  1691.  * 
  1692.  *  IID_IHXFilePlacementRead
  1693.  * 
  1694.  * {0000021D-0901-11d1-8B06-00A024406D59}
  1695.  * 
  1696.  */
  1697. DEFINE_GUID(IID_IHXFilePlacementRead, 0x0000021D, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  1698. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  1699. #undef  INTERFACE
  1700. #define INTERFACE   IHXFilePlacementRead
  1701. DECLARE_INTERFACE_(IHXFilePlacementRead, IUnknown)
  1702. {
  1703.     /*
  1704.      * IUnknown methods
  1705.      */
  1706.     STDMETHOD(QueryInterface)   (THIS_
  1707.                                 REFIID riid,
  1708.                                 void** ppvObj) PURE;
  1709.     STDMETHOD_(ULONG32,AddRef)  (THIS) PURE;
  1710.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  1711.     /*
  1712.      * IHXFilePlacementRead methods
  1713.      */
  1714.     STDMETHOD(Read) (THIS_
  1715.                                 ULONG32 ulAmount,
  1716.                                 ULONG32 ulOffset,
  1717.                                 char*   pBuffer,
  1718.                                 BOOL    bOffsetBuffer) PURE;
  1719.     STDMETHOD_(ULONG32,AlignmentBoundary) (THIS) PURE;
  1720. };
  1721. // $EndPrivate.
  1722. /****************************************************************************
  1723.  * 
  1724.  *  Interface:
  1725.  * 
  1726.  * IHXFastFileStats
  1727.  * 
  1728.  *  Purpose:
  1729.  * 
  1730.  *      Interface to allow file objects to request that at close they be 
  1731.  *      informed how many bytes have been "fast cached" on their behalf if any.
  1732.  * 
  1733.  *      ulFastFileBytesSaved is the number of bytes that would have been read
  1734.  *      from the file object had FastFile not been in use (this includes some
  1735.  *      lookahead
  1736.  *
  1737.  *      ulFastFileBytesNeeded is the amount of data actually read by the file 
  1738.  *      system. 
  1739.  * 
  1740.  *  IID_IHXFastFileStats:
  1741.  *  
  1742.  * {0000021E-0901-11d1-8B06-00A024406D59}
  1743.  * 
  1744.  */
  1745. DEFINE_GUID(IID_IHXFastFileStats, 0x0000021E, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  1746. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  1747. #define CLSID_IHXFastFileStats IID_IHXFastFileStats
  1748. #undef  INTERFACE
  1749. #define INTERFACE   IHXFastFileStats
  1750. DECLARE_INTERFACE_(IHXFastFileStats, IUnknown)
  1751. {
  1752.     /*
  1753.      * IUnknown methods
  1754.      */
  1755.     STDMETHOD(QueryInterface)   (THIS_
  1756.                                 REFIID riid,
  1757.                                 void** ppvObj) PURE;
  1758.     STDMETHOD_(ULONG32,AddRef)  (THIS) PURE;
  1759.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  1760.     /*
  1761.      * IHXFastFileStats methods
  1762.      */
  1763.     STDMETHOD(UpdateFileObjectStats) (THIS_
  1764.                                          UINT32         /*IN*/  ulFastFileBytesSaved,
  1765.                                          UINT32         /*IN*/  ulFastFileBytesNeeded) PURE;
  1766. };
  1767. // $Private:
  1768. /****************************************************************************
  1769.  * 
  1770.  *  Interface:
  1771.  * 
  1772.  * IHXHTTPPostObject
  1773.  * 
  1774.  *  Purpose:
  1775.  * 
  1776.  * Object that exports file control API
  1777.  * 
  1778.  *  IID_IHXHTTPPostObject:
  1779.  * 
  1780.  * {00000112-0901-11d1-8B06-00A024406D59}
  1781.  * 
  1782.  */
  1783. DEFINE_GUID(IID_IHXHTTPPostObject, 0x00000112, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  1784. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  1785. #define CLSID_IHXHTTPPostObject IID_IHXHTTPPostObject
  1786. #undef  INTERFACE
  1787. #define INTERFACE   IHXHTTPPostObject
  1788. DECLARE_INTERFACE_(IHXHTTPPostObject, IUnknown)
  1789. {
  1790.     /*
  1791.      * IUnknown methods
  1792.      */
  1793.     STDMETHOD(QueryInterface) (THIS_
  1794. REFIID riid,
  1795. void** ppvObj) PURE;
  1796.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  1797.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  1798.     /*
  1799.      * IHXHTTPPostObject methods
  1800.      */
  1801.     /************************************************************************
  1802.      * Method:
  1803.      *     IHXHTTPPostObject::Init
  1804.      * Purpose:
  1805.      *     Associates a file object with the file response object it should
  1806.      *     notify of operation completness. This method should also check
  1807.      *     for validity of the object (for example by opening it if it is
  1808.      *     a local file).
  1809.      */
  1810.     STDMETHOD(Init) (THIS_
  1811. ULONG32     /*IN*/  ulFlags,
  1812. IHXHTTPPostResponse*   /*IN*/  pFileResponse) PURE;
  1813.     /************************************************************************
  1814.      * Method:
  1815.      *     IHXHTTPPostObject::Close
  1816.      * Purpose:
  1817.      *     Closes the file resource and releases all resources associated
  1818.      *     with the object.
  1819.      */
  1820.     STDMETHOD(Close) (THIS) PURE;
  1821.     /************************************************************************
  1822.      * Method:
  1823.      *     IHXHTTPPostObject::GetResponse
  1824.      * Purpose:
  1825.      *     Tells the object to retreive any response data from the POST.
  1826.      *     Calls IHXHTTPPostResponse with ResponseReady(IHXValues*).
  1827.      */
  1828.     STDMETHOD(GetResponse) (THIS) PURE;
  1829.     /************************************************************************
  1830.      * Method:
  1831.      *     IHXHTTPPostObject::Post
  1832.      * Purpose:
  1833.      *     Writes a buffer of data to the HTTP URL and asynchronously notifies
  1834.      *     the caller via the IHXFileResponse interface passed in to Init,
  1835.      *     of the completeness of the operation.
  1836.      */
  1837.     STDMETHOD(Post) (THIS_
  1838. IHXBuffer* pBuffer) PURE;
  1839. /************************************************************************
  1840.      * Method:
  1841.      *     IHXHTTPPostObject::SetSize
  1842.      * Purpose:
  1843.      *      Set the total size of the Post(s) about to be made.
  1844.      */
  1845.     STDMETHOD(SetSize) (THIS_
  1846. ULONG32 ulLength) PURE;
  1847. };
  1848. /****************************************************************************
  1849.  * 
  1850.  *  Interface:
  1851.  * 
  1852.  * IHXHTTPPostResponse
  1853.  * 
  1854.  *  Purpose:
  1855.  * 
  1856.  * Object that exports file response API
  1857.  * 
  1858.  *  IID_IHXHTTPPostResponse:
  1859.  * 
  1860.  * {00000113-0901-11d1-8B06-00A024406D59}
  1861.  * 
  1862.  */
  1863. DEFINE_GUID(IID_IHXHTTPPostResponse, 0x00000113, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  1864.     0xa0, 0x24, 0x40, 0x6d, 0x59);
  1865. #undef  INTERFACE
  1866. #define INTERFACE   IHXHTTPPostResponse
  1867. DECLARE_INTERFACE_(IHXHTTPPostResponse, IUnknown)
  1868. {
  1869.     /*
  1870.      * IUnknown methods
  1871.      */
  1872.     STDMETHOD(QueryInterface) (THIS_
  1873. REFIID riid,
  1874. void** ppvObj) PURE;
  1875.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  1876.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  1877.     /*
  1878.      * IHXHTTPPostResponse methods
  1879.      */
  1880.     /************************************************************************
  1881.      * Method:
  1882.      *     IHXHTTPPostResponse::InitDone
  1883.      * Purpose:
  1884.      *     Notification interface provided by users of the IHXHTTPPostObject
  1885.      *     interface. This method is called by the IHXHTTPPostObject when the
  1886.      *     initialization of the file is complete. If the file is not valid 
  1887.      *     for the file system, the status HXR_FAILED should be 
  1888.      *     returned.
  1889.      */
  1890.     STDMETHOD(InitDone) (THIS_
  1891. HX_RESULT     status) PURE;
  1892.     /************************************************************************
  1893.      * Method:
  1894.      *     IHXHTTPPostResponse::CloseDone
  1895.      * Purpose:
  1896.      *     Notification interface provided by users of the IHXHTTPPostObject
  1897.      *     interface. This method is called by the IHXHTTPPostObject when the
  1898.      *     close of the file is complete.
  1899.      */
  1900.     STDMETHOD(CloseDone) (THIS_
  1901. HX_RESULT     status) PURE;
  1902.     /************************************************************************
  1903.      * Method:
  1904.      *     IHXHTTPPostResponse::ResponseReady
  1905.      * Purpose:
  1906.      *     Notification interface provided by users of the IHXHTTPPostObject
  1907.      *     interface. This method is called by the IHXHTTPPostObject when the
  1908.      *     POST response data has been completely read.
  1909.      */
  1910.     STDMETHOD(ResponseReady) (THIS_ 
  1911. HX_RESULT     status,
  1912. IHXBuffer*     pContentBuffer) PURE;
  1913.     /************************************************************************
  1914.      * Method:
  1915.      *     IHXHTTPPostResponse::WriteDone
  1916.      * Purpose:
  1917.      *     Notification interface provided by users of the IHXHTTPPostObject
  1918.      *     interface. This method is called by the IHXHTTPPostObject when the
  1919.      *     last write to the file is complete.
  1920.      */
  1921.     STDMETHOD(PostDone) (THIS_ 
  1922. HX_RESULT     status) PURE;
  1923. };
  1924. // $EndPrivate.
  1925. // $Private:
  1926. /****************************************************************************
  1927.  * 
  1928.  *  Interface:
  1929.  * 
  1930.  * IHXHTTPRedirect
  1931.  * 
  1932.  *  Purpose:
  1933.  * 
  1934.  * Allows you to get redirect URL
  1935.  * 
  1936.  *  IID_IHXHTTPRedirect:
  1937.  * 
  1938.  * {00002E00-0901-11d1-8B06-00A024406D59}
  1939.  * 
  1940.  */
  1941. DEFINE_GUID(IID_IHXHTTPRedirect, 0x21eae0b9, 0x2e0c, 0x4003, 0xbb, 0x79,
  1942.             0xbc, 0x8c, 0xc5, 0x67, 0x2c, 0x2d);
  1943. #undef  INTERFACE
  1944. #define INTERFACE   IHXHTTPRedirect
  1945. DECLARE_INTERFACE_(IHXHTTPRedirect, IUnknown)
  1946. {
  1947.     /*
  1948.      * IUnknown methods
  1949.      */
  1950.     STDMETHOD(QueryInterface) (THIS_
  1951. REFIID riid,
  1952. void** ppvObj) PURE;
  1953.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  1954.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  1955.     /*
  1956.      * IHXHTTPRedirect methods
  1957.      */
  1958.     /************************************************************************
  1959.      * Method:
  1960.      *     IHXHTTPRedirect::Init
  1961.      * Purpose:
  1962.      *     Initialize the response object
  1963.      */
  1964.     STDMETHOD(Init)     (THIS_
  1965.      IHXHTTPRedirectResponse* pRedirectResponse) PURE;
  1966.     /************************************************************************
  1967.      * Method:
  1968.      *     IHXHTTPRedirect::SetResponseObject
  1969.      * Purpose:
  1970.      *     Initialize the response object w/o calling Init
  1971.      */
  1972.     STDMETHOD(SetResponseObject) (THIS_ 
  1973.                              IHXHTTPRedirectResponse* pRedirectResponse) PURE;
  1974. };
  1975. /****************************************************************************
  1976.  * 
  1977.  *  Interface:
  1978.  * 
  1979.  * IHXHTTPRedirectResponse
  1980.  * 
  1981.  *  Purpose:
  1982.  * 
  1983.  * Allows you to get redirect URL
  1984.  * 
  1985.  *  IID_IHXHTTPRedirectResponse:
  1986.  * 
  1987.  * {00002E01-0901-11d1-8B06-00A024406D59}
  1988.  * 
  1989.  */
  1990. DEFINE_GUID(IID_IHXHTTPRedirectResponse, 0x125a63b1, 0x669c, 0x42f9, 0xb1,
  1991.             0xf9, 0x1b, 0x53, 0xe9, 0x95, 0x82, 0x95);
  1992. #undef  INTERFACE
  1993. #define INTERFACE   IHXHTTPRedirectResponse
  1994. DECLARE_INTERFACE_(IHXHTTPRedirectResponse, IUnknown)
  1995. {
  1996.     /*
  1997.      * IUnknown methods
  1998.      */
  1999.     STDMETHOD(QueryInterface) (THIS_
  2000. REFIID riid,
  2001. void** ppvObj) PURE;
  2002.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  2003.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  2004.     /*
  2005.      * IHXHTTPRedirectResponse methods
  2006.      */
  2007.     /************************************************************************
  2008.      * Method:
  2009.      *     IHXHTTPRedirectResponse::RedirectDone
  2010.      * Purpose:
  2011.      *     return the redirect URL
  2012.      */
  2013.     STDMETHOD(RedirectDone) (THIS_
  2014.  IHXBuffer* pURL) PURE;
  2015. };
  2016. /****************************************************************************
  2017.  * 
  2018.  *  Interface:
  2019.  *
  2020.  * IHXRM2Converter2
  2021.  *
  2022.  *  Purpose:
  2023.  *
  2024.  * Interface to RM1->RM2 merge/converter module. This is a new improved
  2025.  *      interface which contains all of the functionality of the old one.
  2026.  *      However, this one is asynchronous where necessary and takes standard
  2027.  *      IHXFileObjects instead of pathnames for the required files.
  2028.  *
  2029.  *  IHXRM2Converter
  2030.  *
  2031.  * {00002F00-0901-11D1-8B06-00A024406D59}
  2032.  */
  2033. DEFINE_GUID(IID_IHXRM2Converter2, 0x00002F00, 0x901, 0x11d1, 0x8b, 
  2034.     0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  2035. #define CLSID_IRMARM2Converter2 IID_IHXRM2Converter2
  2036. #undef  INTERFACE
  2037. #define INTERFACE   IHXRM2Converter2
  2038. DECLARE_INTERFACE_(IHXRM2Converter2, IUnknown)
  2039. {
  2040.     /*
  2041.      * IUnknown methods
  2042.      */
  2043.     STDMETHOD(QueryInterface)     (THIS_
  2044.     REFIID riid,
  2045.     void** ppvObj) PURE;
  2046.     STDMETHOD_(ULONG32,AddRef)     (THIS) PURE;
  2047.     STDMETHOD_(ULONG32,Release)     (THIS) PURE;
  2048.     /*
  2049.      * IHXRM2Converter2 methods
  2050.      */
  2051.     STDMETHOD(Init)     (THIS_
  2052.     IHXRM2Converter2Response* pResponse) PURE;
  2053.     //
  2054.     // AddStream takes a stream from an RM1 file and
  2055.     // adds it to the new RM2 multirate section
  2056.     //
  2057.     STDMETHOD(AddStream)     (THIS_
  2058.     const char* pFilename,
  2059.     IHXFileObject* pFileObject,
  2060.     UINT16 nStreamNumber,
  2061.     BOOL bTagAsBackwardCompatible) PURE;
  2062.     //
  2063.     // AddInterleavedStream takes a stream from an
  2064.     // RM1 file and adds it to the initial interleaved
  2065.     // backward compatibility section
  2066.     //
  2067.     STDMETHOD(AddInterleavedStream) (THIS_
  2068.     const char* pFilename,
  2069.     IHXFileObject* pFileObject,
  2070.     UINT16 nStreamNumber) PURE;
  2071.     //
  2072.     // Add file slurps down all of the streams in
  2073.     // an RM1 file and adds them to the new RM2
  2074.     // multirate section.
  2075.     //
  2076.     STDMETHOD(AddFile)     (THIS_
  2077.     const char* pFilename,
  2078.     IHXFileObject* pFileObject) PURE;
  2079.     //
  2080.     // SetTitle,Author,Copyright, and Comment
  2081.     // should all be pretty self explanatory...
  2082.     //
  2083.     STDMETHOD(SetTitle)     (THIS_
  2084.     const char* pTitle) PURE;
  2085.     STDMETHOD(SetAuthor)     (THIS_
  2086.     const char* pAuthor) PURE;
  2087.     STDMETHOD(SetCopyright)     (THIS_
  2088.     const char* pCopyright) PURE;
  2089.     STDMETHOD(SetComment)     (THIS_
  2090.     const char* pComment) PURE;
  2091.     //
  2092.     // PairStreams lets you pair two different
  2093.     // streams together to play at a particular
  2094.     // bandwidth (i.e. the sum of the stream
  2095.     // bandwidths involved).
  2096.     //
  2097.     STDMETHOD(PairStreams)     (THIS_
  2098.     const char* pFilename1,
  2099.     UINT16 nStreamNumber1,
  2100.     const char* pFilename2,
  2101.     UINT16 nStreamNumber2) PURE;
  2102.     STDMETHOD(Merge) (THIS_
  2103. const char* pFilename,
  2104. IHXFileObject* pOutputFile,
  2105. UINT32 ulBytesToWrite) PURE;
  2106.     STDMETHOD(Reset)     (THIS) PURE;
  2107.     STDMETHOD(Done)     (THIS) PURE;
  2108. };
  2109. /****************************************************************************
  2110.  * 
  2111.  *  Interface:
  2112.  *
  2113.  * IHXRM2Converter2Response
  2114.  *
  2115.  *  Purpose:
  2116.  *
  2117.  * Response Interface for IHXRM2Converter2. 
  2118.  *
  2119.  *  IHXRM2Converter
  2120.  *
  2121.  * {00002F01-0901-11D1-8B06-00A024406D59}
  2122.  */
  2123. DEFINE_GUID(IID_IHXRM2Converter2Response, 0x00002F01, 0x901, 0x11d1, 0x8b, 
  2124.     0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  2125. #undef  INTERFACE
  2126. #define INTERFACE   IHXRM2Converter2Response
  2127. DECLARE_INTERFACE_(IHXRM2Converter2Response, IUnknown)
  2128. {
  2129.     /*
  2130.      * IUnknown methods
  2131.      */
  2132.     STDMETHOD(QueryInterface) (THIS_
  2133. REFIID riid,
  2134. void** ppvObj) PURE;
  2135.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  2136.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  2137.     /*
  2138.      * IHXRM2Converter2Response methods
  2139.      */
  2140.     STDMETHOD(InitDone) (THIS_
  2141. HX_RESULT status) PURE;
  2142.     STDMETHOD(AddStreamDone) (THIS_
  2143. HX_RESULT status) PURE;
  2144.     STDMETHOD(AddInterleavedStreamDone) (THIS_
  2145. HX_RESULT status) PURE;
  2146.     STDMETHOD(AddFileDone) (THIS_
  2147. HX_RESULT status) PURE;
  2148.     STDMETHOD(MergeDone) (THIS_
  2149. HX_RESULT status) PURE;
  2150. };
  2151. /****************************************************************************
  2152.  * 
  2153.  *  Interface:
  2154.  * 
  2155.  * IHXPoolPathAdjustment
  2156.  * 
  2157.  *  Purpose:
  2158.  * 
  2159.  * For file systems that use GetFileObjectFromPool to properly
  2160.  * adjust absolute local URLs so they will be accessed relative
  2161.  *      to the pool filesystem mountpoint.
  2162.  *
  2163.  *  IID_IHXPoolPathAdjustment:
  2164.  * 
  2165.  * {00002F02-0901-11d1-8b06-00A024406D59}
  2166.  * 
  2167.  */
  2168. DEFINE_GUID(IID_IHXPoolPathAdjustment, 0x00002F02, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  2169. #undef  INTERFACE
  2170. #define INTERFACE   IHXPoolPathAdjustment
  2171. DECLARE_INTERFACE_(IHXPoolPathAdjustment, IUnknown)
  2172. {
  2173.     /*
  2174.      * IUnknown methods
  2175.      */
  2176.     STDMETHOD(QueryInterface) (THIS_
  2177. REFIID riid,
  2178. void** ppvObj) PURE;
  2179.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  2180.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  2181.     /*
  2182.      * IHXPoolPathAdjustment Methods.
  2183.      */
  2184.     STDMETHOD(AdjustAbsolutePath)   (THIS_
  2185.          IHXBuffer*      /*IN*/  pOldPath,
  2186.          REF(IHXBuffer*) /*OUT*/ pNewPath) PURE;
  2187. };
  2188. /*
  2189.  * Interface:
  2190.  *  IHXPostDataHandler
  2191.  *
  2192.  * Purpose:
  2193.  *
  2194.  *  Allows a file object to receive out of band POST data
  2195.  *      from an HTTP request.  If this interface is not implemented
  2196.  *      data will be placed in request header as "PostData"
  2197.  *
  2198.  *      When there is no more Data remaining, PostData will be
  2199.  *      called with a NULL argument.
  2200.  *
  2201.  * IID_IHXPostDataHandler:
  2202.  *
  2203.  * {0x0222a1b5-49fc-47e2-b69098befa0a588e}
  2204.  *
  2205.  */
  2206. DEFINE_GUID(IID_IHXPostDataHandler, 0x0222a1b5, 0x49fc, 0x47e2, 0xb6,
  2207. 0x90, 0x98, 0xbe, 0xfa, 0x0a, 0x58, 0x8e);
  2208. #undef INTERFACE
  2209. #define INTERFACE IHXPostDataHandler
  2210. DECLARE_INTERFACE_(IHXPostDataHandler, IUnknown)
  2211. {
  2212.     /*
  2213.      * IUnknownMethods
  2214.      */
  2215.     STDMETHOD(QueryInterface) (THIS_
  2216.     REFIID riid,
  2217.     void** ppvObj) PURE;
  2218.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  2219.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  2220.     /*
  2221.      * IHXPostDataHandler methods
  2222.      */
  2223.     STDMETHOD(PostData) (THIS_
  2224.          IHXBuffer* pBuf) PURE;
  2225. };
  2226. // $EndPrivate.
  2227. #endif  /* _HXFILES_H_ */