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

多媒体编程

开发平台:

Visual C++

  1. /****************************************************************************
  2.  * 
  3.  *  $Id: rmamon.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 Registry Interfaces.
  15.  *
  16.  */
  17. #ifndef _RMAMON_H_
  18. #define _RMAMON_H_
  19. typedef _INTERFACE IUnknown IUnknown;
  20. typedef _INTERFACE IRMAPlugin IRMAPlugin;
  21. typedef _INTERFACE IRMABuffer IRMABuffer;
  22. typedef _INTERFACE IRMAValues IRMAValues;
  23. typedef _INTERFACE IRMAPropWatch IRMAPropWatch;
  24. typedef _INTERFACE IRMAPropWatchResponse IRMAPropWatchResponse;
  25. typedef _INTERFACE IRMAActiveRegistry IRMAActiveRegistry;
  26. typedef _INTERFACE IRMAActivePropUser IRMAActivePropUser;
  27. typedef _INTERFACE IRMAActivePropUserResponse IRMAActivePropUserResponse;
  28. typedef _INTERFACE IRMAPNRegistryAltStringHandling IRMAPNRegistryAltStringHandling;
  29. /*
  30.  * Types of the values stored in the registry.
  31.  */
  32. typedef enum _RMAPropType
  33. {
  34.     PT_UNKNOWN,
  35.     PT_COMPOSITE, /* Contains other values (elements)      */
  36.     PT_INTEGER, /* 32-bit signed value      */
  37.     PT_INTREF, /* Integer reference object -- 32-bit signed integer */
  38.     PT_STRING, /* Signed char* value      */
  39.     PT_BUFFER /* IRMABuffer object      */
  40. } RMAPropType;
  41. /*
  42.  * 
  43.  *  Interface:
  44.  *
  45.  * IRMAPNRegistry
  46.  *
  47.  *  Purpose:
  48.  *
  49.  * This inteface provides access to the "Registry" in the server and
  50.  * client.  The "Registry" is a hierarchical structure of Name/Value
  51.  * pairs (properties) which is capable of storing many different types
  52.  * of data including strings, buffers, and integers.  The registry
  53.  * provides various types of information including statistics,
  54.  * configuration information, and system status.
  55.  *
  56.  * Note:  This registry is not related to the Windows system registry.
  57.  *
  58.  *  IID_IRMAPNRegistry:
  59.  *
  60.  * {00000600-0901-11d1-8B06-00A024406D59}
  61.  *
  62.  */
  63. DEFINE_GUID(IID_IRMAPNRegistry, 0x00000600, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  64. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  65. #define CLSID_IRMAPNRegistry IID_IRMAPNRegistry
  66. #undef  INTERFACE
  67. #define INTERFACE   IRMAPNRegistry
  68. DECLARE_INTERFACE_(IRMAPNRegistry, IUnknown)
  69. {
  70.     /*
  71.      * IUnknown methods
  72.      */
  73.     STDMETHOD(QueryInterface) (THIS_
  74. REFIID riid,
  75. void** ppvObj) PURE;
  76.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  77.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  78.     /*
  79.      * IRMAPNRegistry methods
  80.      */
  81.     /************************************************************************
  82.      *  Method:
  83.      *      IRMAPNRegistry::CreatePropWatch
  84.      *  Purpose:
  85.      *      Create a new IRMAPropWatch object which can then be queried for 
  86.      *  the right kind of IRMAPropWatch object.
  87.      *
  88.      *  pPropWatch - OUT - returns a new addref'ed IRMAPropWatch object 
  89.      */
  90.     STDMETHOD(CreatePropWatch) (THIS_
  91. REF(IRMAPropWatch*) pPropWatch) PURE;
  92.     /************************************************************************
  93.      *  Method:
  94.      *      IRMAPNRegistry::AddComp
  95.      *  Purpose:
  96.      *      Add a COMPOSITE property to the registry and return its ID
  97.      *  if successful. It returns ZERO (0) if an error occurred
  98.      *  during the operation.
  99.      *
  100.      *  pName - IN - name of the Property that is going to be added to 
  101.      *               the registry
  102.      */
  103.     STDMETHOD_(UINT32, AddComp) (THIS_
  104. const char* pName) PURE;
  105.     /************************************************************************
  106.      *  Method:
  107.      *      IRMAPNRegistry::AddInt
  108.      *  Purpose:
  109.      *      Add an INTEGER property with name in "pName" and value in 
  110.      *  "iValue" to the registry. The return value is the id to
  111.      *  the newly added Property or ZERO if there was an error.
  112.      *
  113.      *  pName - IN - name of the Property that is going to be added to 
  114.      *               the registry
  115.      *  nValue - IN - integer value of the Property that is going to be 
  116.      *                added to the registry
  117.      */
  118.     STDMETHOD_(UINT32, AddInt) (THIS_
  119. const char* pName, 
  120. const INT32 nValue) PURE;
  121.     /************************************************************************
  122.      *  Method:
  123.      *      IRMAPNRegistry::GetIntByName
  124.      *  Purpose:
  125.      *      Retreive an INTEGER value from the registry given its Property
  126.      *  name "pName". If the Property is found, it will return PNR_OK, 
  127.      *  otherwise it returns PNR_FAIL.
  128.      *
  129.      *  pName - IN - name of the Property whose value is to be retreived
  130.      *  nValue - OUT - parameter into which the value of the Property is 
  131.      *                 going to be returned
  132.      */
  133.     STDMETHOD(GetIntByName) (THIS_
  134. const char* pName,
  135. REF(INT32) nValue) const PURE;
  136.     /************************************************************************
  137.      *  Method:
  138.      *      IRMAPNRegistry::GetIntById
  139.      *  Purpose:
  140.      *      Retreive an INTEGER value from the registry given its id "ulId". 
  141.      *  If the Property is found, it will return PNR_OK, otherwise it 
  142.      *  returns PNR_FAIL.
  143.      *
  144.      *  ulId - IN - unique id of the Property whose value is to be retreived
  145.      *  nValue - OUT - parameter into which the value of the Property is 
  146.      *                 going to be returned
  147.      */
  148.     STDMETHOD(GetIntById) (THIS_
  149. const UINT32 ulId,
  150. REF(INT32) nValue) const PURE;
  151.     /************************************************************************
  152.      *  Method:
  153.      *      IRMAPNRegistry::SetIntByName
  154.      *  Purpose:
  155.      *      Modify a Property's INTEGER value in the registry given the
  156.      *  Property's name "pName". If the value was set, it will return PNR_OK, 
  157.      *  otherwise it returns PNR_FAIL.
  158.      *
  159.      *  pName - IN - name of the Property whose value is to be set
  160.      *  nValue - IN - the new value of the Property which is going to be set
  161.      */
  162.     STDMETHOD(SetIntByName) (THIS_
  163. const char* pName, 
  164. const INT32 nValue) PURE;
  165.     /************************************************************************
  166.      *  Method:
  167.      *      IRMAPNRegistry::SetIntById
  168.      *  Purpose:
  169.      *      Modify a Property's INTEGER value in the registry given the
  170.      *  its id "id". If the value was set, it will return PNR_OK, otherwise 
  171.      *  it returns PNR_FAIL.
  172.      *
  173.      *  ulId - IN - unique id of the Property whose value is to be set
  174.      *  nValue - IN - the new value of the Property which is going to be set
  175.      */
  176.     STDMETHOD(SetIntById) (THIS_
  177. const UINT32 id,
  178. const INT32 nValue) PURE;
  179.     /************************************************************************
  180.      *  Method:
  181.      *      IRMAPNRegistry::AddStr
  182.      *  Purpose:
  183.      *      Add an STRING property with name in "pName" and value in 
  184.      *  "pValue" to the registry.
  185.      *
  186.      *  pName - IN - name of the Property that is going to be added to 
  187.      *               the registry
  188.      *  pValue - IN - buffer value of the Property that is going to be 
  189.      *                added to the registry
  190.      */
  191.     STDMETHOD_(UINT32, AddStr) (THIS_
  192. const char* pName, 
  193. IRMABuffer* pValue) PURE;
  194.     /************************************************************************
  195.      *  Method:
  196.      *      IRMAPNRegistry::GetStrByName
  197.      *  Purpose:
  198.      *      Retreive an STRING value from the registry given its Property
  199.      *  name "pName". If the Property is found, it will return PNR_OK, 
  200.      *  otherwise it returns PNR_FAIL.
  201.      *
  202.      *  pName - IN - name of the Property whose value is to be retreived
  203.      *  pValue - OUT - parameter into which the value of the Property is 
  204.      *                 going to be returned
  205.      */
  206.     STDMETHOD(GetStrByName) (THIS_
  207. const char*  pName,
  208. REF(IRMABuffer*) pValue) const PURE;
  209.     /************************************************************************
  210.      *  Method:
  211.      *      IRMAPNRegistry::GetStrById
  212.      *  Purpose:
  213.      *      Retreive an STRING value from the registry given its id "ulId". 
  214.      *  If the Property is found, it will return PNR_OK, otherwise it 
  215.      *  returns PNR_FAIL.
  216.      *
  217.      *  ulId - IN - unique id of the Property whose value is to be retreived
  218.      *  pValue - OUT - parameter into which the value of the Property is 
  219.      *                 going to be returned
  220.      */
  221.     STDMETHOD(GetStrById) (THIS_
  222. const UINT32  ulId,
  223. REF(IRMABuffer*) pValue) const PURE;
  224.     /************************************************************************
  225.      *  Method:
  226.      *      IRMAPNRegistry::SetStrByName
  227.      *  Purpose:
  228.      *      Modify a Property's STRING value in the registry given the
  229.      *  Property's name "pName". If the value was set, it will return 
  230.      *  PNR_OK, otherwise it returns PNR_FAIL.
  231.      *
  232.      *  pName - IN - name of the Property whose value is to be set
  233.      *  pValue - IN - the new value of the Property which is going to be set
  234.      */
  235.     STDMETHOD(SetStrByName) (THIS_
  236. const char* pName, 
  237. IRMABuffer* pValue) PURE;
  238.     /************************************************************************
  239.      *  Method:
  240.      *      IRMAPNRegistry::SetStrById
  241.      *  Purpose:
  242.      *      Modify a Property's STRING value in the registry given the
  243.      *  its id "ulId". If the value was set, it will return PNR_OK, 
  244.      *  otherwise it returns PNR_FAIL.
  245.      *
  246.      *  ulId - IN - unique id of the Property whose value is to be set
  247.      *  pValue - IN - the new value of the Property which is going to be set
  248.      */
  249.     STDMETHOD(SetStrById) (THIS_
  250. const UINT32 ulId,
  251. IRMABuffer* pValue) PURE;
  252.     /************************************************************************
  253.      *  Method:
  254.      *      IRMAPNRegistry::AddBuf
  255.      *  Purpose:
  256.      *      Add an BUFFER property with name in "pName" and value in 
  257.      *  "pValue" to the registry.
  258.      *
  259.      *  pName - IN - name of the Property that is going to be added to 
  260.      *               the registry
  261.      *  pValue - IN - buffer value of the Property that is going to be 
  262.      *                added to the registry
  263.      */
  264.     STDMETHOD_(UINT32, AddBuf) (THIS_
  265. const char* pName, 
  266. IRMABuffer* pValue) PURE;
  267.     /************************************************************************
  268.      *  Method:
  269.      *      IRMAPNRegistry::GetBufByName
  270.      *  Purpose:
  271.      *      Retreive the BUFFER from the registry given its Property name 
  272.      *  "pName". If the Property is found, it will return PNR_OK, otherwise 
  273.      *  it returns PNR_FAIL.
  274.      *
  275.      *  pName - IN - name of the Property whose value is to be retreived
  276.      *  pValue - OUT - parameter into which the value of the Property is 
  277.      *                 going to be returned
  278.      */
  279.     STDMETHOD(GetBufByName) (THIS_
  280. const char*  pName,
  281. REF(IRMABuffer*) pValue) const PURE;
  282.     /************************************************************************
  283.      *  Method:
  284.      *      IRMAPNRegistry::GetBufById
  285.      *  Purpose:
  286.      *      Retreive the BUFFER from the registry given its id "ulId". If the 
  287.      *  Property is found, it will return PNR_OK, otherwise it returns 
  288.      *  PNR_FAIL.
  289.      *
  290.      *  ulId - IN - unique id of the Property whose value is to be retreived
  291.      *  pValue - OUT - parameter into which the value of the Property is 
  292.      *                 going to be returned
  293.      */
  294.     STDMETHOD(GetBufById) (THIS_
  295. const UINT32  ulId,
  296. REF(IRMABuffer*) pValue) const PURE;
  297.     /************************************************************************
  298.      *  Method:
  299.      *      IRMAPNRegistry::SetBufByName
  300.      *  Purpose:
  301.      *      Modify a Property's BUFFER in the registry given the
  302.      *  Property's name "pName". If the value was set, it will return 
  303.      *  PNR_OK, otherwise it returns PNR_FAIL.
  304.      *
  305.      *  pName - IN - name of the Property whose value is to be set
  306.      *  pValue - IN - the new value of the Property which is going to be set
  307.      */
  308.     STDMETHOD(SetBufByName) (THIS_
  309. const char* pName, 
  310. IRMABuffer* pValue) PURE;
  311.     /************************************************************************
  312.      *  Method:
  313.      *      IRMAPNRegistry::SetBufById
  314.      *  Purpose:
  315.      *      Modify a Property's BUFFER in the registry given its id "ulId". 
  316.      *  If the value was set, it will return PNR_OK, otherwise it returns 
  317.      *  PNR_FAIL.
  318.      *
  319.      *  ulId - IN - unique id of the Property whose value is to be set
  320.      *  pValue - IN - the new value of the Property which is going to be set
  321.      */
  322.     STDMETHOD(SetBufById) (THIS_
  323. const UINT32 ulId,
  324. IRMABuffer* pValue) PURE;
  325.     /************************************************************************
  326.      *  Method:
  327.      *      IRMAPNRegistry::AddIntRef
  328.      *  Purpose:
  329.      *      Add an INTEGER REFERENCE property with name in "pName" and 
  330.      *  value in "iValue" to the registry. This property allows the user
  331.      *  to modify its contents directly, without having to go through the
  332.      *  registry.
  333.      *
  334.      *  pName - IN - name of the Property that is going to be added to 
  335.      *               the registry
  336.      *  pValue - IN - the pointer of the integer value is what gets stored
  337.      *                in the registry as the Interger Reference Property's 
  338.      *                value
  339.      */
  340.     STDMETHOD_(UINT32, AddIntRef) (THIS_
  341. const char* pName, 
  342. INT32* pValue) PURE;
  343.     /************************************************************************
  344.      *  Method:
  345.      *      IRMAPNRegistry::DeleteByName
  346.      *  Purpose:
  347.      *      Delete a Property from the registry using its name "pName".
  348.      *
  349.      *  pName - IN - name of the Property that is going to be deleted
  350.      */
  351.     STDMETHOD_(UINT32, DeleteByName) (THIS_
  352. const char* pName) PURE;
  353.     /************************************************************************
  354.      *  Method:
  355.      *      IRMAPNRegistry::DeleteById
  356.      *  Purpose:
  357.      *      Delete a Property from the registry using its id "ulId".
  358.      *
  359.      *  ulId - IN - unique id of the Property that is going to be deleted
  360.      */
  361.     STDMETHOD_(UINT32, DeleteById) (THIS_
  362. const UINT32 ulId) PURE;
  363.     /************************************************************************
  364.      *  Method:
  365.      *      IRMAPNRegistry::GetTypeByName
  366.      *  Purpose:
  367.      *      Returns the datatype of the Property given its name "pName".
  368.      *
  369.      *  pName - IN - name of the Property whose type is to be retreived
  370.      */
  371.     STDMETHOD_(RMAPropType, GetTypeByName) (THIS_
  372. const char* pName) const PURE;
  373.     /************************************************************************
  374.      *  Method:
  375.      *      IRMAPNRegistry::GetTypeById
  376.      *  Purpose:
  377.      *      Returns the datatype of the Property given its its id "ulId".
  378.      *
  379.      *  ulId - IN - unique id of the Property whose type is to be retreived
  380.      */
  381.     STDMETHOD_(RMAPropType, GetTypeById) (THIS_
  382. const UINT32 ulId) const PURE;
  383.     /************************************************************************
  384.      *  Method:
  385.      *      IRMAPNRegistry::FindParentIdByName
  386.      *  Purpose:
  387.      *      Returns the id value of the parent node of the Property whose 
  388.      *  name "pName" has been passed in. If it fails, a ZERO value is 
  389.      *  returned.
  390.      *
  391.      *  pName - IN - name of the Property whose parent's unique id is to be
  392.      *               retreived
  393.      */
  394.     STDMETHOD_(UINT32, FindParentIdByName) (THIS_
  395. const char* pName) const PURE;
  396.     /************************************************************************
  397.      *  Method:
  398.      *      IRMAPNRegistry::FindParentIdById
  399.      *  Purpose:
  400.      *      Returns the id value of the parent node of the Property whose 
  401.      *  id "ulId" has been passed in. If it fails, a ZERO value is returned.
  402.      *
  403.      *  ulId - IN - unique id of the Property whose parent's id is to be
  404.      *              retreived
  405.      */
  406.     STDMETHOD_(UINT32, FindParentIdById) (THIS_
  407. const UINT32 ulId) const PURE;
  408.     /************************************************************************
  409.      *  Method:
  410.      *      PNRegistry::GetPropName
  411.      *  Purpose:
  412.      *      Returns the Property name in the pName char buffer passed
  413.      *  as a parameter, given the Property's id "ulId".
  414.      *
  415.      *  ulId - IN - unique id of the Property whose name is to be retreived
  416.      *  pName - OUT - parameter into which the Property name is going to be
  417.      *                returned
  418.      */
  419.     STDMETHOD(GetPropName) (THIS_
  420. const UINT32 ulId,
  421. REF(IRMABuffer*) pName) const PURE;
  422.     /************************************************************************
  423.      *  Method:
  424.      *      PNRegistry::GetId
  425.      *  Purpose:
  426.      *      Returns the Property's id given the Property name.
  427.      *
  428.      *  pName - IN - name of the Property whose unique id is to be 
  429.      *               retreived
  430.      */
  431.     STDMETHOD_(UINT32, GetId) (THIS_
  432. const char* pName) const PURE;
  433.     /************************************************************************
  434.      *  Method:
  435.      *      IRMAPNRegistry::GetPropListOfRoot
  436.      *  Purpose:
  437.      *      Returns an array of a Properties under the root level of the 
  438.      *  registry's hierarchy.
  439.      *
  440.      *  pValues - OUT - list of property name and unique id at the 
  441.      *                  highest level (root) in the registry
  442.      */
  443.     STDMETHOD(GetPropListOfRoot)  (THIS_
  444. REF(IRMAValues*) pValues) const PURE;
  445.     /************************************************************************
  446.      *  Method:
  447.      *      IRMAPNRegistry::GetPropListByName
  448.      *  Purpose:
  449.      *      Returns an array of Properties immediately under the one whose
  450.      *  name is passed in "pName".
  451.      *
  452.      *  pName - IN - name of the Property whose child property list is to be
  453.      *               retreived
  454.      *  pValues - OUT - list of property name and unique id under the 
  455.      *                  Property whose name is in "pName"
  456.      */
  457.     STDMETHOD(GetPropListByName)  (THIS_
  458.  const char* pName,
  459.  REF(IRMAValues*) pValues) const PURE;
  460.     /************************************************************************
  461.      *  Method:
  462.      *      IRMAPNRegistry::GetPropListById
  463.      *  Purpose:
  464.      *      Returns an array of Properties immediately under the one whose
  465.      *  id is passed in "ulId".
  466.      *
  467.      *  ulId - IN - unique id of the Property whose child property list is 
  468.      *              to be retreived
  469.      *  pValues - OUT - list of property name and unique id under the 
  470.      *                  Property whose is is in "ulId"
  471.      */
  472.     STDMETHOD(GetPropListById)    (THIS_
  473.  const UINT32 ulId,
  474.  REF(IRMAValues*) pValues) const PURE;
  475.     /************************************************************************
  476.      *  Method:
  477.      *      IRMAPNRegistry::GetNumPropsAtRoot
  478.      *  Purpose:
  479.      *      Returns the number of Properties at the root of the registry. 
  480.      */
  481.     STDMETHOD_(INT32, GetNumPropsAtRoot) (THIS) const PURE;
  482.     /************************************************************************
  483.      *  Method:
  484.      *      IRMAPNRegistry::GetNumPropsByName
  485.      *  Purpose:
  486.      *      Returns the count of the number of Properties under the one 
  487.      *  whose name is specified in "pName".
  488.      *
  489.      *  pName - IN - name of the Property whose number of children is to be
  490.      *               retreived
  491.      */
  492.     STDMETHOD_(INT32, GetNumPropsByName) (THIS_
  493. const char* pName) const PURE;
  494.     /************************************************************************
  495.      *  Method:
  496.      *      IRMAPNRegistry::GetNumPropsById
  497.      *  Purpose:
  498.      *      Returns the count of the number of Properties under the one 
  499.      *  whose unique id is specified in "ulId".
  500.      *
  501.      *  ulId - IN - unique id of the Property whose number of children is 
  502.      *              to be retreived
  503.      */
  504.     STDMETHOD_(INT32, GetNumPropsById) (THIS_
  505. const UINT32 ulId) const PURE;
  506. };
  507. /*
  508.  * 
  509.  *  Interface:
  510.  *
  511.  * IRMAPropWatch
  512.  *
  513.  *  Purpose:
  514.  *
  515.  *      This interface allows the user to watch properties so that when
  516.  *  changes happen to the properties the plugins receive notification via
  517.  *  the IRMAPropWatchResponse API.
  518.  *
  519.  *  IID_IRMAPropWatch:
  520.  *
  521.  * {00000601-0901-11d1-8B06-00A024406D59}
  522.  *
  523.  */
  524. DEFINE_GUID(IID_IRMAPropWatch, 0x00000601, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  525. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  526. #undef  INTERFACE
  527. #define INTERFACE   IRMAPropWatch
  528. DECLARE_INTERFACE_(IRMAPropWatch, IUnknown)
  529. {
  530.     /*
  531.      * IUnknown methods
  532.      */
  533.     STDMETHOD(QueryInterface) (THIS_
  534. REFIID riid,
  535. void** ppvObj) PURE;
  536.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  537.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  538.     /*
  539.      * IRMAPropWatch methods
  540.      */
  541.     /************************************************************************
  542.      *  Method:
  543.      *      IRMAPropWatch::Init
  544.      *  Purpose:
  545.      *      Initialize with the response object so that the Watch
  546.      *  notifications can be sent back to the respective plugins.
  547.      *
  548.      *  pResponse - IN - pointer to the response object which gets used to
  549.      *                   initialize the IRMAPropWatch object. the response
  550.      *                   object gets AddRef'd in the Init method.
  551.      */
  552.     STDMETHOD(Init) (THIS_
  553. IRMAPropWatchResponse* pResponse) PURE;
  554.     /************************************************************************
  555.      *  Method:
  556.      *      IRMAPropWatch::SetWatchOnRoot
  557.      *  Purpose:
  558.      *      The SetWatch method puts a watch at the highest level of
  559.      *  the registry hierarchy. It notifies ONLY IF properties at THIS LEVEL
  560.      *  get added/modified/deleted.
  561.      */
  562.     STDMETHOD_(UINT32, SetWatchOnRoot) (THIS) PURE;
  563.     /************************************************************************
  564.      *  Method:
  565.      *      IRMAPropWatch::SetWatchByName
  566.      *  Purpose:
  567.      *      Sets a watch-point on the Property whose name is passed in.
  568.      *  In case the mentioned Property gets modified or deleted a
  569.      *  notification of that will be sent to the object which set the
  570.      *  watch-point.
  571.      *
  572.      *  pName - IN - name of Property on which a watch point is to be added
  573.      */
  574.     STDMETHOD_(UINT32, SetWatchByName) (THIS_
  575. const char* pName) PURE;
  576.     /************************************************************************
  577.      *  Method:
  578.      *      IRMAPropWatch::SetWatchById
  579.      *  Purpose:
  580.      *      Sets a watch-point on the Property whose name is passed in.
  581.      *  In case the mentioned Property gets modified or deleted a
  582.      *  notification of that will be sent to the object which set the
  583.      *  watch-point.
  584.      *
  585.      *  ulId - IN - unique id of Property on which a watch point is to be 
  586.      *              added
  587.      */
  588.     STDMETHOD_(UINT32, SetWatchById) (THIS_
  589. const UINT32 ulId) PURE;
  590.     /************************************************************************
  591.      *  Method:
  592.      *      IRMAPropWatch::ClearWatchOnRoot
  593.      *  Purpose:
  594.      *      It clears the watch on the root of the registry.
  595.      */
  596.     STDMETHOD(ClearWatchOnRoot) (THIS) PURE;
  597.     /************************************************************************
  598.      *  Method:
  599.      *      IRMAPropWatch::ClearWatchByName
  600.      *  Purpose:
  601.      *      Clears a watch-point based on the Property's name.
  602.      *
  603.      *  pName - IN - name of Property whose watch point is to be cleared
  604.      */
  605.     STDMETHOD(ClearWatchByName) (THIS_
  606. const char* pName) PURE;
  607.     /************************************************************************
  608.      *  Method:
  609.      *      IRMAPropWatch::ClearWatchById
  610.      *  Purpose:
  611.      *      Clears a watch-point based on the Property's id.
  612.      *
  613.      *  ulId - IN - unique id of Property whose watch point is to be cleared
  614.      */
  615.     STDMETHOD(ClearWatchById) (THIS_
  616. const UINT32 ulId) PURE;
  617. };
  618. /*
  619.  * 
  620.  *  Interface:
  621.  *
  622.  * IRMAPropWatchResponse
  623.  *
  624.  *  Purpose:
  625.  *
  626.  * Interface for notification of additions/modifications/deletions of
  627.  *  properties in the registry which are being watched.
  628.  *
  629.  *  IID_IRMAPropWatchResponse:
  630.  *
  631.  * {00000602-0901-11d1-8B06-00A024406D59}
  632.  *
  633.  */
  634. DEFINE_GUID(IID_IRMAPropWatchResponse, 0x00000602, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  635. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  636. #undef  INTERFACE
  637. #define INTERFACE   IRMAPropWatchResponse
  638. DECLARE_INTERFACE_(IRMAPropWatchResponse, IUnknown)
  639. {
  640.     /*
  641.      * IUnknown methods
  642.      */
  643.     STDMETHOD(QueryInterface) (THIS_
  644. REFIID riid,
  645. void** ppvObj) PURE;
  646.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  647.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  648.     /*
  649.      * IRMAPropWatchResponse methods
  650.      */
  651.     /************************************************************************
  652.      *  Method:
  653.      *      IRMAPropWatchResponse::AddedProp
  654.      *  Purpose:
  655.      *      Gets called when a new Property gets added under the Property 
  656.      *  on which the Watch was set. It passes the id of the Property just 
  657.      *  added, its datatype and the id of its immediate parent COMPOSITE 
  658.      *  property.
  659.      */
  660.     STDMETHOD(AddedProp) (THIS_
  661. const UINT32 ulId,
  662. const RMAPropType    propType,
  663. const UINT32 ulParentID) PURE;
  664.     /************************************************************************
  665.      *  Method:
  666.      *      IRMAPropWatchResponse::ModifiedProp
  667.      *  Purpose:
  668.      *      Gets called when a watched Property gets modified. It passes
  669.      *  the id of the Property just modified, its datatype and the
  670.      *  id of its immediate parent COMPOSITE property.
  671.      */
  672.     STDMETHOD(ModifiedProp) (THIS_
  673. const UINT32 ulId,
  674. const RMAPropType    propType,
  675. const UINT32 ulParentID) PURE;
  676.     /************************************************************************
  677.      *  Method:
  678.      *      IRMAPropWatchResponse::DeletedProp
  679.      *  Purpose:
  680.      *      Gets called when a watched Property gets deleted. As can be
  681.      *  seen, it returns the id of the Property just deleted and
  682.      *  its immediate parent COMPOSITE property.
  683.      */
  684.     STDMETHOD(DeletedProp) (THIS_
  685. const UINT32 ulId,
  686. const UINT32 ulParentID) PURE;
  687. };
  688. /*
  689.  * 
  690.  *  Interface:
  691.  *
  692.  * IRMAActiveRegistry
  693.  *
  694.  *  Purpose:
  695.  *
  696.  * Interface to get IRMAActiveUser responsible for a particular property 
  697.  *  from the registry.
  698.  *
  699.  *  IID_IRMAActiveRegistry:
  700.  *
  701.  * {00000603-0901-11d1-8B06-00A024406D59}
  702.  *
  703.  */
  704. DEFINE_GUID(IID_IRMAActiveRegistry, 0x00000603, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  705. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  706. #undef  INTERFACE
  707. #define INTERFACE   IRMAActiveRegistry
  708. DECLARE_INTERFACE_(IRMAActiveRegistry, IUnknown)
  709. {
  710.     /*
  711.      * IUnknown methods
  712.      */
  713.     STDMETHOD(QueryInterface) (THIS_
  714. REFIID riid,
  715. void** ppvObj) PURE;
  716.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  717.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  718.     /************************************************************************
  719.     * IRMAActiveRegistry::SetAsActive
  720.     *
  721.     *     Method to set prop pName to active and register pUser as
  722.     *   the active prop user.
  723.     */
  724.     STDMETHOD(SetAsActive)    (THIS_
  725. const char* pName,
  726. IRMAActivePropUser* pUser) PURE;
  727.     /************************************************************************
  728.     * IRMAActiveRegistry::SetAsInactive
  729.     *
  730.     * Method to remove an IRMAActiveUser from Prop activation.
  731.     */
  732.     STDMETHOD(SetAsInactive)  (THIS_
  733. const char* pName,
  734. IRMAActivePropUser* pUser) PURE;
  735.     /************************************************************************
  736.     * IRMAActiveRegistry::IsActive
  737.     *
  738.     *     Tells if prop pName has an active user that must be queried to
  739.     *   change the value, or if it can just be set.
  740.     */
  741.     STDMETHOD_(BOOL, IsActive) (THIS_
  742. const char* pName) PURE;
  743.     /************************************************************************
  744.     * IRMAActiveRegistry::SetActiveInt
  745.     *
  746.     *    Async request to set int pName to ul.
  747.     */
  748.     STDMETHOD(SetActiveInt) (THIS_
  749.     const char* pName,
  750.     UINT32 ul,
  751.     IRMAActivePropUserResponse* pResponse) PURE;
  752.     /************************************************************************
  753.     * IRMAActiveRegistry::SetActiveStr
  754.     *
  755.     *    Async request to set string pName to string in pBuffer.
  756.     */
  757.     STDMETHOD(SetActiveStr) (THIS_
  758.     const char* pName,
  759.     IRMABuffer* pBuffer,
  760.     IRMAActivePropUserResponse* pResponse) PURE;
  761.     /************************************************************************
  762.     * IRMAActiveRegistry::SetActiveBuf
  763.     *
  764.     *    Async request to set buffer pName to buffer in pBuffer.
  765.     */
  766.     STDMETHOD(SetActiveBuf) (THIS_
  767. const char* pName,
  768. IRMABuffer* pBuffer,
  769. IRMAActivePropUserResponse* pResponse) PURE;
  770.     /************************************************************************
  771.     * IRMAActiveRegistry::DeleteActiveProp
  772.     *
  773.     * Async request to delete the active property.
  774.     */
  775.     STDMETHOD(DeleteActiveProp) (THIS_
  776. const char* pName,
  777. IRMAActivePropUserResponse* pResponse) PURE;
  778. };
  779. /*
  780.  * 
  781.  *  Interface:
  782.  *
  783.  * IRMAActivePropUser
  784.  *
  785.  *  Purpose:
  786.  *
  787.  * An IRMAActivePropUser can be set as the active user of a property in 
  788.  *  an IRMAActiveRegistry. This causes the IRMAActivePropUser to be consulted 
  789.  *  everytime someone wants to change a property. The difference between this 
  790.  *  and a prop watch is that this is async, and can call a done method with 
  791.  *  failure to cause the prop to not be set, and this get called instead of 
  792.  *  calling into the IRMAPNReg.
  793.  *
  794.  *  IID_IRMAActivePropUser:
  795.  *
  796.  * {00000604-0901-11d1-8B06-00A024406D59}
  797.  *
  798.  */
  799. DEFINE_GUID(IID_IRMAActivePropUser, 0x00000604, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  800. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  801. #undef  INTERFACE
  802. #define INTERFACE   IRMAActivePropUser
  803. DECLARE_INTERFACE_(IRMAActivePropUser, 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.     * IRMAActivePropUser::SetActiveInt
  815.     *
  816.     *    Async request to set int pName to ul.
  817.     */
  818.     STDMETHOD(SetActiveInt) (THIS_
  819.     const char* pName,
  820.     UINT32 ul,
  821.     IRMAActivePropUserResponse* pResponse) PURE;
  822.     /************************************************************************
  823.     * IRMAActivePropUser::SetActiveStr
  824.     *
  825.     *    Async request to set string pName to string in pBuffer.
  826.     */
  827.     STDMETHOD(SetActiveStr) (THIS_
  828.     const char* pName,
  829.     IRMABuffer* pBuffer,
  830.     IRMAActivePropUserResponse* pResponse) PURE;
  831.     /************************************************************************
  832.     * IRMAActivePropUser::SetActiveBuf
  833.     *
  834.     *    Async request to set buffer pName to buffer in pBuffer.
  835.     */
  836.     STDMETHOD(SetActiveBuf) (THIS_
  837. const char* pName,
  838. IRMABuffer* pBuffer,
  839. IRMAActivePropUserResponse* pResponse) PURE;
  840.     /************************************************************************
  841.     * IRMAActivePropUser::DeleteActiveProp
  842.     *
  843.     * Async request to delete the active property.
  844.     */
  845.     STDMETHOD(DeleteActiveProp) (THIS_
  846. const char* pName,
  847. IRMAActivePropUserResponse* pResponse) PURE;
  848. };
  849. /*
  850.  * 
  851.  *  Interface:
  852.  *
  853.  * IRMAActivePropUserResponse
  854.  *
  855.  *  Purpose:
  856.  *
  857.  * Gets responses from IRMAActivePropUser for queries to set properties
  858.  *  in the IRMAActiveRegistry.
  859.  *
  860.  *
  861.  *  IID_IRMAActivePropUserResponse:
  862.  *
  863.  * {00000605-0901-11d1-8B06-00A024406D59}
  864.  *
  865.  */
  866. DEFINE_GUID(IID_IRMAActivePropUserResponse, 0x00000605, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  867. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  868. #undef  INTERFACE
  869. #define INTERFACE   IRMAActivePropUserResponse
  870. DECLARE_INTERFACE_(IRMAActivePropUserResponse, IUnknown)
  871. {
  872.     /*
  873.      * IUnknown methods
  874.      */
  875.     STDMETHOD(QueryInterface) (THIS_
  876. REFIID riid,
  877. void** ppvObj) PURE;
  878.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  879.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  880.     /************************************************************************
  881.     * Called with status result on completion of set request.
  882.     */
  883.     STDMETHOD(SetActiveIntDone)   (THIS_
  884.     PN_RESULT res,
  885.     const char* pName,
  886.     UINT32 ul,
  887.     IRMABuffer* pInfo[],
  888.     UINT32 ulNumInfo) PURE;
  889.     STDMETHOD(SetActiveStrDone)   (THIS_
  890.     PN_RESULT res,
  891.     const char* pName,
  892.     IRMABuffer* pBuffer,
  893.     IRMABuffer* pInfo[],
  894.     UINT32 ulNumInfo) PURE;
  895.     STDMETHOD(SetActiveBufDone)   (THIS_
  896.     PN_RESULT res,
  897.     const char* pName,
  898.     IRMABuffer* pBuffer,
  899.     IRMABuffer* pInfo[],
  900.     UINT32 ulNumInfo) PURE;
  901.     STDMETHOD(DeleteActivePropDone) (THIS_
  902.     PN_RESULT res,
  903.     const char* pName,
  904.     IRMABuffer* pInfo[],
  905.     UINT32 ulNumInfo) PURE;
  906. };
  907. /*
  908.  * 
  909.  *  Interface:
  910.  *
  911.  * IRMACopyRegistry
  912.  *
  913.  *  Purpose:
  914.  *
  915.  * Allows copying from one registry key to another.
  916.  *
  917.  *
  918.  *  IID_IRMACopyRegistry
  919.  *
  920.  * {00000606-0901-11d1-8B06-00A024406D59}
  921.  *
  922.  */
  923. DEFINE_GUID(IID_IRMACopyRegistry, 0x00000606, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  924. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  925. #undef  INTERFACE
  926. #define INTERFACE   IRMACopyRegistry
  927. DECLARE_INTERFACE_(IRMACopyRegistry, 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.     * IRMACopyRegistry::Copy
  939.     *
  940.     *   Here it is! The "Copy" method!
  941.     */
  942.     STDMETHOD (CopyByName)  (THIS_
  943.     const char* pFrom,
  944.     const char* pTo) PURE;
  945. };
  946. /*
  947.  * 
  948.  *  Interface:
  949.  *
  950.  * IRMAPNRegistryAltStringHandling
  951.  *
  952.  *  Purpose:
  953.  *
  954.  * Tells the registry about alternate handling of PT_STRING types.
  955.  *
  956.  *
  957.  *  IID_IRMAPNRegistryAltStringHandling
  958.  *
  959.  * {00000607-0901-11d1-8B06-00A024406D59}
  960.  *
  961.  */
  962. DEFINE_GUID(IID_IRMAPNRegistryAltStringHandling, 0x00000607, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  963. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  964. #undef  INTERFACE
  965. #define INTERFACE   IRMAPNRegistryAltStringHandling
  966. DECLARE_INTERFACE_(IRMAPNRegistryAltStringHandling, IUnknown)
  967. {
  968.     /*
  969.      * IUnknown methods
  970.      */
  971.     STDMETHOD(QueryInterface) (THIS_
  972. REFIID riid,
  973. void** ppvObj) PURE;
  974.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  975.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  976.     /************************************************************************
  977.     * IRMAPNRegistryAltStringHandling::SetStringAccessAsBufferById
  978.     *
  979.     *   For those times when you added a property as a buffer, but wish it
  980.     *   were a string (and of course, people now rely on the fact that it's
  981.     *   a buffer)...  Create the property as a string and then pass this
  982.     *   method it's ID.  The property will now be accessible/setable as a,
  983.     *   but it will still be a string!
  984.     */
  985.     STDMETHOD (SetStringAccessAsBufferById)  (THIS_
  986.       UINT32 ulId) PURE;
  987. };
  988. #endif /* _RMAMON_H_ */