152 lines
3.3 KiB
C++
152 lines
3.3 KiB
C++
|
//////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Copyright (c) 1999-2000 Microsoft Corporation
|
||
|
//
|
||
|
// Module Name:
|
||
|
// ClusterEnum.cpp
|
||
|
//
|
||
|
// Description:
|
||
|
// Implementation of CClusterEnum class
|
||
|
//
|
||
|
// Author:
|
||
|
// Henry Wang (HenryWa) 24-AUG-1999
|
||
|
//
|
||
|
//////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
#include "Pch.h"
|
||
|
#include "ClusterEnum.h"
|
||
|
|
||
|
//****************************************************************************
|
||
|
//
|
||
|
// CClusterEnum
|
||
|
//
|
||
|
//****************************************************************************
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////////////
|
||
|
//++
|
||
|
//
|
||
|
// CClusterEnum::CClusterEnum(
|
||
|
// HCLUSTER hCluster,
|
||
|
// DWORD dwEnumTypeIn
|
||
|
// )
|
||
|
//
|
||
|
// Description:
|
||
|
// Constructor.
|
||
|
//
|
||
|
// Arguments:
|
||
|
// hClusterIn -- Cluster handle.
|
||
|
// dwEnumTypeIn -- Type of enumeration.
|
||
|
//
|
||
|
// Return Values:
|
||
|
// None.
|
||
|
//
|
||
|
//--
|
||
|
//////////////////////////////////////////////////////////////////////////////
|
||
|
CClusterEnum::CClusterEnum(
|
||
|
HCLUSTER hCluster,
|
||
|
DWORD dwEnumTypeIn
|
||
|
)
|
||
|
: m_pwszName( NULL )
|
||
|
, m_hEnum( NULL )
|
||
|
, m_Idx( 0 )
|
||
|
{
|
||
|
m_hEnum = ClusterOpenEnum( hCluster, dwEnumTypeIn );
|
||
|
|
||
|
m_cchName = 1024;
|
||
|
m_pwszName = new WCHAR[ (m_cchName + 1) * sizeof( WCHAR ) ];
|
||
|
|
||
|
} //*** CClusterEnum::CClusterEnum()
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////////////
|
||
|
//++
|
||
|
//
|
||
|
// CClusterEnum::~CClusterEnum( void )
|
||
|
//
|
||
|
// Description:
|
||
|
// Destructor.
|
||
|
//
|
||
|
// Arguments:
|
||
|
// None.
|
||
|
//
|
||
|
// Return Values:
|
||
|
// None.
|
||
|
//
|
||
|
//--
|
||
|
//////////////////////////////////////////////////////////////////////////////
|
||
|
CClusterEnum::~CClusterEnum( void )
|
||
|
{
|
||
|
if ( m_pwszName )
|
||
|
{
|
||
|
delete [] m_pwszName;
|
||
|
}
|
||
|
if ( m_hEnum )
|
||
|
{
|
||
|
ClusterCloseEnum( m_hEnum );
|
||
|
}
|
||
|
|
||
|
} //*** CClusterEnum::~CClusterEnum()
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////////////
|
||
|
//++
|
||
|
//
|
||
|
// const LPCWSTR
|
||
|
// CClusterEnum::GetNext( void )
|
||
|
//
|
||
|
// Description:
|
||
|
// Get the next item from the enumeration.
|
||
|
//
|
||
|
// Arguments:
|
||
|
// None.
|
||
|
//
|
||
|
// Return Values:
|
||
|
// Pointer to the next item name.
|
||
|
//
|
||
|
//--
|
||
|
//////////////////////////////////////////////////////////////////////////////
|
||
|
const LPCWSTR
|
||
|
CClusterEnum::GetNext( void )
|
||
|
{
|
||
|
DWORD cchName = m_cchName;
|
||
|
DWORD dwType;
|
||
|
DWORD dwError;
|
||
|
|
||
|
dwError = ClusterEnum(
|
||
|
m_hEnum,
|
||
|
m_Idx,
|
||
|
&dwType,
|
||
|
m_pwszName,
|
||
|
&cchName
|
||
|
);
|
||
|
|
||
|
if ( dwError == ERROR_MORE_DATA )
|
||
|
{
|
||
|
delete [] m_pwszName;
|
||
|
m_cchName = ++cchName;
|
||
|
m_pwszName = new WCHAR[ m_cchName * sizeof( WCHAR ) ];
|
||
|
|
||
|
if ( m_pwszName != NULL )
|
||
|
{
|
||
|
dwError = ClusterEnum(
|
||
|
m_hEnum,
|
||
|
m_Idx,
|
||
|
&dwType,
|
||
|
m_pwszName,
|
||
|
&cchName
|
||
|
);
|
||
|
} // if:
|
||
|
else
|
||
|
{
|
||
|
dwError = ERROR_NOT_ENOUGH_MEMORY;
|
||
|
} // else:
|
||
|
} // if: buffer is too small
|
||
|
|
||
|
if ( dwError == ERROR_SUCCESS )
|
||
|
{
|
||
|
m_Idx++;
|
||
|
return m_pwszName;
|
||
|
}
|
||
|
|
||
|
return NULL;
|
||
|
|
||
|
} //*** CClusterEnum::GetNext()
|