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

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 _HXMON_H_
  36. #define _HXMON_H_
  37. #include "hlxclib/limits.h"
  38. typedef _INTERFACE IUnknown IUnknown;
  39. typedef _INTERFACE IHXPlugin IHXPlugin;
  40. typedef _INTERFACE IHXBuffer IHXBuffer;
  41. typedef _INTERFACE IHXValues IHXValues;
  42. typedef _INTERFACE IHXPropWatch IHXPropWatch;
  43. typedef _INTERFACE IHXPropWatchResponse IHXPropWatchResponse;
  44. typedef _INTERFACE IHXActiveRegistry IHXActiveRegistry;
  45. typedef _INTERFACE IHXActivePropUser IHXActivePropUser;
  46. typedef _INTERFACE IHXActivePropUserResponse IHXActivePropUserResponse;
  47. typedef _INTERFACE IHXRegistryAltStringHandling IHXRegistryAltStringHandling;
  48. /*
  49.  * Types of the values stored in the registry.
  50.  */
  51. typedef enum _HXPropType
  52. {
  53.     PT_UNKNOWN,
  54.     PT_COMPOSITE, /* Contains other values (elements)      */
  55.     PT_INTEGER, /* 32-bit signed value      */
  56.     PT_INTREF, /* Integer reference object -- 32-bit signed integer */
  57.     PT_STRING, /* Signed char* value      */
  58.     PT_BUFFER, /* IHXBuffer object      */
  59.     /*IHXRegistry2: */
  60.     PT_INTEGER64, /* 64-bit signed value      */
  61.     PT_INT64REF  /* Integer reference object -- 64-bit signed integer */
  62. } HXPropType;
  63. /*
  64.  * 
  65.  *  Interface:
  66.  *
  67.  * IHXRegistry
  68.  *
  69.  *  Purpose:
  70.  *
  71.  * This inteface provides access to the "Registry" in the server and
  72.  * client.  The "Registry" is a hierarchical structure of Name/Value
  73.  * pairs (properties) which is capable of storing many different types
  74.  * of data including strings, buffers, and integers.  The registry
  75.  * provides various types of information including statistics,
  76.  * configuration information, and system status.
  77.  *
  78.  * Note:  This registry is not related to the Windows system registry.
  79.  *
  80.  *  IID_IHXRegistry:
  81.  *
  82.  * {00000600-0901-11d1-8B06-00A024406D59}
  83.  *
  84.  */
  85. DEFINE_GUID(IID_IHXRegistry, 0x00000600, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  86. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  87. #define CLSID_IHXRegistry IID_IHXRegistry
  88. #undef  INTERFACE
  89. #define INTERFACE   IHXRegistry
  90. DECLARE_INTERFACE_(IHXRegistry, IUnknown)
  91. {
  92.     /*
  93.      * IUnknown methods
  94.      */
  95.     STDMETHOD(QueryInterface) (THIS_
  96. REFIID riid,
  97. void** ppvObj) PURE;
  98.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  99.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  100.     /*
  101.      * IHXRegistry methods
  102.      */
  103.     /************************************************************************
  104.      *  Method:
  105.      *      IHXRegistry::CreatePropWatch
  106.      *  Purpose:
  107.      *      Create a new IHXPropWatch object which can then be queried for 
  108.      *  the right kind of IHXPropWatch object.
  109.      *
  110.      *  pPropWatch - OUT - returns a new addref'ed IHXPropWatch object 
  111.      */
  112.     STDMETHOD(CreatePropWatch) (THIS_
  113. REF(IHXPropWatch*) pPropWatch) PURE;
  114.     /************************************************************************
  115.      *  Method:
  116.      *      IHXRegistry::AddComp
  117.      *  Purpose:
  118.      *      Add a COMPOSITE property to the registry and return its ID
  119.      *  if successful. It returns ZERO (0) if an error occurred
  120.      *  during the operation.
  121.      *
  122.      *  pName - IN - name of the Property that is going to be added to 
  123.      *               the registry
  124.      */
  125.     STDMETHOD_(UINT32, AddComp) (THIS_
  126. const char* pName) PURE;
  127.     /************************************************************************
  128.      *  Method:
  129.      *      IHXRegistry::AddInt
  130.      *  Purpose:
  131.      *      Add an INTEGER property with name in "pName" and value in 
  132.      *  "iValue" to the registry. The return value is the id to
  133.      *  the newly added Property or ZERO if there was an error.
  134.      *
  135.      *  pName - IN - name of the Property that is going to be added to 
  136.      *               the registry
  137.      *  nValue - IN - integer value of the Property that is going to be 
  138.      *                added to the registry
  139.      */
  140.     STDMETHOD_(UINT32, AddInt) (THIS_
  141. const char* pName, 
  142. const INT32 nValue) PURE;
  143.     /************************************************************************
  144.      *  Method:
  145.      *      IHXRegistry::GetIntByName
  146.      *  Purpose:
  147.      *      Retreive an INTEGER value from the registry given its Property
  148.      *  name "pName". If the Property is found, it will return HXR_OK, 
  149.      *  otherwise it returns HXR_FAIL.
  150.      *
  151.      *  pName - IN - name of the Property whose value is to be retreived
  152.      *  nValue - OUT - parameter into which the value of the Property is 
  153.      *                 going to be returned
  154.      */
  155.     STDMETHOD(GetIntByName) (THIS_
  156. const char* pName,
  157. REF(INT32) nValue) const PURE;
  158.     /************************************************************************
  159.      *  Method:
  160.      *      IHXRegistry::GetIntById
  161.      *  Purpose:
  162.      *      Retreive an INTEGER value from the registry given its id "ulId". 
  163.      *  If the Property is found, it will return HXR_OK, otherwise it 
  164.      *  returns HXR_FAIL.
  165.      *
  166.      *  ulId - IN - unique id of the Property whose value is to be retreived
  167.      *  nValue - OUT - parameter into which the value of the Property is 
  168.      *                 going to be returned
  169.      */
  170.     STDMETHOD(GetIntById) (THIS_
  171. const UINT32 ulId,
  172. REF(INT32) nValue) const PURE;
  173.     /************************************************************************
  174.      *  Method:
  175.      *      IHXRegistry::SetIntByName
  176.      *  Purpose:
  177.      *      Modify a Property's INTEGER value in the registry given the
  178.      *  Property's name "pName". If the value was set, it will return HXR_OK, 
  179.      *  otherwise it returns HXR_FAIL.
  180.      *
  181.      *  pName - IN - name of the Property whose value is to be set
  182.      *  nValue - IN - the new value of the Property which is going to be set
  183.      */
  184.     STDMETHOD(SetIntByName) (THIS_
  185. const char* pName, 
  186. const INT32 nValue) PURE;
  187.     /************************************************************************
  188.      *  Method:
  189.      *      IHXRegistry::SetIntById
  190.      *  Purpose:
  191.      *      Modify a Property's INTEGER value in the registry given the
  192.      *  its id "id". If the value was set, it will return HXR_OK, otherwise 
  193.      *  it returns HXR_FAIL.
  194.      *
  195.      *  ulId - IN - unique id of the Property whose value is to be set
  196.      *  nValue - IN - the new value of the Property which is going to be set
  197.      */
  198.     STDMETHOD(SetIntById) (THIS_
  199. const UINT32 id,
  200. const INT32 nValue) PURE;
  201.     /************************************************************************
  202.      *  Method:
  203.      *      IHXRegistry::AddStr
  204.      *  Purpose:
  205.      *      Add an STRING property with name in "pName" and value in 
  206.      *  "pValue" to the registry.
  207.      *
  208.      *  pName - IN - name of the Property that is going to be added to 
  209.      *               the registry
  210.      *  pValue - IN - buffer value of the Property that is going to be 
  211.      *                added to the registry
  212.      */
  213.     STDMETHOD_(UINT32, AddStr) (THIS_
  214. const char* pName, 
  215. IHXBuffer* pValue) PURE;
  216.     /************************************************************************
  217.      *  Method:
  218.      *      IHXRegistry::GetStrByName
  219.      *  Purpose:
  220.      *      Retreive an STRING value from the registry given its Property
  221.      *  name "pName". If the Property is found, it will return HXR_OK, 
  222.      *  otherwise it returns HXR_FAIL.
  223.      *
  224.      *  pName - IN - name of the Property whose value is to be retreived
  225.      *  pValue - OUT - parameter into which the value of the Property is 
  226.      *                 going to be returned
  227.      */
  228.     STDMETHOD(GetStrByName) (THIS_
  229. const char*  pName,
  230. REF(IHXBuffer*) pValue) const PURE;
  231.     /************************************************************************
  232.      *  Method:
  233.      *      IHXRegistry::GetStrById
  234.      *  Purpose:
  235.      *      Retreive an STRING value from the registry given its id "ulId". 
  236.      *  If the Property is found, it will return HXR_OK, otherwise it 
  237.      *  returns HXR_FAIL.
  238.      *
  239.      *  ulId - IN - unique id of the Property whose value is to be retreived
  240.      *  pValue - OUT - parameter into which the value of the Property is 
  241.      *                 going to be returned
  242.      */
  243.     STDMETHOD(GetStrById) (THIS_
  244. const UINT32  ulId,
  245. REF(IHXBuffer*) pValue) const PURE;
  246.     /************************************************************************
  247.      *  Method:
  248.      *      IHXRegistry::SetStrByName
  249.      *  Purpose:
  250.      *      Modify a Property's STRING value in the registry given the
  251.      *  Property's name "pName". If the value was set, it will return 
  252.      *  HXR_OK, otherwise it returns HXR_FAIL.
  253.      *
  254.      *  pName - IN - name of the Property whose value is to be set
  255.      *  pValue - IN - the new value of the Property which is going to be set
  256.      */
  257.     STDMETHOD(SetStrByName) (THIS_
  258. const char* pName, 
  259. IHXBuffer* pValue) PURE;
  260.     /************************************************************************
  261.      *  Method:
  262.      *      IHXRegistry::SetStrById
  263.      *  Purpose:
  264.      *      Modify a Property's STRING value in the registry given the
  265.      *  its id "ulId". If the value was set, it will return HXR_OK, 
  266.      *  otherwise it returns HXR_FAIL.
  267.      *
  268.      *  ulId - IN - unique id of the Property whose value is to be set
  269.      *  pValue - IN - the new value of the Property which is going to be set
  270.      */
  271.     STDMETHOD(SetStrById) (THIS_
  272. const UINT32 ulId,
  273. IHXBuffer* pValue) PURE;
  274.     /************************************************************************
  275.      *  Method:
  276.      *      IHXRegistry::AddBuf
  277.      *  Purpose:
  278.      *      Add an BUFFER property with name in "pName" and value in 
  279.      *  "pValue" to the registry.
  280.      *
  281.      *  pName - IN - name of the Property that is going to be added to 
  282.      *               the registry
  283.      *  pValue - IN - buffer value of the Property that is going to be 
  284.      *                added to the registry
  285.      */
  286.     STDMETHOD_(UINT32, AddBuf) (THIS_
  287. const char* pName, 
  288. IHXBuffer* pValue) PURE;
  289.     /************************************************************************
  290.      *  Method:
  291.      *      IHXRegistry::GetBufByName
  292.      *  Purpose:
  293.      *      Retreive the BUFFER from the registry given its Property name 
  294.      *  "pName". If the Property is found, it will return HXR_OK, otherwise 
  295.      *  it returns HXR_FAIL.
  296.      *
  297.      *  pName - IN - name of the Property whose value is to be retreived
  298.      *  pValue - OUT - parameter into which the value of the Property is 
  299.      *                 going to be returned
  300.      */
  301.     STDMETHOD(GetBufByName) (THIS_
  302. const char*  pName,
  303. REF(IHXBuffer*) pValue) const PURE;
  304.     /************************************************************************
  305.      *  Method:
  306.      *      IHXRegistry::GetBufById
  307.      *  Purpose:
  308.      *      Retreive the BUFFER from the registry given its id "ulId". If the 
  309.      *  Property is found, it will return HXR_OK, otherwise it returns 
  310.      *  HXR_FAIL.
  311.      *
  312.      *  ulId - IN - unique id of the Property whose value is to be retreived
  313.      *  pValue - OUT - parameter into which the value of the Property is 
  314.      *                 going to be returned
  315.      */
  316.     STDMETHOD(GetBufById) (THIS_
  317. const UINT32  ulId,
  318. REF(IHXBuffer*) pValue) const PURE;
  319.     /************************************************************************
  320.      *  Method:
  321.      *      IHXRegistry::SetBufByName
  322.      *  Purpose:
  323.      *      Modify a Property's BUFFER in the registry given the
  324.      *  Property's name "pName". If the value was set, it will return 
  325.      *  HXR_OK, otherwise it returns HXR_FAIL.
  326.      *
  327.      *  pName - IN - name of the Property whose value is to be set
  328.      *  pValue - IN - the new value of the Property which is going to be set
  329.      */
  330.     STDMETHOD(SetBufByName) (THIS_
  331. const char* pName, 
  332. IHXBuffer* pValue) PURE;
  333.     /************************************************************************
  334.      *  Method:
  335.      *      IHXRegistry::SetBufById
  336.      *  Purpose:
  337.      *      Modify a Property's BUFFER in the registry given its id "ulId". 
  338.      *  If the value was set, it will return HXR_OK, otherwise it returns 
  339.      *  HXR_FAIL.
  340.      *
  341.      *  ulId - IN - unique id of the Property whose value is to be set
  342.      *  pValue - IN - the new value of the Property which is going to be set
  343.      */
  344.     STDMETHOD(SetBufById) (THIS_
  345. const UINT32 ulId,
  346. IHXBuffer* pValue) PURE;
  347.     /************************************************************************
  348.      *  Method:
  349.      *      IHXRegistry::AddIntRef
  350.      *  Purpose:
  351.      *      Add an INTEGER REFERENCE property with name in "pName" and 
  352.      *  value in "iValue" to the registry. This property allows the user
  353.      *  to modify its contents directly, without having to go through the
  354.      *  registry.
  355.      *
  356.      *  pName - IN - name of the Property that is going to be added to 
  357.      *               the registry
  358.      *  pValue - IN - the pointer of the integer value is what gets stored
  359.      *                in the registry as the Interger Reference Property's 
  360.      *                value
  361.      */
  362.     STDMETHOD_(UINT32, AddIntRef) (THIS_
  363. const char* pName, 
  364. INT32* pValue) PURE;
  365.     /************************************************************************
  366.      *  Method:
  367.      *      IHXRegistry::DeleteByName
  368.      *  Purpose:
  369.      *      Delete a Property from the registry using its name "pName".
  370.      *
  371.      *  pName - IN - name of the Property that is going to be deleted
  372.      */
  373.     STDMETHOD_(UINT32, DeleteByName) (THIS_
  374. const char* pName) PURE;
  375.     /************************************************************************
  376.      *  Method:
  377.      *      IHXRegistry::DeleteById
  378.      *  Purpose:
  379.      *      Delete a Property from the registry using its id "ulId".
  380.      *
  381.      *  ulId - IN - unique id of the Property that is going to be deleted
  382.      */
  383.     STDMETHOD_(UINT32, DeleteById) (THIS_
  384. const UINT32 ulId) PURE;
  385.     /************************************************************************
  386.      *  Method:
  387.      *      IHXRegistry::GetTypeByName
  388.      *  Purpose:
  389.      *      Returns the datatype of the Property given its name "pName".
  390.      *
  391.      *  pName - IN - name of the Property whose type is to be retreived
  392.      */
  393.     STDMETHOD_(HXPropType, GetTypeByName) (THIS_
  394. const char* pName) const PURE;
  395.     /************************************************************************
  396.      *  Method:
  397.      *      IHXRegistry::GetTypeById
  398.      *  Purpose:
  399.      *      Returns the datatype of the Property given its its id "ulId".
  400.      *
  401.      *  ulId - IN - unique id of the Property whose type is to be retreived
  402.      */
  403.     STDMETHOD_(HXPropType, GetTypeById) (THIS_
  404. const UINT32 ulId) const PURE;
  405.     /************************************************************************
  406.      *  Method:
  407.      *      IHXRegistry::FindParentIdByName
  408.      *  Purpose:
  409.      *      Returns the id value of the parent node of the Property whose 
  410.      *  name "pName" has been passed in. If it fails, a ZERO value is 
  411.      *  returned.
  412.      *
  413.      *  pName - IN - name of the Property whose parent's unique id is to be
  414.      *               retreived
  415.      */
  416.     STDMETHOD_(UINT32, FindParentIdByName) (THIS_
  417. const char* pName) const PURE;
  418.     /************************************************************************
  419.      *  Method:
  420.      *      IHXRegistry::FindParentIdById
  421.      *  Purpose:
  422.      *      Returns the id value of the parent node of the Property whose 
  423.      *  id "ulId" has been passed in. If it fails, a ZERO value is returned.
  424.      *
  425.      *  ulId - IN - unique id of the Property whose parent's id is to be
  426.      *              retreived
  427.      */
  428.     STDMETHOD_(UINT32, FindParentIdById) (THIS_
  429. const UINT32 ulId) const PURE;
  430.     /************************************************************************
  431.      *  Method:
  432.      *      HXRegistry::GetPropName
  433.      *  Purpose:
  434.      *      Returns the Property name in the pName char buffer passed
  435.      *  as a parameter, given the Property's id "ulId".
  436.      *
  437.      *  ulId - IN - unique id of the Property whose name is to be retreived
  438.      *  pName - OUT - parameter into which the Property name is going to be
  439.      *                returned
  440.      */
  441.     STDMETHOD(GetPropName) (THIS_
  442. const UINT32 ulId,
  443. REF(IHXBuffer*) pName) const PURE;
  444.     /************************************************************************
  445.      *  Method:
  446.      *      HXRegistry::GetId
  447.      *  Purpose:
  448.      *      Returns the Property's id given the Property name.
  449.      *
  450.      *  pName - IN - name of the Property whose unique id is to be 
  451.      *               retreived
  452.      */
  453.     STDMETHOD_(UINT32, GetId) (THIS_
  454. const char* pName) const PURE;
  455.     /************************************************************************
  456.      *  Method:
  457.      *      IHXRegistry::GetPropListOfRoot
  458.      *  Purpose:
  459.      *      Returns an array of a Properties under the root level of the 
  460.      *  registry's hierarchy.
  461.      *
  462.      *  pValues - OUT - list of property name and unique id at the 
  463.      *                  highest level (root) in the registry
  464.      */
  465.     STDMETHOD(GetPropListOfRoot)  (THIS_
  466. REF(IHXValues*) pValues) const PURE;
  467.     /************************************************************************
  468.      *  Method:
  469.      *      IHXRegistry::GetPropListByName
  470.      *  Purpose:
  471.      *      Returns an array of Properties immediately under the one whose
  472.      *  name is passed in "pName".
  473.      *
  474.      *  pName - IN - name of the Property whose child property list is to be
  475.      *               retreived
  476.      *  pValues - OUT - list of property name and unique id under the 
  477.      *                  Property whose name is in "pName"
  478.      */
  479.     STDMETHOD(GetPropListByName)  (THIS_
  480.  const char* pName,
  481.  REF(IHXValues*) pValues) const PURE;
  482.     /************************************************************************
  483.      *  Method:
  484.      *      IHXRegistry::GetPropListById
  485.      *  Purpose:
  486.      *      Returns an array of Properties immediately under the one whose
  487.      *  id is passed in "ulId".
  488.      *
  489.      *  ulId - IN - unique id of the Property whose child property list is 
  490.      *              to be retreived
  491.      *  pValues - OUT - list of property name and unique id under the 
  492.      *                  Property whose is is in "ulId"
  493.      */
  494.     STDMETHOD(GetPropListById)    (THIS_
  495.  const UINT32 ulId,
  496.  REF(IHXValues*) pValues) const PURE;
  497.     /************************************************************************
  498.      *  Method:
  499.      *      IHXRegistry::GetNumPropsAtRoot
  500.      *  Purpose:
  501.      *      Returns the number of Properties at the root of the registry. 
  502.      */
  503.     STDMETHOD_(INT32, GetNumPropsAtRoot) (THIS) const PURE;
  504.     /************************************************************************
  505.      *  Method:
  506.      *      IHXRegistry::GetNumPropsByName
  507.      *  Purpose:
  508.      *      Returns the count of the number of Properties under the one 
  509.      *  whose name is specified in "pName".
  510.      *
  511.      *  pName - IN - name of the Property whose number of children is to be
  512.      *               retreived
  513.      */
  514.     STDMETHOD_(INT32, GetNumPropsByName) (THIS_
  515. const char* pName) const PURE;
  516.     /************************************************************************
  517.      *  Method:
  518.      *      IHXRegistry::GetNumPropsById
  519.      *  Purpose:
  520.      *      Returns the count of the number of Properties under the one 
  521.      *  whose unique id is specified in "ulId".
  522.      *
  523.      *  ulId - IN - unique id of the Property whose number of children is 
  524.      *              to be retreived
  525.      */
  526.     STDMETHOD_(INT32, GetNumPropsById) (THIS_
  527. const UINT32 ulId) const PURE;
  528. };
  529. /*
  530.  * 
  531.  *  Interface:
  532.  *
  533.  * IHXPropWatch
  534.  *
  535.  *  Purpose:
  536.  *
  537.  *      This interface allows the user to watch properties so that when
  538.  *  changes happen to the properties the plugins receive notification via
  539.  *  the IHXPropWatchResponse API.
  540.  *
  541.  *  IID_IHXPropWatch:
  542.  *
  543.  * {00000601-0901-11d1-8B06-00A024406D59}
  544.  *
  545.  */
  546. DEFINE_GUID(IID_IHXPropWatch, 0x00000601, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  547. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  548. #undef  INTERFACE
  549. #define INTERFACE   IHXPropWatch
  550. DECLARE_INTERFACE_(IHXPropWatch, IUnknown)
  551. {
  552.     /*
  553.      * IUnknown methods
  554.      */
  555.     STDMETHOD(QueryInterface) (THIS_
  556. REFIID riid,
  557. void** ppvObj) PURE;
  558.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  559.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  560.     /*
  561.      * IHXPropWatch methods
  562.      */
  563.     /************************************************************************
  564.      *  Method:
  565.      *      IHXPropWatch::Init
  566.      *  Purpose:
  567.      *      Initialize with the response object so that the Watch
  568.      *  notifications can be sent back to the respective plugins.
  569.      *
  570.      *  pResponse - IN - pointer to the response object which gets used to
  571.      *                   initialize the IHXPropWatch object. the response
  572.      *                   object gets AddRef'd in the Init method.
  573.      */
  574.     STDMETHOD(Init) (THIS_
  575. IHXPropWatchResponse* pResponse) PURE;
  576.     /************************************************************************
  577.      *  Method:
  578.      *      IHXPropWatch::SetWatchOnRoot
  579.      *  Purpose:
  580.      *      The SetWatch method puts a watch at the highest level of
  581.      *  the registry hierarchy. It notifies ONLY IF properties at THIS LEVEL
  582.      *  get added/modified/deleted.
  583.      */
  584.     STDMETHOD_(UINT32, SetWatchOnRoot) (THIS) PURE;
  585.     /************************************************************************
  586.      *  Method:
  587.      *      IHXPropWatch::SetWatchByName
  588.      *  Purpose:
  589.      *      Sets a watch-point on the Property whose name is passed in.
  590.      *  In case the mentioned Property gets modified or deleted a
  591.      *  notification of that will be sent to the object which set the
  592.      *  watch-point.
  593.      *
  594.      *  pName - IN - name of Property on which a watch point is to be added
  595.      */
  596.     STDMETHOD_(UINT32, SetWatchByName) (THIS_
  597. const char* pName) PURE;
  598.     /************************************************************************
  599.      *  Method:
  600.      *      IHXPropWatch::SetWatchById
  601.      *  Purpose:
  602.      *      Sets a watch-point on the Property whose name is passed in.
  603.      *  In case the mentioned Property gets modified or deleted a
  604.      *  notification of that will be sent to the object which set the
  605.      *  watch-point.
  606.      *
  607.      *  ulId - IN - unique id of Property on which a watch point is to be 
  608.      *              added
  609.      */
  610.     STDMETHOD_(UINT32, SetWatchById) (THIS_
  611. const UINT32 ulId) PURE;
  612.     /************************************************************************
  613.      *  Method:
  614.      *      IHXPropWatch::ClearWatchOnRoot
  615.      *  Purpose:
  616.      *      It clears the watch on the root of the registry.
  617.      */
  618.     STDMETHOD(ClearWatchOnRoot) (THIS) PURE;
  619.     /************************************************************************
  620.      *  Method:
  621.      *      IHXPropWatch::ClearWatchByName
  622.      *  Purpose:
  623.      *      Clears a watch-point based on the Property's name.
  624.      *
  625.      *  pName - IN - name of Property whose watch point is to be cleared
  626.      */
  627.     STDMETHOD(ClearWatchByName) (THIS_
  628. const char* pName) PURE;
  629.     /************************************************************************
  630.      *  Method:
  631.      *      IHXPropWatch::ClearWatchById
  632.      *  Purpose:
  633.      *      Clears a watch-point based on the Property's id.
  634.      *
  635.      *  ulId - IN - unique id of Property whose watch point is to be cleared
  636.      */
  637.     STDMETHOD(ClearWatchById) (THIS_
  638. const UINT32 ulId) PURE;
  639. };
  640. /*
  641.  * 
  642.  *  Interface:
  643.  *
  644.  * IHXPropWatchResponse
  645.  *
  646.  *  Purpose:
  647.  *
  648.  * Interface for notification of additions/modifications/deletions of
  649.  *  properties in the registry which are being watched.
  650.  *
  651.  *  IID_IHXPropWatchResponse:
  652.  *
  653.  * {00000602-0901-11d1-8B06-00A024406D59}
  654.  *
  655.  */
  656. DEFINE_GUID(IID_IHXPropWatchResponse, 0x00000602, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  657. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  658. #undef  INTERFACE
  659. #define INTERFACE   IHXPropWatchResponse
  660. DECLARE_INTERFACE_(IHXPropWatchResponse, IUnknown)
  661. {
  662.     /*
  663.      * IUnknown methods
  664.      */
  665.     STDMETHOD(QueryInterface) (THIS_
  666. REFIID riid,
  667. void** ppvObj) PURE;
  668.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  669.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  670.     /*
  671.      * IHXPropWatchResponse methods
  672.      */
  673.     /************************************************************************
  674.      *  Method:
  675.      *      IHXPropWatchResponse::AddedProp
  676.      *  Purpose:
  677.      *      Gets called when a new Property gets added under the Property 
  678.      *  on which the Watch was set. It passes the id of the Property just 
  679.      *  added, its datatype and the id of its immediate parent COMPOSITE 
  680.      *  property.
  681.      */
  682.     STDMETHOD(AddedProp) (THIS_
  683. const UINT32 ulId,
  684. const HXPropType    propType,
  685. const UINT32 ulParentID) PURE;
  686.     /************************************************************************
  687.      *  Method:
  688.      *      IHXPropWatchResponse::ModifiedProp
  689.      *  Purpose:
  690.      *      Gets called when a watched Property gets modified. It passes
  691.      *  the id of the Property just modified, its datatype and the
  692.      *  id of its immediate parent COMPOSITE property.
  693.      */
  694.     STDMETHOD(ModifiedProp) (THIS_
  695. const UINT32 ulId,
  696. const HXPropType    propType,
  697. const UINT32 ulParentID) PURE;
  698.     /************************************************************************
  699.      *  Method:
  700.      *      IHXPropWatchResponse::DeletedProp
  701.      *  Purpose:
  702.      *      Gets called when a watched Property gets deleted. As can be
  703.      *  seen, it returns the id of the Property just deleted and
  704.      *  its immediate parent COMPOSITE property.
  705.      */
  706.     STDMETHOD(DeletedProp) (THIS_
  707. const UINT32 ulId,
  708. const UINT32 ulParentID) PURE;
  709. };
  710. /*
  711.  * 
  712.  *  Interface:
  713.  *
  714.  * IHXActiveRegistry
  715.  *
  716.  *  Purpose:
  717.  *
  718.  * Interface to get IHXActiveUser responsible for a particular property 
  719.  *  from the registry.
  720.  *
  721.  *  IID_IHXActiveRegistry:
  722.  *
  723.  * {00000603-0901-11d1-8B06-00A024406D59}
  724.  *
  725.  */
  726. DEFINE_GUID(IID_IHXActiveRegistry, 0x00000603, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  727. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  728. #undef  INTERFACE
  729. #define INTERFACE   IHXActiveRegistry
  730. DECLARE_INTERFACE_(IHXActiveRegistry, IUnknown)
  731. {
  732.     /*
  733.      * IUnknown methods
  734.      */
  735.     STDMETHOD(QueryInterface) (THIS_
  736. REFIID riid,
  737. void** ppvObj) PURE;
  738.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  739.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  740.     /************************************************************************
  741.     * IHXActiveRegistry::SetAsActive
  742.     *
  743.     *     Method to set prop pName to active and register pUser as
  744.     *   the active prop user.
  745.     */
  746.     STDMETHOD(SetAsActive)    (THIS_
  747. const char* pName,
  748. IHXActivePropUser* pUser) PURE;
  749.     /************************************************************************
  750.     * IHXActiveRegistry::SetAsInactive
  751.     *
  752.     * Method to remove an IHXActiveUser from Prop activation.
  753.     */
  754.     STDMETHOD(SetAsInactive)  (THIS_
  755. const char* pName,
  756. IHXActivePropUser* pUser) PURE;
  757.     /************************************************************************
  758.     * IHXActiveRegistry::IsActive
  759.     *
  760.     *     Tells if prop pName has an active user that must be queried to
  761.     *   change the value, or if it can just be set.
  762.     */
  763.     STDMETHOD_(BOOL, IsActive) (THIS_
  764. const char* pName) PURE;
  765.     /************************************************************************
  766.     * IHXActiveRegistry::SetActiveInt
  767.     *
  768.     *    Async request to set int pName to ul.
  769.     */
  770.     STDMETHOD(SetActiveInt) (THIS_
  771.     const char* pName,
  772.     UINT32 ul,
  773.     IHXActivePropUserResponse* pResponse) PURE;
  774.     /************************************************************************
  775.     * IHXActiveRegistry::SetActiveStr
  776.     *
  777.     *    Async request to set string pName to string in pBuffer.
  778.     */
  779.     STDMETHOD(SetActiveStr) (THIS_
  780.     const char* pName,
  781.     IHXBuffer* pBuffer,
  782.     IHXActivePropUserResponse* pResponse) PURE;
  783.     /************************************************************************
  784.     * IHXActiveRegistry::SetActiveBuf
  785.     *
  786.     *    Async request to set buffer pName to buffer in pBuffer.
  787.     */
  788.     STDMETHOD(SetActiveBuf) (THIS_
  789. const char* pName,
  790. IHXBuffer* pBuffer,
  791. IHXActivePropUserResponse* pResponse) PURE;
  792.     /************************************************************************
  793.     * IHXActiveRegistry::DeleteActiveProp
  794.     *
  795.     * Async request to delete the active property.
  796.     */
  797.     STDMETHOD(DeleteActiveProp) (THIS_
  798. const char* pName,
  799. IHXActivePropUserResponse* pResponse) PURE;
  800. };
  801. /*
  802.  * 
  803.  *  Interface:
  804.  *
  805.  * IHXActivePropUser
  806.  *
  807.  *  Purpose:
  808.  *
  809.  * An IHXActivePropUser can be set as the active user of a property in 
  810.  *  an IHXActiveRegistry. This causes the IHXActivePropUser to be consulted 
  811.  *  everytime someone wants to change a property. The difference between this 
  812.  *  and a prop watch is that this is async, and can call a done method with 
  813.  *  failure to cause the prop to not be set, and this get called instead of 
  814.  *  calling into the IHXReg.
  815.  *
  816.  *  IID_IHXActivePropUser:
  817.  *
  818.  * {00000604-0901-11d1-8B06-00A024406D59}
  819.  *
  820.  */
  821. DEFINE_GUID(IID_IHXActivePropUser, 0x00000604, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  822. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  823. #undef  INTERFACE
  824. #define INTERFACE   IHXActivePropUser
  825. DECLARE_INTERFACE_(IHXActivePropUser, IUnknown)
  826. {
  827.     /*
  828.      * IUnknown methods
  829.      */
  830.     STDMETHOD(QueryInterface) (THIS_
  831. REFIID riid,
  832. void** ppvObj) PURE;
  833.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  834.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  835.     /************************************************************************
  836.     * IHXActivePropUser::SetActiveInt
  837.     *
  838.     *    Async request to set int pName to ul.
  839.     */
  840.     STDMETHOD(SetActiveInt) (THIS_
  841.     const char* pName,
  842.     UINT32 ul,
  843.     IHXActivePropUserResponse* pResponse) PURE;
  844.     /************************************************************************
  845.     * IHXActivePropUser::SetActiveStr
  846.     *
  847.     *    Async request to set string pName to string in pBuffer.
  848.     */
  849.     STDMETHOD(SetActiveStr) (THIS_
  850.     const char* pName,
  851.     IHXBuffer* pBuffer,
  852.     IHXActivePropUserResponse* pResponse) PURE;
  853.     /************************************************************************
  854.     * IHXActivePropUser::SetActiveBuf
  855.     *
  856.     *    Async request to set buffer pName to buffer in pBuffer.
  857.     */
  858.     STDMETHOD(SetActiveBuf) (THIS_
  859. const char* pName,
  860. IHXBuffer* pBuffer,
  861. IHXActivePropUserResponse* pResponse) PURE;
  862.     /************************************************************************
  863.     * IHXActivePropUser::DeleteActiveProp
  864.     *
  865.     * Async request to delete the active property.
  866.     */
  867.     STDMETHOD(DeleteActiveProp) (THIS_
  868. const char* pName,
  869. IHXActivePropUserResponse* pResponse) PURE;
  870. };
  871. /*
  872.  * 
  873.  *  Interface:
  874.  *
  875.  * IHXActivePropUserResponse
  876.  *
  877.  *  Purpose:
  878.  *
  879.  * Gets responses from IHXActivePropUser for queries to set properties
  880.  *  in the IHXActiveRegistry.
  881.  *
  882.  *
  883.  *  IID_IHXActivePropUserResponse:
  884.  *
  885.  * {00000605-0901-11d1-8B06-00A024406D59}
  886.  *
  887.  */
  888. DEFINE_GUID(IID_IHXActivePropUserResponse, 0x00000605, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  889. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  890. #undef  INTERFACE
  891. #define INTERFACE   IHXActivePropUserResponse
  892. DECLARE_INTERFACE_(IHXActivePropUserResponse, IUnknown)
  893. {
  894.     /*
  895.      * IUnknown methods
  896.      */
  897.     STDMETHOD(QueryInterface) (THIS_
  898. REFIID riid,
  899. void** ppvObj) PURE;
  900.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  901.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  902.     /************************************************************************
  903.     * Called with status result on completion of set request.
  904.     */
  905.     STDMETHOD(SetActiveIntDone)   (THIS_
  906.     HX_RESULT res,
  907.     const char* pName,
  908.     UINT32 ul,
  909.     IHXBuffer* pInfo[],
  910.     UINT32 ulNumInfo) PURE;
  911.     STDMETHOD(SetActiveStrDone)   (THIS_
  912.     HX_RESULT res,
  913.     const char* pName,
  914.     IHXBuffer* pBuffer,
  915.     IHXBuffer* pInfo[],
  916.     UINT32 ulNumInfo) PURE;
  917.     STDMETHOD(SetActiveBufDone)   (THIS_
  918.     HX_RESULT res,
  919.     const char* pName,
  920.     IHXBuffer* pBuffer,
  921.     IHXBuffer* pInfo[],
  922.     UINT32 ulNumInfo) PURE;
  923.     STDMETHOD(DeleteActivePropDone) (THIS_
  924.     HX_RESULT res,
  925.     const char* pName,
  926.     IHXBuffer* pInfo[],
  927.     UINT32 ulNumInfo) PURE;
  928. };
  929. /*
  930.  * 
  931.  *  Interface:
  932.  *
  933.  * IHXCopyRegistry
  934.  *
  935.  *  Purpose:
  936.  *
  937.  * Allows copying from one registry key to another.
  938.  *
  939.  *
  940.  *  IID_IHXCopyRegistry
  941.  *
  942.  * {00000606-0901-11d1-8B06-00A024406D59}
  943.  *
  944.  */
  945. DEFINE_GUID(IID_IHXCopyRegistry, 0x00000606, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  946. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  947. #undef  INTERFACE
  948. #define INTERFACE   IHXCopyRegistry
  949. DECLARE_INTERFACE_(IHXCopyRegistry, IUnknown)
  950. {
  951.     /*
  952.      * IUnknown methods
  953.      */
  954.     STDMETHOD(QueryInterface) (THIS_
  955. REFIID riid,
  956. void** ppvObj) PURE;
  957.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  958.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  959.     /************************************************************************
  960.     * IHXCopyRegistry::Copy
  961.     *
  962.     *   Here it is! The "Copy" method!
  963.     */
  964.     STDMETHOD (CopyByName)  (THIS_
  965.     const char* pFrom,
  966.     const char* pTo) PURE;
  967. };
  968. /*
  969.  * 
  970.  *  Interface:
  971.  *
  972.  * IHXRegistryAltStringHandling
  973.  *
  974.  *  Purpose:
  975.  *
  976.  * Tells the registry about alternate handling of PT_STRING types.
  977.  *
  978.  *
  979.  *  IID_IHXRegistryAltStringHandling
  980.  *
  981.  * {00000607-0901-11d1-8B06-00A024406D59}
  982.  *
  983.  */
  984. DEFINE_GUID(IID_IHXRegistryAltStringHandling, 0x00000607, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  985. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  986. #undef  INTERFACE
  987. #define INTERFACE   IHXRegistryAltStringHandling
  988. DECLARE_INTERFACE_(IHXRegistryAltStringHandling, IUnknown)
  989. {
  990.     /*
  991.      * IUnknown methods
  992.      */
  993.     STDMETHOD(QueryInterface) (THIS_
  994. REFIID riid,
  995. void** ppvObj) PURE;
  996.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  997.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  998.     /************************************************************************
  999.     * IHXRegistryAltStringHandling::SetStringAccessAsBufferById
  1000.     *
  1001.     *   For those times when you added a property as a buffer, but wish it
  1002.     *   were a string (and of course, people now rely on the fact that it's
  1003.     *   a buffer)...  Create the property as a string and then pass this
  1004.     *   method it's ID.  The property will now be accessible/setable as a,
  1005.     *   but it will still be a string!
  1006.     */
  1007.     STDMETHOD (SetStringAccessAsBufferById)  (THIS_
  1008.       UINT32 ulId) PURE;
  1009. };
  1010. // $Private:
  1011. /*
  1012.  * 
  1013.  *  Interface:
  1014.  *
  1015.  *      IHXRegistry2
  1016.  *
  1017.  *  Purpose:
  1018.  *
  1019.  *      1) Provide atomic update methods
  1020.  *      2) Provide INT64 support
  1021.  *      3) Provide access to INTREF pointers
  1022.  *
  1023.  *      All operations occur atomically, ensuring that multiple users of the
  1024.  *      registry do not interfere with each other, even on multi-CPU systems.
  1025.  *      Note, this is essentially a superset of IHXRegistry.
  1026.  *
  1027.  *  IID_IHXRegistry2
  1028.  *
  1029.  * {00000608-0901-11d1-8B06-00A024406D59}
  1030.  *
  1031.  */
  1032. DEFINE_GUID(IID_IHXRegistry2, 0x00000608, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  1033. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  1034. #undef  INTERFACE
  1035. #define INTERFACE IHXRegistry2
  1036. DECLARE_INTERFACE_(IHXRegistry2, IUnknown)
  1037. {
  1038.     /*
  1039.      * IUnknown methods
  1040.      */
  1041.     STDMETHOD(QueryInterface) (THIS_
  1042. REFIID riid,
  1043. void** ppvObj) PURE;
  1044.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  1045.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  1046.     /*
  1047.      * IHXRegistry2 methods
  1048.      */
  1049.     /************************************************************************
  1050.      *  Method:
  1051.      *      IHXRegistry2::CreatePropWatch
  1052.      *  Purpose:
  1053.      *      Create a new IHXPropWatch object which can then be queried for 
  1054.      *  the right kind of IHXPropWatch object.
  1055.      *
  1056.      *  pPropWatch - OUT - returns a new addref'ed IHXPropWatch object 
  1057.      */
  1058.     STDMETHOD(CreatePropWatch) (THIS_
  1059. REF(IHXPropWatch*) pPropWatch) PURE;
  1060.     /************************************************************************
  1061.      *  Method:
  1062.      *      IHXRegistry2::AddComp
  1063.      *  Purpose:
  1064.      *      Add a COMPOSITE property to the registry and return its ID
  1065.      *  if successful. It returns ZERO (0) if an error occurred
  1066.      *  during the operation.
  1067.      *
  1068.      *  pName - IN - name of the Property that is going to be added to 
  1069.      *               the registry
  1070.      */
  1071.     STDMETHOD_(UINT32, AddComp) (THIS_
  1072. const char* pName) PURE;
  1073.     /************************************************************************
  1074.      *  Method:
  1075.      *      IHXRegistry2::AddInt
  1076.      *  Purpose:
  1077.      *      Add an INTEGER property with name in "pName" and value in 
  1078.      *  "iValue" to the registry. The return value is the id to
  1079.      *  the newly added Property or ZERO if there was an error.
  1080.      *
  1081.      *  pName - IN - name of the Property that is going to be added to 
  1082.      *               the registry
  1083.      *  nValue - IN - integer value of the Property that is going to be 
  1084.      *                added to the registry
  1085.      */
  1086.     STDMETHOD_(UINT32, AddInt) (THIS_
  1087. const char* pName, 
  1088. const INT32 nValue) PURE;
  1089.     /************************************************************************
  1090.      *  Method:
  1091.      *      IHXRegistry2::GetIntByName
  1092.      *  Purpose:
  1093.      *      Retreive an INTEGER value from the registry given its Property
  1094.      *  name "pName". If the Property is found, it will return HXR_OK, 
  1095.      *  otherwise it returns HXR_FAIL.
  1096.      *
  1097.      *  pName - IN - name of the Property whose value is to be retreived
  1098.      *  nValue - OUT - parameter into which the value of the Property is 
  1099.      *                 going to be returned
  1100.      */
  1101.     STDMETHOD(GetIntByName) (THIS_
  1102. const char* pName,
  1103. REF(INT32) nValue) const PURE;
  1104.     /************************************************************************
  1105.      *  Method:
  1106.      *      IHXRegistry2::GetIntById
  1107.      *  Purpose:
  1108.      *      Retreive an INTEGER value from the registry given its id "ulId". 
  1109.      *  If the Property is found, it will return HXR_OK, otherwise it 
  1110.      *  returns HXR_FAIL.
  1111.      *
  1112.      *  ulId - IN - unique id of the Property whose value is to be retreived
  1113.      *  nValue - OUT - parameter into which the value of the Property is 
  1114.      *                 going to be returned
  1115.      */
  1116.     STDMETHOD(GetIntById) (THIS_
  1117. const UINT32 ulId,
  1118. REF(INT32) nValue) const PURE;
  1119.     /************************************************************************
  1120.      *  Method:
  1121.      *      IHXRegistry2::SetIntByName
  1122.      *  Purpose:
  1123.      *      Modify a Property's INTEGER value in the registry given the
  1124.      *  Property's name "pName". If the value was set, it will return HXR_OK, 
  1125.      *  otherwise it returns HXR_FAIL.
  1126.      *
  1127.      *  pName - IN - name of the Property whose value is to be set
  1128.      *  nValue - IN - the new value of the Property which is going to be set
  1129.      */
  1130.     STDMETHOD(SetIntByName) (THIS_
  1131. const char* pName, 
  1132. const INT32 nValue) PURE;
  1133.     /************************************************************************
  1134.      *  Method:
  1135.      *      IHXRegistry2::SetIntById
  1136.      *  Purpose:
  1137.      *      Modify a Property's INTEGER value in the registry given the
  1138.      *  its id "id". If the value was set, it will return HXR_OK, otherwise 
  1139.      *  it returns HXR_FAIL.
  1140.      *
  1141.      *  ulId - IN - unique id of the Property whose value is to be set
  1142.      *  nValue - IN - the new value of the Property which is going to be set
  1143.      */
  1144.     STDMETHOD(SetIntById) (THIS_
  1145. const UINT32 id,
  1146. const INT32 nValue) PURE;
  1147.     /************************************************************************
  1148.      *  Method:
  1149.      *      IHXRegistry2::AddStr
  1150.      *  Purpose:
  1151.      *      Add an STRING property with name in "pName" and value in 
  1152.      *  "pValue" to the registry and return its ID if successful.
  1153.      *  It returns ZERO (0) if an error occurred during the operation.
  1154.      *
  1155.      *  pName - IN - name of the Property that is going to be added to 
  1156.      *               the registry
  1157.      *  pValue - IN - buffer value of the Property that is going to be 
  1158.      *                added to the registry
  1159.      */
  1160.     STDMETHOD_(UINT32, AddStr) (THIS_
  1161. const char* pName, 
  1162. IHXBuffer* pValue) PURE;
  1163.     /************************************************************************
  1164.      *  Method:
  1165.      *      IHXRegistry2::GetStrByName
  1166.      *  Purpose:
  1167.      *      Retreive an STRING value from the registry given its Property
  1168.      *  name "pName". If the Property is found, it will return HXR_OK, 
  1169.      *  otherwise it returns HXR_FAIL.
  1170.      *
  1171.      *  pName - IN - name of the Property whose value is to be retreived
  1172.      *  pValue - OUT - parameter into which the value of the Property is 
  1173.      *                 going to be returned
  1174.      */
  1175.     STDMETHOD(GetStrByName) (THIS_
  1176. const char*  pName,
  1177. REF(IHXBuffer*) pValue) const PURE;
  1178.     /************************************************************************
  1179.      *  Method:
  1180.      *      IHXRegistry2::GetStrById
  1181.      *  Purpose:
  1182.      *      Retreive an STRING value from the registry given its id "ulId". 
  1183.      *  If the Property is found, it will return HXR_OK, otherwise it 
  1184.      *  returns HXR_FAIL.
  1185.      *
  1186.      *  ulId - IN - unique id of the Property whose value is to be retreived
  1187.      *  pValue - OUT - parameter into which the value of the Property is 
  1188.      *                 going to be returned
  1189.      */
  1190.     STDMETHOD(GetStrById) (THIS_
  1191. const UINT32  ulId,
  1192. REF(IHXBuffer*) pValue) const PURE;
  1193.     /************************************************************************
  1194.      *  Method:
  1195.      *      IHXRegistry2::SetStrByName
  1196.      *  Purpose:
  1197.      *      Modify a Property's STRING value in the registry given the
  1198.      *  Property's name "pName". If the value was set, it will return 
  1199.      *  HXR_OK, otherwise it returns HXR_FAIL.
  1200.      *
  1201.      *  pName - IN - name of the Property whose value is to be set
  1202.      *  pValue - IN - the new value of the Property which is going to be set
  1203.      */
  1204.     STDMETHOD(SetStrByName) (THIS_
  1205. const char* pName, 
  1206. IHXBuffer* pValue) PURE;
  1207.     /************************************************************************
  1208.      *  Method:
  1209.      *      IHXRegistry2::SetStrById
  1210.      *  Purpose:
  1211.      *      Modify a Property's STRING value in the registry given the
  1212.      *  its id "ulId". If the value was set, it will return HXR_OK, 
  1213.      *  otherwise it returns HXR_FAIL.
  1214.      *
  1215.      *  ulId - IN - unique id of the Property whose value is to be set
  1216.      *  pValue - IN - the new value of the Property which is going to be set
  1217.      */
  1218.     STDMETHOD(SetStrById) (THIS_
  1219. const UINT32 ulId,
  1220. IHXBuffer* pValue) PURE;
  1221.     /************************************************************************
  1222.      *  Method:
  1223.      *      IHXRegistry2::AddBuf
  1224.      *  Purpose:
  1225.      *      Add an BUFFER property with name in "pName" and value in 
  1226.      *  "pValue" to the registry  and return its ID if successful.
  1227.      *  It returns ZERO (0) if an error occurred during the operation.
  1228.      *
  1229.      *  pName - IN - name of the Property that is going to be added to 
  1230.      *               the registry
  1231.      *  pValue - IN - buffer value of the Property that is going to be 
  1232.      *                added to the registry
  1233.      */
  1234.     STDMETHOD_(UINT32, AddBuf) (THIS_
  1235. const char* pName, 
  1236. IHXBuffer* pValue) PURE;
  1237.     /************************************************************************
  1238.      *  Method:
  1239.      *      IHXRegistry2::GetBufByName
  1240.      *  Purpose:
  1241.      *      Retreive the BUFFER from the registry given its Property name 
  1242.      *  "pName". If the Property is found, it will return HXR_OK, otherwise 
  1243.      *  it returns HXR_FAIL.
  1244.      *
  1245.      *  pName - IN - name of the Property whose value is to be retreived
  1246.      *  pValue - OUT - parameter into which the value of the Property is 
  1247.      *                 going to be returned
  1248.      */
  1249.     STDMETHOD(GetBufByName) (THIS_
  1250. const char*  pName,
  1251. REF(IHXBuffer*) pValue) const PURE;
  1252.     /************************************************************************
  1253.      *  Method:
  1254.      *      IHXRegistry2::GetBufById
  1255.      *  Purpose:
  1256.      *      Retreive the BUFFER from the registry given its id "ulId". If the 
  1257.      *  Property is found, it will return HXR_OK, otherwise it returns 
  1258.      *  HXR_FAIL.
  1259.      *
  1260.      *  ulId - IN - unique id of the Property whose value is to be retreived
  1261.      *  pValue - OUT - parameter into which the value of the Property is 
  1262.      *                 going to be returned
  1263.      */
  1264.     STDMETHOD(GetBufById) (THIS_
  1265. const UINT32  ulId,
  1266. REF(IHXBuffer*) pValue) const PURE;
  1267.     /************************************************************************
  1268.      *  Method:
  1269.      *      IHXRegistry2::SetBufByName
  1270.      *  Purpose:
  1271.      *      Modify a Property's BUFFER in the registry given the
  1272.      *  Property's name "pName". If the value was set, it will return 
  1273.      *  HXR_OK, otherwise it returns HXR_FAIL.
  1274.      *
  1275.      *  pName - IN - name of the Property whose value is to be set
  1276.      *  pValue - IN - the new value of the Property which is going to be set
  1277.      */
  1278.     STDMETHOD(SetBufByName) (THIS_
  1279. const char* pName, 
  1280. IHXBuffer* pValue) PURE;
  1281.     /************************************************************************
  1282.      *  Method:
  1283.      *      IHXRegistry2::SetBufById
  1284.      *  Purpose:
  1285.      *      Modify a Property's BUFFER in the registry given its id "ulId". 
  1286.      *  If the value was set, it will return HXR_OK, otherwise it returns 
  1287.      *  HXR_FAIL.
  1288.      *
  1289.      *  ulId - IN - unique id of the Property whose value is to be set
  1290.      *  pValue - IN - the new value of the Property which is going to be set
  1291.      */
  1292.     STDMETHOD(SetBufById) (THIS_
  1293. const UINT32 ulId,
  1294. IHXBuffer* pValue) PURE;
  1295.     /************************************************************************
  1296.      *  Method:
  1297.      *      IHXRegistry2::AddIntRef
  1298.      *  Purpose:
  1299.      *      Add an INTEGER REFERENCE property with name in "pName" and 
  1300.      *  value in "iValue" to the registry. This property allows the user
  1301.      *  to modify its contents directly, without having to go through the
  1302.      *  registry.  The Property's id is returned if successful.
  1303.      *  It returns ZERO (0) if an error occurred during the operation.
  1304.      *
  1305.      *  pName - IN - name of the Property that is going to be added to 
  1306.      *               the registry
  1307.      *  pValue - IN - the pointer of the integer value is what gets stored
  1308.      *                in the registry as the Interger Reference Property's 
  1309.      *                value
  1310.      */
  1311.     STDMETHOD_(UINT32, AddIntRef) (THIS_
  1312. const char* pName, 
  1313. INT32* pValue) PURE;
  1314.     /************************************************************************
  1315.      *  Method:
  1316.      *      IHXRegistry2::DeleteByName
  1317.      *  Purpose:
  1318.      *      Delete a Property from the registry using its name "pName".
  1319.      *
  1320.      *  pName - IN - name of the Property that is going to be deleted
  1321.      */
  1322.     STDMETHOD_(UINT32, DeleteByName) (THIS_
  1323. const char* pName) PURE;
  1324.     /************************************************************************
  1325.      *  Method:
  1326.      *      IHXRegistry2::DeleteById
  1327.      *  Purpose:
  1328.      *      Delete a Property from the registry using its id "ulId".
  1329.      *
  1330.      *  ulId - IN - unique id of the Property that is going to be deleted
  1331.      */
  1332.     STDMETHOD_(UINT32, DeleteById) (THIS_
  1333. const UINT32 ulId) PURE;
  1334.     /************************************************************************
  1335.      *  Method:
  1336.      *      IHXRegistry2::GetTypeByName
  1337.      *  Purpose:
  1338.      *      Returns the datatype of the Property given its name "pName".
  1339.      *
  1340.      *  pName - IN - name of the Property whose type is to be retreived
  1341.      */
  1342.     STDMETHOD_(HXPropType, GetTypeByName) (THIS_
  1343. const char* pName) const PURE;
  1344.     /************************************************************************
  1345.      *  Method:
  1346.      *      IHXRegistry2::GetTypeById
  1347.      *  Purpose:
  1348.      *      Returns the datatype of the Property given its its id "ulId".
  1349.      *
  1350.      *  ulId - IN - unique id of the Property whose type is to be retreived
  1351.      */
  1352.     STDMETHOD_(HXPropType, GetTypeById) (THIS_
  1353. const UINT32 ulId) const PURE;
  1354.     /************************************************************************
  1355.      *  Method:
  1356.      *      IHXRegistry2::FindParentIdByName
  1357.      *  Purpose:
  1358.      *      Returns the id value of the parent node of the Property whose 
  1359.      *  name "pName" has been passed in. If it fails, a ZERO value is 
  1360.      *  returned.
  1361.      *
  1362.      *  pName - IN - name of the Property whose parent's unique id is to be
  1363.      *               retreived
  1364.      */
  1365.     STDMETHOD_(UINT32, FindParentIdByName) (THIS_
  1366. const char* pName) const PURE;
  1367.     /************************************************************************
  1368.      *  Method:
  1369.      *      IHXRegistry2::FindParentIdById
  1370.      *  Purpose:
  1371.      *      Returns the id value of the parent node of the Property whose 
  1372.      *  id "ulId" has been passed in. If it fails, a ZERO value is returned.
  1373.      *
  1374.      *  ulId - IN - unique id of the Property whose parent's id is to be
  1375.      *              retreived
  1376.      */
  1377.     STDMETHOD_(UINT32, FindParentIdById) (THIS_
  1378. const UINT32 ulId) const PURE;
  1379.     /************************************************************************
  1380.      *  Method:
  1381.      *      IHXRegistry2::GetPropName
  1382.      *  Purpose:
  1383.      *      Returns the Property name in the pName char buffer passed
  1384.      *  as a parameter, given the Property's id "ulId".
  1385.      *
  1386.      *  ulId - IN - unique id of the Property whose name is to be retreived
  1387.      *  pName - OUT - parameter into which the Property name is going to be
  1388.      *                returned
  1389.      */
  1390.     STDMETHOD(GetPropName) (THIS_
  1391. const UINT32 ulId,
  1392. REF(IHXBuffer*) pName) const PURE;
  1393.     /************************************************************************
  1394.      *  Method:
  1395.      *      IHXRegistry2::GetId
  1396.      *  Purpose:
  1397.      *      Returns the Property's id given the Property name.
  1398.      *
  1399.      *  pName - IN - name of the Property whose unique id is to be 
  1400.      *               retreived
  1401.      */
  1402.     STDMETHOD_(UINT32, GetId) (THIS_
  1403. const char* pName) const PURE;
  1404.     /************************************************************************
  1405.      *  Method:
  1406.      *      IHXRegistry2::GetPropListOfRoot
  1407.      *  Purpose:
  1408.      *      Returns an array of a Properties under the root level of the 
  1409.      *  registry's hierarchy.
  1410.      *
  1411.      *  pValues - OUT - list of property name and unique id at the 
  1412.      *                  highest level (root) in the registry
  1413.      */
  1414.     STDMETHOD(GetPropListOfRoot)  (THIS_
  1415. REF(IHXValues*) pValues) const PURE;
  1416.     /************************************************************************
  1417.      *  Method:
  1418.      *      IHXRegistry2::GetPropListByName
  1419.      *  Purpose:
  1420.      *      Returns an array of Properties immediately under the one whose
  1421.      *  name is passed in "pName".
  1422.      *
  1423.      *  pName - IN - name of the Property whose child property list is to be
  1424.      *               retreived
  1425.      *  pValues - OUT - list of property name and unique id under the 
  1426.      *                  Property whose name is in "pName"
  1427.      */
  1428.     STDMETHOD(GetPropListByName)  (THIS_
  1429.  const char* pName,
  1430.  REF(IHXValues*) pValues) const PURE;
  1431.     /************************************************************************
  1432.      *  Method:
  1433.      *      IHXRegistry2::GetPropListById
  1434.      *  Purpose:
  1435.      *      Returns an array of Properties immediately under the one whose
  1436.      *  id is passed in "ulId".
  1437.      *
  1438.      *  ulId - IN - unique id of the Property whose child property list is 
  1439.      *              to be retreived
  1440.      *  pValues - OUT - list of property name and unique id under the 
  1441.      *                  Property whose is is in "ulId"
  1442.      */
  1443.     STDMETHOD(GetPropListById)    (THIS_
  1444.  const UINT32 ulId,
  1445.  REF(IHXValues*) pValues) const PURE;
  1446.     /************************************************************************
  1447.      *  Method:
  1448.      *      IHXRegistry2::GetNumPropsAtRoot
  1449.      *  Purpose:
  1450.      *      Returns the number of Properties at the root of the registry. 
  1451.      *
  1452.      */
  1453.     STDMETHOD_(INT32, GetNumPropsAtRoot) (THIS) const PURE;
  1454.     /************************************************************************
  1455.      *  Method:
  1456.      *      IHXRegistry2::GetNumPropsByName
  1457.      *  Purpose:
  1458.      *      Returns the count of the number of Properties under the one 
  1459.      *  whose name is specified in "pName".
  1460.      *
  1461.      *  pName - IN - name of the Property whose number of children is to be
  1462.      *               retreived
  1463.      */
  1464.     STDMETHOD_(INT32, GetNumPropsByName) (THIS_
  1465. const char* pName) const PURE;
  1466.     /************************************************************************
  1467.      *  Method:
  1468.      *      IHXRegistry2::GetNumPropsById
  1469.      *  Purpose:
  1470.      *      Returns the count of the number of Properties under the one 
  1471.      *  whose unique id is specified in "ulId".
  1472.      *
  1473.      *  ulId - IN - unique id of the Property whose number of children is 
  1474.      *              to be retreived
  1475.      */
  1476.     STDMETHOD_(INT32, GetNumPropsById) (THIS_
  1477. const UINT32 ulId) const PURE;
  1478.     /************************************************************************
  1479.      *  Method:
  1480.      *      IHXRegistry2::ModifyIntByName
  1481.      *  Purpose:
  1482.      *      Changes the INTEGER value in the registry given its Property
  1483.      *  name "pName" and an amount to change it by.  Modifies the value
  1484.      *  of the integer in the registry by the amount specified by "nDelta",
  1485.      *  setting nValue equal to the value after modification.  If the
  1486.      *  Property is found, it will return HXR_OK, otherwise it
  1487.      *  returns HXR_FAIL.
  1488.      *  
  1489.      *  pName - IN - name of the Property whose value is to be retrieved
  1490.      *  nDelta - IN - amount to modify the named property by
  1491.      *  nValue - OUT - parameter into which the value of the Property is
  1492.      *                 going to be returned, after modification
  1493.      */
  1494.     STDMETHOD(ModifyIntByName)         (THIS_
  1495.                                         const char*     pName,
  1496. INT32           nDelta,
  1497.                                         REF(INT32)      nValue) PURE;
  1498.     /************************************************************************
  1499.      *  Method:
  1500.      *      IHXRegistry2::ModifyIntById
  1501.      *  Purpose:
  1502.      *      Changes the INTEGER value in the registry given its id "ulID"
  1503.      *  and an amount to change it by.  Modifies the value of the
  1504.      *  integer in the registry by the amount specified by "nDelta",
  1505.      *  setting nValue equal to the value after modification.  If the
  1506.      *  Property is found, it will return HXR_OK, otherwise it
  1507.      *  returns HXR_FAIL.
  1508.      *
  1509.      *  ulId - IN - unique id of the Property whose value is to be modified
  1510.      *  nDelta - IN - amount to modify the specified property by
  1511.      *  nValue - OUT - parameter into which the value of the Property is
  1512.      *                 going to be returned, after modification
  1513.      */
  1514.     STDMETHOD(ModifyIntById)           (THIS_
  1515.                                         const UINT32    id,
  1516. INT32           nDelta,
  1517.                                         REF(INT32)      nValue) PURE;
  1518.     /************************************************************************
  1519.      *  Method:
  1520.      *      IHXRegistry2::BoundedModifyIntByName
  1521.      *  Purpose:
  1522.      *      Changes the INTEGER value in the registry given its Property name
  1523.      *  "pName" and an amount to change it by and keeps the modified value 
  1524.      *  within the bounds of the nMin and nMax values. Modifies the value 
  1525.      *  of the integer in the registry by the amount specified by "nDelta",
  1526.      *  setting nValue equal to the value after modification, if the modified 
  1527.      *  value is >= nMin and <= nMax. If either of these limits are violated 
  1528.      *  the the resulting value stored in the registry is the value of the 
  1529.      *  limit just violated. If the Property is found, it will return HXR_OK, 
  1530.      *  otherwise it returns HXR_FAIL.
  1531.      *  
  1532.      *  pName - IN - name of the Property whose value is to be retrieved
  1533.      *  nDelta - IN - amount to modify the named property by
  1534.      *  nMin - IN - min value that the modified registry prop can have
  1535.      *              if the modified registry value < nMin then
  1536.      *                  registry value = nMin
  1537.      *  nMax - IN - min value that the modified registry prop can have
  1538.      *              if the modified registry value > nMax then
  1539.      *                  registry value = nMax
  1540.      *  nValue - OUT - parameter into which the value of the Property is
  1541.      *                 going to be returned, after modification
  1542.      */
  1543.     STDMETHOD(BoundedModifyIntByName)   (THIS_
  1544.                                         const char*     pName,
  1545. INT32           nDelta,
  1546.                                         REF(INT32)      nValue,
  1547. INT32           nMin=INT_MIN,
  1548. INT32           nMax=INT_MAX) PURE;
  1549.     /************************************************************************
  1550.      *  Method:
  1551.      *      IHXRegistry2::BoundedModifyIntById
  1552.      *  Purpose:
  1553.      *      Changes the INTEGER value in the registry given its id "ulID"
  1554.      *  and an amount to change it by and keeps the modified value within
  1555.      *  the bounds of the nMin and nMax values. Modifies the value of the
  1556.      *  integer in the registry by the amount specified by "nDelta",
  1557.      *  setting nValue equal to the value after modification, if the modified
  1558.      *  value is >= nMin and <= nMax. If either of these limits are violated
  1559.      *  the the resulting value stored in the registry is the value of the
  1560.      *  limit just violated. If the Property is found, it will return HXR_OK, 
  1561.      *  otherwise it returns HXR_FAIL.
  1562.      *
  1563.      *  ulId - IN - unique id of the Property whose value is to be modified
  1564.      *  nDelta - IN - amount to modify the specified property by
  1565.      *  nMin - IN - min value that the modified registry prop can have
  1566.      *              if the modified registry value < nMin then
  1567.      *                  registry value = nMin
  1568.      *  nMax - IN - min value that the modified registry prop can have
  1569.      *              if the modified registry value > nMax then
  1570.      *                  registry value = nMax
  1571.      *  nValue - OUT - parameter into which the value of the Property is
  1572.      *                 going to be returned, after modification
  1573.      */
  1574.     STDMETHOD(BoundedModifyIntById)     (THIS_
  1575.                                         const UINT32    id,
  1576. INT32           nDelta,
  1577.                                         REF(INT32)      nValue,
  1578. INT32           nMin=INT_MIN,
  1579. INT32           nMax=INT_MAX) PURE;
  1580.     /************************************************************************
  1581.      *  Method:
  1582.      *      IHXRegistry2::SetAndReturnIntByName
  1583.      *  Purpose:
  1584.      *      Modify a Property's INTEGER value in the registry given the
  1585.      *  Property's name "pName". If the Property is found, the previous
  1586.      *  value, prior to setting it, will be assigned to nOldValue.
  1587.      *  If the Property is found, it will return HXR_OK, otherwise it
  1588.      *  returns HXR_FAIL.
  1589.      *
  1590.      *  pName - IN - name of the Property whose value is to be retrieved
  1591.      *  nValue - IN - the new value of the Property which is going to be set
  1592.      *  nOldValue - OUT - parameter into which the previous value of the
  1593.      *                    Property is returned
  1594.      */
  1595.     STDMETHOD(SetAndReturnIntByName)   (THIS_
  1596.                                         const char*     pName,
  1597. INT32           nValue,
  1598.                                         REF(INT32)      nOldValue) PURE;
  1599.     /************************************************************************
  1600.      *  Method:
  1601.      *      IHXRegistry2::SetAndReturnIntById
  1602.      *  Purpose:
  1603.      *      Modify a Property's INTEGER value in the registry given the
  1604.      *  Property's id "ulId". If the id is found, the previous
  1605.      *  value, prior to setting it, will be assigned to nOldValue.
  1606.      *  If the Property is found, it will return HXR_OK, otherwise it
  1607.      *  returns HXR_FAIL.
  1608.      *  
  1609.      *  pName - IN - name of the Property whose value is to be retrieved
  1610.      *  nValue - IN - the new value of the Property which is going to be set
  1611.      *  nOldValue - OUT - parameter into which the previous value of the
  1612.      *                    Property is returned
  1613.      */
  1614.     STDMETHOD(SetAndReturnIntById)     (THIS_
  1615.                                         const UINT32    id,
  1616. INT32           nValue,
  1617.                                         REF(INT32)      nOldValue) PURE;
  1618.     /************************************************************************
  1619.      *  Method:
  1620.      *      IHXRegistry2::GetIntRefByName
  1621.      *  Purpose:
  1622.      *      Retrieve an INTEGER REFERENCE property from the registry given
  1623.      *  its Property name "pName".  If the Property is found it will return
  1624.      *  HXR_OK and pValue will be assigned the address of the integer
  1625.      *  (not the value of the integer, which can be obtained even for
  1626.      *  INTREFs via the GetIntByxxx methods.)  Otherwise, it returns HXR_FAIL.
  1627.      *  
  1628.      *  pName - IN - name of the Property whose value is to be retrieved
  1629.      *  pValue - OUT - the address of the integer value 
  1630.      */
  1631.     STDMETHOD(GetIntRefByName)         (THIS_
  1632.                                         const char*     pName,
  1633.                                         REF(INT32*)     pValue) const PURE;
  1634.     /************************************************************************
  1635.      *  Method:
  1636.      *      IHXRegistry2::GetIntRefById
  1637.      *  Purpose:
  1638.      *      Retrieve an INTEGER REFERENCE property from the registry given
  1639.      *  its id "ulId".  If the Property is found it will return
  1640.      *  HXR_OK and pValue will be assigned the address of the integer
  1641.      *  (not the value of the integer, which can be obtained even for
  1642.      *  INTREFs via the GetIntByxxx methods.)  Otherwise, it returns HXR_FAIL.
  1643.      *  
  1644.      *  pName - IN - name of the Property whose value is to be retrieved
  1645.      *  pValue - OUT - the address of the integer value 
  1646.      */
  1647.     STDMETHOD(GetIntRefById)           (THIS_
  1648.                                         const UINT32    id,
  1649.                                         REF(INT32*)     pValue) const PURE;
  1650.     /************************************************************************
  1651.      *  Method:
  1652.      *      IHXRegistry2::AddInt64
  1653.      *  Purpose:
  1654.      *      Add an INTEGER property with name in "pName" and value in
  1655.      *  "iValue" to the registry. The return value is the id to
  1656.      *  the newly added Property or ZERO if there was an error.
  1657.      *
  1658.      *  pName - IN - name of the Property that is going to be added to
  1659.      *               the registry
  1660.      *  nValue - IN - integer value of the Property that is going to be
  1661.      *                added to the registry
  1662.      */
  1663.     STDMETHOD_(UINT32, AddInt64)       (THIS_
  1664.                                         const char*     pName,
  1665.                                         const INT64     nValue) PURE;
  1666.     /************************************************************************
  1667.      *  Method:
  1668.      *      IHXRegistry2::GetInt64ByName
  1669.      *  Purpose:
  1670.      *      Retrieve a 64-bit INTEGER value from the registry given its
  1671.      *  Property name "pName". If the Property is found, it will return
  1672.      *  HXR_OK, otherwise it returns HXR_FAIL.
  1673.      *
  1674.      *  pName - IN - name of the Property whose value is to be retrieved
  1675.      *  nValue - OUT - parameter into which the value of the Property is
  1676.      *                 going to be returned
  1677.      */
  1678.     STDMETHOD(GetInt64ByName)          (THIS_
  1679.                                         const char*     pName,
  1680.                                         REF(INT64)      nValue) const PURE;
  1681.     /************************************************************************
  1682.      *  Method:
  1683.      *      IHXRegistry2::GetInt64ById
  1684.      *  Purpose:
  1685.      *      Retrieve a 64-bit INTEGER value from the registry given its id
  1686.      *  "ulId".  If the Property is found, it will return HXR_OK, otherwise
  1687.      *  it returns HXR_FAIL.
  1688.      *
  1689.      *  ulId - IN - unique id of the Property whose value is to be retrieved
  1690.      *  nValue - OUT - parameter into which the value of the Property is
  1691.      *                 going to be returned
  1692.      */
  1693.     STDMETHOD(GetInt64ById)            (THIS_
  1694.                                         const UINT32    ulId,
  1695.                                         REF(INT64)      nValue) const PURE;
  1696.     /************************************************************************
  1697.      *  Method:
  1698.      *      IHXRegistry2::SetInt64ByName
  1699.      *  Purpose:
  1700.      *      Modify a Property's INTEGER value in the registry given the
  1701.      *  Property's name "pName". If the value was set, it will return HXR_OK,
  1702.      *  otherwise it returns HXR_FAIL.
  1703.      *
  1704.      *  pName - IN - name of the Property whose value is to be set
  1705.      *  nValue - IN - the new value of the Property which is going to be set
  1706.      */
  1707.     STDMETHOD(SetInt64ByName)          (THIS_
  1708.                                         const char*     pName,
  1709.                                         const INT64     nValue) PURE;
  1710.     /************************************************************************
  1711.      *  Method:
  1712.      *      IHXRegistry2::SetInt64ById
  1713.      *  Purpose:
  1714.      *      Modify a Property's 64-bit INTEGER value in the registry given the
  1715.      *  its id "id". If the value was set, it will return HXR_OK, otherwise
  1716.      *  it returns HXR_FAIL.
  1717.      *
  1718.      *  ulId - IN - unique id of the Property whose value is to be set
  1719.      *  nValue - IN - the new value of the Property which is going to be set
  1720.      */
  1721.     STDMETHOD(SetInt64ById)            (THIS_
  1722.                                         const UINT32    id,
  1723.                                         const INT64     nValue) PURE;
  1724.     /************************************************************************
  1725.      *  Method:
  1726.      *      IHXRegistry2::ModifyInt64ByName
  1727.      *  Purpose:
  1728.      *      Changes the 64-bit INTEGER value in the registry given its Property
  1729.      *  name "pName" and an amount to change it by.  Modifies the value
  1730.      *  of the integer in the registry by the amount specified by "nDelta",
  1731.      *  setting nValue equal to the value after modification.  If the
  1732.      *  Property is found, it will return HXR_OK, otherwise it
  1733.      *  returns HXR_FAIL.
  1734.      *
  1735.      *  pName - IN - name of the Property whose value is to be retrieved
  1736.      *  nDelta - IN - amount to modify the named property by
  1737.      *  nValue - OUT - parameter into which the value of the Property is
  1738.      *                 going to be returned, after modification
  1739.      */
  1740.     STDMETHOD(ModifyInt64ByName)       (THIS_
  1741.                                         const char*     pName,
  1742. INT64           nDelta,
  1743.                                         REF(INT64)      nValue) PURE;
  1744.     /************************************************************************
  1745.      *  Method:
  1746.      *      IHXRegistry2::ModifyInt64ById
  1747.      *  Purpose:
  1748.      *      Changes the 64-bit INTEGER value in the registry given its id
  1749.      *  "ulID and an amount to change it by.  Modifies the value of the
  1750.      *  integer in the registry by the amount specified by "nDelta",
  1751.      *  setting nValue equal to the value after modification.  If the
  1752.      *  Property is found, it will return HXR_OK, otherwise it
  1753.      *  returns HXR_FAIL.
  1754.      *
  1755.      *  ulId - IN - unique id of the Property whose value is to be modified
  1756.      *  nDelta - IN - amount to modify the specified property by
  1757.      *  nValue - OUT - parameter into which the value of the Property is
  1758.      *                 going to be returned, after modification
  1759.      */
  1760.     STDMETHOD(ModifyInt64ById)         (THIS_
  1761.                                         const UINT32    id,
  1762. INT64           nDelta,
  1763.                                         REF(INT64)      nValue) PURE;
  1764.     /************************************************************************
  1765.      *  Method:
  1766.      *      IHXRegistry2::BoundedModifyInt64ByName
  1767.      *  Purpose:
  1768.      *      Changes the 64-bit INT val in the registry given its Property name
  1769.      *  "pName" and an amount to change it by and keeps the modified value 
  1770.      *  within the bounds of the nMin and nMax values. Modifies the value 
  1771.      *  of the integer in the registry by the amount specified by "nDelta",
  1772.      *  setting nValue equal to the value after modification, if the modified 
  1773.      *  value is >= nMin and <= nMax. If either of these limits are violated 
  1774.      *  the the resulting value stored in the registry is the value of the 
  1775.      *  limit just violated. If the Property is found, it will return HXR_OK, 
  1776.      *  otherwise it returns HXR_FAIL.
  1777.      *  
  1778.      *  pName - IN - name of the Property whose value is to be retrieved
  1779.      *  nDelta - IN - amount to modify the named property by
  1780.      *  nMin - IN - min value that the modified registry prop can have
  1781.      *              if the modified registry value < nMin then
  1782.      *                  registry value = nMin
  1783.      *  nMax - IN - min value that the modified registry prop can have
  1784.      *              if the modified registry value > nMax then
  1785.      *                  registry value = nMax
  1786.      *  nValue - OUT - parameter into which the value of the Property is
  1787.      *                 going to be returned, after modification
  1788.      *
  1789.      *  NOTE:
  1790.      *     the default values should b changed from INT_MIN/MAX to their
  1791.      *  appropriate 64-bit values
  1792.      */
  1793.     STDMETHOD(BoundedModifyInt64ByName) (THIS_
  1794.                                         const char*     pName,
  1795. INT64           nDelta,
  1796.                                         REF(INT64)      nValue,
  1797. INT64           nMin=INT64(INT_MIN),
  1798. INT64           nMax=INT64(INT_MAX)) PURE;
  1799.     /************************************************************************
  1800.      *  Method:
  1801.      *      IHXRegistry2::BoundedModifyInt64ById
  1802.      *  Purpose:
  1803.      *      Changes the 64-bit INT val in the registry given its id "ulID"
  1804.      *  and an amount to change it by and keeps the modified value within
  1805.      *  the bounds of the nMin and nMax values. Modifies the value of the
  1806.      *  integer in the registry by the amount specified by "nDelta",
  1807.      *  setting nValue equal to the value after modification, if the modified
  1808.      *  value is >= nMin and <= nMax. If either of these limits are violated
  1809.      *  the the resulting value stored in the registry is the value of the
  1810.      *  limit just violated. If the Property is found, it will return HXR_OK, 
  1811.      *  otherwise it returns HXR_FAIL.
  1812.      *
  1813.      *  ulId - IN - unique id of the Property whose value is to be modified
  1814.      *  nDelta - IN - amount to modify the specified property by
  1815.      *  nMin - IN - min value that the modified registry prop can have
  1816.      *              if the modified registry value < nMin then
  1817.      *                  registry value = nMin
  1818.      *  nMax - IN - min value that the modified registry prop can have
  1819.      *              if the modified registry value > nMax then
  1820.      *                  registry value = nMax
  1821.      *  nValue - OUT - parameter into which the value of the Property is
  1822.      *                 going to be returned, after modification
  1823.      *
  1824.      *  NOTE:
  1825.      *     the default values should b changed from INT_MIN/MAX to their
  1826.      *  appropriate 64-bit values
  1827.      */
  1828.     STDMETHOD(BoundedModifyInt64ById)   (THIS_
  1829.                                         const UINT32    id,
  1830. INT64           nDelta,
  1831.                                         REF(INT64)      nValue,
  1832. INT64           nMin=INT64(INT_MIN),
  1833. INT64           nMax=INT64(INT_MAX)) PURE;
  1834.     /************************************************************************
  1835.      *  Method:
  1836.      *      IHXRegistry2::SetAndReturnInt64ByName
  1837.      *  Purpose:
  1838.      *      Modify a Property's 64-bit INTEGER value in the registry given
  1839.      *  the Property's name "pName". If the Property is found, the previous
  1840.      *  value, prior to setting it, will be assigned to nOldValue.
  1841.      *  If the Property is found, it will return HXR_OK, otherwise it
  1842.      *  returns HXR_FAIL.
  1843.      *
  1844.      *  pName - IN - name of the Property whose value is to be retrieved
  1845.      *  nValue - IN - the new value of the Property which is going to be set
  1846.      *  nOldValue - OUT - parameter into which the previous value of the
  1847.      *                    Property is returned
  1848.      */
  1849.     STDMETHOD(SetAndReturnInt64ByName) (THIS_
  1850.                                         const char*     pName,
  1851. INT64           nValue,
  1852.                                         REF(INT64)      nOldValue) PURE;
  1853.     /************************************************************************
  1854.      *  Method:
  1855.      *      IHXRegistry2::SetAndReturnInt64ById
  1856.      *  Purpose:
  1857.      *      Modify a Property's 64-bit INTEGER value in the registry given
  1858.      *  the Property's id "ulId". If the id is found, the previous
  1859.      *  value, prior to setting it, will be assigned to nOldValue.
  1860.      *  If the Property is found, it will return HXR_OK, otherwise it
  1861.      *  returns HXR_FAIL.
  1862.      *  
  1863.      *  pName - IN - name of the Property whose value is to be retrieved
  1864.      *  nValue - IN - the new value of the Property which is going to be set
  1865.      *  nOldValue - OUT - parameter into which the previous value of the
  1866.      *                    Property is returned
  1867.      */
  1868.     STDMETHOD(SetAndReturnInt64ById)   (THIS_
  1869.                                         const UINT32    id,
  1870. INT64           nValue,
  1871.                                         REF(INT64)      nOldValue) PURE;
  1872.     /************************************************************************
  1873.      *  Method:
  1874.      *      IHXRegistry2::AddInt64Ref
  1875.      *  Purpose:
  1876.      *      Add a 64-bit INTEGER REFERENCE property with name in "pName"
  1877.      *  and value in "iValue" to the registry. This property allows the user
  1878.      *  to modify its contents directly, without having to go through the
  1879.      *  registry.
  1880.      *
  1881.      *  pName - IN - name of the Property that is going to be added to
  1882.      *               the registry
  1883.      *  pValue - IN - the pointer of the integer value is what gets stored
  1884.      *                in the registry as the Integer Reference Property's
  1885.      *                value
  1886.      */
  1887.     STDMETHOD_(UINT32, AddInt64Ref)     (THIS_
  1888.                                         const char*     pName,
  1889.                                         INT64*          pValue) PURE;
  1890.     /************************************************************************
  1891.      *  Method:
  1892.      *      IHXRegistry2::GetInt64RefByName
  1893.      *  Purpose:
  1894.      *      Retrieve a 64-bit INTEGER REFERENCE property from the registry
  1895.      *  given its Property name "pName".  If the Property is found it will
  1896.      *  return HXR_OK and pValue will be assigned the address of the integer
  1897.      *  (not the value of the integer, which can be obtained even for
  1898.      *  INTREFs via the GetIntByxxx methods.)  Otherwise, it returns HXR_FAIL.
  1899.      *  
  1900.      *  pName - IN - name of the Property whose value is to be retrieved
  1901.      *  pValue - OUT - the address of the integer value 
  1902.      */
  1903.     STDMETHOD(GetInt64RefByName)       (THIS_
  1904.                                         const char*     pName,
  1905.                                         REF(INT64*)     pValue) const PURE;
  1906.     /************************************************************************
  1907.      *  Method:
  1908.      *      IHXRegistry2::GetInt64RefById
  1909.      *  Purpose:
  1910.      *      Retrieve a 64-bit INTEGER REFERENCE property from the registry
  1911.      *  given its id "ulId".  If the Property is found it will return
  1912.      *  HXR_OK and pValue will be assigned the address of the integer
  1913.      *  (not the value of the integer, which can be obtained even for
  1914.      *  INTREFs via the GetIntByxxx methods.)  Otherwise, it returns HXR_FAIL.
  1915.      *  
  1916.      *  pName - IN - name of the Property whose value is to be retrieved
  1917.      *  pValue - OUT - the address of the integer value 
  1918.      */
  1919.     STDMETHOD(GetInt64RefById)         (THIS_
  1920.                                         const UINT32    id,
  1921.                                         REF(INT64*)     pValue) const PURE;
  1922.     /************************************************************************
  1923.      *  Method:
  1924.      *      IHXRegistry2::GetChildIdListByName
  1925.      *  Purpose:
  1926.      *      Get a array which enumerates all of the children under a 
  1927.      *      property by id. 
  1928.      *
  1929.      *  pName - IN - name of the Property whose children are to be enumerated.
  1930.      *  pValues - OUT - array of unique Property id's.
  1931.      *  ulCount - OUT - size of the returned pValues array.
  1932.      *
  1933.      *  Note: The array must be deleted by the user.
  1934.      */
  1935.     STDMETHOD(GetChildIdListByName)     (THIS_
  1936.          const char*    pName,
  1937.          REF(UINT32*)   pValues,
  1938.          REF(UINT32)    ulCount) const PURE;
  1939.     /************************************************************************
  1940.      *  Method:
  1941.      *      IHXRegistry2::GetChildIdListById
  1942.      *  Purpose:
  1943.      *      Get a array which enumerates all of the children under a 
  1944.      *      property by id. 
  1945.      *
  1946.      *  ulId - IN - unique id of the Property whose children are to be enumerated.
  1947.      *  pValues - OUT - array of unique Property id's.
  1948.      *  ulCount - OUT - size of the returned pValues array.
  1949.      *
  1950.      *  Note: The pValues array must be deleted by the user.
  1951.      */
  1952.     STDMETHOD(GetChildIdListById)       (THIS_
  1953.          const UINT32   ulId,
  1954.          REF(UINT32*)   pValues,
  1955.          REF(UINT32)    ulCount) const PURE;
  1956.     /************************************************************************
  1957.      *  Method:
  1958.      *      IHXRegistry2::GetPropStatusById
  1959.      *  Purpose:
  1960.      *      Gets status of a property by id.
  1961.      *
  1962.      *  ulId - IN - id of property to get child ids for.
  1963.      *
  1964.      *  Returns:
  1965.      *    HXR_OK if property exists.
  1966.      *    HXR_PROP_DELETE_PENDING if property exists, but is delete-pending.
  1967.      *    HXR_FAIL if property does not exist.
  1968.      */
  1969.     STDMETHOD(GetPropStatusById) (THIS_
  1970.   const UINT32 ulId) const PURE;
  1971.     /************************************************************************
  1972.      *  Method:
  1973.      *      IHXRegistry2::GetPropStatusByName
  1974.      *  Purpose:
  1975.      *      Gets status of a property by name.
  1976.      *
  1977.      *  szPropName - IN - name of property to get child ids for.
  1978.      *
  1979.      *  Returns:
  1980.      *    HXR_OK if property exists.
  1981.      *    HXR_PROP_DELETE_PENDING if property exists, but is delete-pending.
  1982.      *    HXR_FAIL if property does not exist.
  1983.      */
  1984.     STDMETHOD(GetPropStatusByName) (THIS_
  1985.     const char* pName) const PURE;
  1986. };
  1987. // $EndPrivate.
  1988. // $Private:
  1989. /*
  1990.  *
  1991.  *  Interface:
  1992.  *
  1993.  * IHXDeletedPropResponse 
  1994.  *
  1995.  *  Purpose:
  1996.  *
  1997.  *      Provides an alternative way to be notified about the deletion
  1998.  *      of objects from the registry.
  1999.  *
  2000.  *  IID_IHXDeletePropResponse
  2001.  *
  2002.  *      {00000609-0901-11d1-8B06-00A024406D59}
  2003.  *
  2004.  */
  2005. DEFINE_GUID(IID_IHXDeletedPropResponse, 0x00000609, 0x901, 0x11d1,
  2006.                         0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  2007. #undef INTERFACE
  2008. #define INTERFACE IHXDeletedPropResponse
  2009. DECLARE_INTERFACE_(IHXDeletedPropResponse, IUnknown)
  2010. {
  2011.     /*
  2012.      *  IUnknown methods
  2013.      */
  2014.     STDMETHOD(QueryInterface)   (THIS_
  2015.                                 REFIID riid,
  2016.                                 void** ppvObj) PURE;
  2017.     STDMETHOD_(ULONG32,AddRef)  (THIS) PURE;
  2018.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  2019.     /*
  2020.      *  IHXDeletedPropResponse methods
  2021.      */
  2022.     /************************************************************************
  2023.      *  Method:
  2024.      *      IHXDeletedPropResponse::DeletedComposite
  2025.      *  Purpose:
  2026.      *      Provide notification that a COMPOSITE Property has been deleted
  2027.      *      from the registry.
  2028.      *
  2029.      *  ulId - IN - unique id of the Property which has been deleted
  2030.      *  ulParentID - IN - unique id of the parent Property of the deleted item
  2031.      *  bIsParentNotify - IN - TRUE if this is a parent notification.
  2032.      *  pName - IN - name of the deleted Property (null-terminated)
  2033.      */
  2034.     STDMETHOD(DeletedComposite)(THIS_
  2035.                                 const UINT32    ulId,
  2036.                                 const UINT32    ulParentID,
  2037. const BOOL      bIsParentNotify,
  2038.                                 IHXBuffer*     pName) PURE;
  2039.     /************************************************************************
  2040.      *  Method:
  2041.      *      IHXDeletedPropResponse::DeletedInt
  2042.      *  Purpose:
  2043.      *      Provide notification that a INTEGER Property has been deleted.
  2044.      *
  2045.      *  ulId - IN - unique id of the Property which has been deleted
  2046.      *  ulParentID - IN - unique id of the parent Property of the deleted item
  2047.      *  bIsParentNotify - IN - TRUE if this is a parent notification.
  2048.      *  pName - IN - name of the Property being deleted (null-terminated)
  2049.      *  nValue - IN - integer value of the Property which has been deleted
  2050.      */
  2051.     STDMETHOD(DeletedInt)      (THIS_
  2052.                                 const UINT32    ulId,
  2053.                                 const UINT32    ulParentID,
  2054. const BOOL      bIsParentNotify,
  2055.                                 IHXBuffer*     pName, 
  2056.                                 const INT32     nValue) PURE;
  2057.     /************************************************************************
  2058.      *  Method:
  2059.      *      IHXDeletedPropResponse::DeletedIntRef
  2060.      *  Purpose:
  2061.      *      Provide notification that an INTEGER reference Property has
  2062.      *      been deleted from the registry.
  2063.      *
  2064.      *  ulId - IN - unique id of the Property which has been deleted
  2065.      *  ulParentID - IN - unique id of the parent Property of the deleted item
  2066.      *  bIsParentNotify - IN - TRUE if this is a parent notification.
  2067.      *  pName - IN - name of the deleted Property (null-terminated)
  2068.      *  nValue - IN - integer value of the Property which has been deleted
  2069.      *  pValue - IN - the pointer of the integer reference Property
  2070.      *                which has been deleted
  2071.      */
  2072.     STDMETHOD(DeletedIntRef)   (THIS_
  2073.                                 const UINT32    ulId,
  2074.                                 const UINT32    ulParentID,
  2075. const BOOL      bIsParentNotify,
  2076.                                 IHXBuffer*     pName, 
  2077.                                 const INT32     nValue,
  2078.                                 const INT32*    pValue) PURE;
  2079.     /************************************************************************
  2080.      *  Method:
  2081.      *      IHXDeletedPropResponse::DeletedString
  2082.      *  Purpose:
  2083.      *      Provide notification that a String Property has been deleted
  2084.      *      from the registry.
  2085.      *
  2086.      *  ulId - IN - unique id of the deleted Property which has been deleted
  2087.      *  ulParentID - IN - unique id of the parent Property of the deleted item
  2088.      *  bIsParentNotify - IN - TRUE if this is a parent notification.
  2089.      *  pName - IN - name of the deleted Property (null-terminated)
  2090.      *  pValue - IN - value of the deleted Property 
  2091.      */
  2092.     STDMETHOD(DeletedString)   (THIS_
  2093.                                 const UINT32    ulId,
  2094.                                 const UINT32    ulParentID,
  2095. const BOOL      bIsParentNotify,
  2096.                                 IHXBuffer*     pName, 
  2097.                                 IHXBuffer*     pValue) PURE;
  2098.     /************************************************************************
  2099.      *  Method:
  2100.      *      IHXDeletedPropResponse::DeletedBuffer
  2101.      *  Purpose:
  2102.      *      Provide notification that a Buffer Property has been deleted
  2103.      *      from the registry.
  2104.      *
  2105.      *  ulId - IN - unique id of the Property which has been deleted
  2106.      *  ulParentID - IN - unique id of the parent Property of the deleted item
  2107.      *  bIsParentNotify - IN - TRUE if this is a parent notification.
  2108.      *  pName - IN - name of the deleted Property (null-terminated)
  2109.      *  pValue - IN - buffer value of the deleted Property 
  2110.      */
  2111.     STDMETHOD(DeletedBuffer)   (THIS_
  2112.                                 const UINT32    ulId,
  2113.                                 const UINT32    ulParentID,
  2114. const BOOL      bIsParentNotify,
  2115.                                 IHXBuffer*     pName, 
  2116.                                 IHXBuffer*     pValue) PURE;
  2117.     /************************************************************************
  2118.      *  Method:
  2119.      *      IHXDeletedPropResponse::DeletedInt64
  2120.      *  Purpose:
  2121.      *      Provide notification that a 64-bit integer Property has been
  2122.      *      deleted from the registry.
  2123.      *
  2124.      *  Note: This is not used for IHXRegistry, but for IHXRegistry2.
  2125.      *
  2126.      *  ulId - IN - unique id of the Property which has been deleted
  2127.      *  ulParentID - IN - unique id of the parent Property of the deleted item
  2128.      *  bIsParentNotify - IN - TRUE if this is a parent notification.
  2129.      *  pName - IN - name of the deleted Property (null-terminated)
  2130.      *  nValue - IN - 64-bit integer value of the deleted Property 
  2131.      */
  2132.     STDMETHOD(DeletedInt64)    (THIS_
  2133.                                 const UINT32    ulId,
  2134.                                 const UINT32    ulParentID,
  2135. const BOOL      bIsParentNotify,
  2136.                                 IHXBuffer*     pName, 
  2137.                                 const INT64     nValue) PURE;
  2138.     /************************************************************************
  2139.      *  Method:
  2140.      *      IHXDeletedPropResponse::DeletedInt64Ref
  2141.      *  Purpose:
  2142.      *      Provide notification that a 64-bit integer reference Property
  2143.      *      has been deleted from the registry.
  2144.      *
  2145.      *  Note: This is not used for IHXRegistry, but for IHXRegistry2.
  2146.      *
  2147.      *  ulId - IN - unique id of the Property which has been deleted
  2148.      *  ulParentID - IN - unique id of the parent Property of the deleted item
  2149.      *  bIsParentNotify - IN - TRUE if this is a parent notification.
  2150.      *  pName - IN - name of the deleted Property (null-terminated)
  2151.      *  nValue - IN - 64-bit integer value of the deleted Property 
  2152.      *  pValue - IN - the pointer of the 64-bit integer reference Property
  2153.      *                which has been deleted
  2154.      */
  2155.     STDMETHOD(DeletedInt64Ref) (THIS_
  2156.                                 const UINT32    ulId,
  2157.                                 const UINT32    ulParentID,
  2158. const BOOL      bIsParentNotify,
  2159.                                 IHXBuffer*     pName, 
  2160.                                 const INT64     nValue,
  2161.                                 const INT64*    pValue) PURE;
  2162. };
  2163. // $EndPrivate.
  2164. #endif /* _HXMON_H_ */