text: //////////////////////////////////////////////////////////////////////////////
  //
  //  Copyright (c) 2000-2001 Microsoft Corporation
  //
  //  Module Name:
  //      IPAddressInfo.h
  //
  //  Description:
  //      This file contains the declaration of the CIPAddressInfo
  //      class.
  //
  //  Maintained By:
  //      Galen Barbee (GalenB) 23-MAY-2000
  //
  //////////////////////////////////////////////////////////////////////////////
  
  
  // Make sure that this file is included only once per compile path.
  #pragma once
  
  
  //////////////////////////////////////////////////////////////////////////////
  // Include Files
  //////////////////////////////////////////////////////////////////////////////
  
  class CEnumIPAddresses;
  
  //////////////////////////////////////////////////////////////////////////////
  // Constant Declarations
  //////////////////////////////////////////////////////////////////////////////
  
  //////////////////////////////////////////////////////////////////////////////
  //++
  //
  //  class CIPAddressInfo
  //
  //  Description:
  //      The class IPAddressInfo is the enumeration of
  //      cluster manageable devices.
  //
  //  Interfaces:
  //      IClusCfgIPAddressInfo
  //      IGatherData
  //      IExtendObjectManager
  //
  //--
  //////////////////////////////////////////////////////////////////////////////
  class CIPAddressInfo
      : public IExtendObjectManager
      , public IClusCfgIPAddressInfo
      , public IGatherData // private
  {
  friend class CEnumIPAddresses;
  public:
      //
      // Public constructors and destructors
      //
  
      CIPAddressInfo( void );
      virtual ~CIPAddressInfo( void );
  
      //
      // IUnknown Interfaces
      //
  
      STDMETHOD( QueryInterface )( REFIID riid, void ** ppvObject );
  
      STDMETHOD_( ULONG, AddRef )( void );
  
      STDMETHOD_( ULONG, Release )( void );
  
      //
      // IGatherData
      //
  
      STDMETHOD( Gather )( OBJECTCOOKIE cookieParentIn, IUnknown * punkIn );
  
      //
      // IClusCfgIPAddressInfo Interfaces.
      //
  
      STDMETHOD( GetUID )( BSTR * pbstrUIDOut );
  
      STDMETHOD( GetIPAddress )( ULONG * pulDottedQuadOut );
  
      STDMETHOD( SetIPAddress )( ULONG ulDottedQuad );
  
      STDMETHOD( GetSubnetMask )( ULONG * pulDottedQuadOut );
  
      STDMETHOD( SetSubnetMask )( ULONG ulDottedQuad );
  
      // IObjectManager
      STDMETHOD( FindObject )(
                    OBJECTCOOKIE  cookieIn
                  , REFCLSID      rclsidTypeIn
                  , LPCWSTR       pcszNameIn
                  , LPUNKNOWN *   ppunkOut
                  );
  
      //
      // Public, non interface methods.
      //
  
      static HRESULT S_HrCreateInstance( IUnknown ** ppunkOut );
  
  private:
      //
      // Private member functions and data
      //
  
      LONG                    m_cRef;
      ULONG                   m_ulIPAddress;
      ULONG                   m_ulIPSubnet;
      BSTR                    m_bstrUID;
      BSTR                    m_bstrName;
  
      // IExtendObjectManager
  
      // Private copy constructor to prevent copying.
      CIPAddressInfo( const CIPAddressInfo & nodeSrc );
  
      // Private assignment operator to prevent copying.
      const CIPAddressInfo & operator = ( const CIPAddressInfo & nodeSrc );
  
      STDMETHOD( HrInit )( void );
      STDMETHOD( LoadName )( void );
  
  }; //*** Class CIPAddressInfo
  