|
|
//////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 1999-2000 Microsoft Corporation
//
// Module Name: CClusterNodeRes.cpp
//
// Description:
// Implementation of CClusterNodeRes class
//
// Author:
// Henry Wang (HenryWa) 24-AUG-1999
//
//////////////////////////////////////////////////////////////////////////////
#include "Pch.h"
#include "ClusterNodeRes.h"
//****************************************************************************
//
// CClusterNodeRes
//
//****************************************************************************
//////////////////////////////////////////////////////////////////////////////
//++
//
// CClusterNodeRes::CClusterNodeRes(
// LPCWSTR pwszNameIn,
// CWbemServices * pNamespaceIn
// )
//
// Description:
// Constructor
//
// Arguments:
// pwszNameIn -- Class name
// pNamespaceIn -- Namespace
//
// Return Values:
// None.
//
//--
//////////////////////////////////////////////////////////////////////////////
CClusterNodeRes::CClusterNodeRes( LPCWSTR pwszNameIn, CWbemServices * pNamespaceIn ) : CProvBaseAssociation( pwszNameIn, pNamespaceIn ) {
} //*** CClusterNodeRes::CClusterNodeRes()
//////////////////////////////////////////////////////////////////////////////
//++
//
// static
// CProvBase *
// CClusterNodeRes::S_CreateThis(
// LPCWSTR pwszNameIn,
// CWbemServices * pNamespaceIn,
// DWORD // dwEnumTypeIn
// )
//
// Description:
// Create a cluster node resource object.
//
// Arguments:
// pwszNameIn -- Class name
// pNamespaceIn -- Namespace
// dwEnumTypeIn -- Type id
//
// Return Values:
// Pointer to the CProvBase
//
//--
//////////////////////////////////////////////////////////////////////////////
CProvBase * CClusterNodeRes::S_CreateThis( LPCWSTR pwszNameIn, CWbemServices * pNamespaceIn, DWORD // dwEnumTypeIn
) { return new CClusterNodeRes( pwszNameIn, pNamespaceIn );
} //*** CClusterNodeRes::S_CreateThis()
//////////////////////////////////////////////////////////////////////////////
//++
//
// SCODE
// CClusterNodeRes::EnumInstance(
// long lFlagsIn,
// IWbemContext * pCtxIn,
// IWbemObjectSink * pHandlerIn
// )
//
// Description:
// Enum cluster Node resource instance
//
// Arguments:
// lFlagsIn -- WMI flag
// pCtxIn -- WMI context
// pHandlerIn -- WMI sink pointer
//
// Return Values:
// WBEM_S_NO_ERROR
//
//--
//////////////////////////////////////////////////////////////////////////////
SCODE CClusterNodeRes::EnumInstance( long lFlagsIn, IWbemContext * pCtxIn, IWbemObjectSink * pHandlerIn ) { SAFECLUSTER shCluster; SAFERESOURCE shResource; LPCWSTR pwszResName = NULL;
shCluster = OpenCluster( NULL ); CClusterEnum cluEnum( shCluster, CLUSTER_ENUM_RESOURCE );
while ( pwszResName = cluEnum.GetNext() ) { shResource = OpenClusterResource( shCluster, pwszResName );
ClusterToWMI( shResource, pHandlerIn ); } // for: each resource
return WBEM_S_NO_ERROR;
} //*** CClusterNodeRes::EnumInstance()
//////////////////////////////////////////////////////////////////////////////
//++
//
// void
// CClusterNodeRes::ClusterToWMI(
// HRESOURCE hResourceIn,
// IWbemObjectSink * pHandlerIn
// )
//
// Description:
// Translate a cluster node resource objects to WMI object.
//
// Arguments:
// hResourceIn -- Handle to cluster
// pHandlerIn -- WMI sink
//
// Return Values:
// WBEM_S_NO_ERROR
// Win32 error
//
//--
//////////////////////////////////////////////////////////////////////////////
void CClusterNodeRes::ClusterToWMI( HRESOURCE hResourceIn, IWbemObjectSink * pHandlerIn ) { CWbemClassObject wco; CClusPropList theProp; CError er; CWstrBuf wsbNodeName; CWstrBuf wsbResName; DWORD cbNodeName = MAX_PATH; DWORD cbResName = MAX_PATH; DWORD cbBytesReturned; DWORD dwState; DWORD dwError; wsbNodeName.SetSize( cbNodeName ); wsbResName.SetSize( cbResName ); m_pClass->SpawnInstance( 0, & wco );
dwError = ClusterResourceControl( hResourceIn, NULL, CLUSCTL_RESOURCE_GET_NAME, // this control code
NULL, 0, wsbResName, cbResName, & cbBytesReturned );
if ( dwError == ERROR_MORE_DATA ) { cbResName = cbBytesReturned; wsbResName.SetSize( cbResName ); er = ClusterResourceControl( hResourceIn, NULL, CLUSCTL_RESOURCE_GET_NAME, NULL, 0, wsbResName, cbResName, & cbBytesReturned ); } // if: buffer was too small
wco.SetProperty( wsbResName, PVD_PROP_PARTCOMPONENT );
dwState = GetClusterResourceState( hResourceIn, wsbNodeName, & cbNodeName, NULL, NULL ); if ( dwState == ClusterResourceStateUnknown ) { er = GetLastError(); }
wco.SetProperty( wsbNodeName, PVD_PROP_GROUPCOMPONENT ); pHandlerIn->Indicate( 1, & wco ); return;
} //*** CClusterNodeRes::ClusterToWMI()
/*
//////////////////////////////////////////////////////////////////////////////
//++
//
// SCODE
// CClusterNodeRes::GetObject(
//
// Description:
// Retrieve cluster node active resource object based given object path.
//
// Arguments:
// rObjPathIn -- Object path to cluster object
// lFlagsIn -- WMI flag
// pCtxIn -- WMI context
// pHandlerIn -- WMI sink pointer
//
// Return Values:
// WBEM_E_NOT_SUPPORTED
//
//--
//////////////////////////////////////////////////////////////////////////////
SCODE CClusterNodeRes::GetObject( CObjPath & rObjPathIn, long lFlagsIn, IWbemContext * pCtxIn, IWbemObjectSink * pHandlerIn ) { return WBEM_E_NOT_SUPPORTED;
} //*** CClusterNodeRes::GetObject()
//////////////////////////////////////////////////////////////////////////////
//++
//
// SCODE
// CClusterNodeRes::ExecuteMethod(
//
// Description:
// Execute methods defined in the mof for cluster node resource.
//
// Arguments:
// rObjPathIn -- Object path to cluster object
// pwszMethodNameIn -- Name of the method to be invoked
// lFlagIn -- WMI flag
// pParamsIn -- Input parameters for the method
// pHandlerIn -- WMI sink pointer
//
// Return Values:
// WBEM_E_NOT_SUPPORTED
//
//--
//////////////////////////////////////////////////////////////////////////////
SCODE CClusterNodeRes::ExecuteMethod( CObjPath & rObjPathIn, WCHAR * pwszMethodNameIn, long lFlagIn, IWbemClassObject * pParamsIn, IWbemObjectSink * pHandlerIn ) { return WBEM_E_NOT_SUPPORTED;
} //*** CClusterNodeRes::ExecuteMethod()
//////////////////////////////////////////////////////////////////////////////
//++
//
// SCODE
// CClusterNodeRes::PutInstance(
// CWbemClassObject & rInstToPutIn,
// long lFlagIn,
// IWbemContext * pCtxIn,
// IWbemObjectSink * pHandlerIn
// )
//
// Description:
// Save this instance.
//
// Arguments:
// rInstToPutIn -- WMI object to be saved
// lFlagIn -- WMI flag
// pCtxIn -- WMI context
// pHandlerIn -- WMI sink pointer
//
// Return Values:
// WBEM_E_NOT_SUPPORTED
//
//--
//////////////////////////////////////////////////////////////////////////////
SCODE CClusterNodeRes::PutInstance( CWbemClassObject & rInstToPutIn, long lFlagIn, IWbemContext * pCtxIn, IWbemObjectSink * pHandlerIn ) { return WBEM_E_NOT_SUPPORTED;
} //*** CClusterNodeRes::PutInstance()
//////////////////////////////////////////////////////////////////////////////
//++
//
// SCODE
// CClusterNodeRes::DeleteInstance(
// CObjPath & rObjPathIn,
// long lFlagIn,
// IWbemContext * pCtxIn,
// IWbemObjectSink * pHandlerIn
// )
//
// Description:
// Delete the object specified in rObjPathIn.
//
// Arguments:
// rObjPathIn -- ObjPath for the instance to be deleted
// lFlagIn -- WMI flag
// pCtxIn -- WMI context
// pHandlerIn -- WMI sink pointer
//
// Return Values:
// WBEM_E_NOT_SUPPORTED
//
//--
//////////////////////////////////////////////////////////////////////////////
SCODE CClusterNodeRes::DeleteInstance( CObjPath & rObjPathIn, long lFlagIn, IWbemContext * pCtxIn, IWbemObjectSink * pHandlerIn ) { return WBEM_E_NOT_SUPPORTED;
} //*** CClusterNodeRes::DeleteInstance()
*/
|