hxmon.h
上传用户:dangjiwu
上传日期:2013-07-19
资源大小:42019k
文件大小:89k
源码类别:

Symbian

开发平台:

Visual C++

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