|
|
/////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 1996-1997 Microsoft Corporation
//
// Module Name:
// PropList.h
//
// Abstract:
// Definition of the CClusPropList class.
//
// Implementation File:
// PropList.cpp
//
// Author:
// David Potter (davidp) February 24, 1997
//
// Revision History:
//
// Notes:
//
/////////////////////////////////////////////////////////////////////////////
#ifndef _PROPLIST_H_
#define _PROPLIST_H_
/////////////////////////////////////////////////////////////////////////////
// Include Files
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// Forward Class Declarations
/////////////////////////////////////////////////////////////////////////////
class CObjectProperty; class CClusPropList;
/////////////////////////////////////////////////////////////////////////////
// External Class Declarations
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// CObjectProperty
/////////////////////////////////////////////////////////////////////////////
#pragma warning( disable : 4201 ) // nonstandard extension used : nameless struct/union
class CObjectProperty { public: LPCWSTR m_pwszName; CLUSTER_PROPERTY_FORMAT m_propFormat;
union CValue { CString * pstr; DWORD * pdw; BOOL * pb; struct { PBYTE * ppb; DWORD * pcb; }; }; CValue m_value; CValue m_valuePrev;
void Set( IN LPCWSTR pwszName, IN CString & rstrValue, IN CString & rstrPrevValue ) { m_pwszName = pwszName; m_propFormat = CLUSPROP_FORMAT_SZ; m_value.pstr = &rstrValue; m_value.pcb = NULL; m_valuePrev.pstr = &rstrPrevValue; m_valuePrev.pcb = NULL; }
void Set( IN LPCWSTR pwszName, IN DWORD & rdwValue, IN DWORD & rdwPrevValue ) { m_pwszName = pwszName; m_propFormat = CLUSPROP_FORMAT_DWORD; m_value.pdw = &rdwValue; m_value.pcb = NULL; m_valuePrev.pdw = &rdwPrevValue; m_valuePrev.pcb = NULL; }
void Set( IN LPCWSTR pwszName, IN BOOL & rbValue, IN BOOL & rbPrevValue ) { m_pwszName = pwszName; m_propFormat = CLUSPROP_FORMAT_DWORD; m_value.pb = &rbValue; m_value.pcb = NULL; m_valuePrev.pb = &rbPrevValue; m_valuePrev.pcb = NULL; }
void Set( IN LPCWSTR pwszName, IN PBYTE & rpbValue, IN DWORD & rcbValue, IN PBYTE & rpbPrevValue, IN DWORD & rcbPrevValue ) { m_pwszName = pwszName; m_propFormat = CLUSPROP_FORMAT_BINARY; m_value.ppb = &rpbValue; m_value.pcb = &rcbValue; m_valuePrev.ppb = &rpbPrevValue; m_valuePrev.pcb = &rcbPrevValue; }
void Set( IN LPCWSTR pwszName, IN LPWSTR & rpwszValue, IN DWORD & rcbValue, IN LPWSTR & rpwszPrevValue, IN DWORD & rcbPrevValue ) { m_pwszName = pwszName; m_propFormat = CLUSPROP_FORMAT_MULTI_SZ; m_value.ppb = (PBYTE *) &rpwszValue; m_value.pcb = &rcbValue; m_valuePrev.ppb = (PBYTE *) &rpwszPrevValue; m_valuePrev.pcb = &rcbPrevValue; }
}; //*** class CObjectProperty
/////////////////////////////////////////////////////////////////////////////
// CClusPropList dialog
/////////////////////////////////////////////////////////////////////////////
class CClusPropList : public CObject { DECLARE_DYNAMIC(CClusPropList);
// Construction
public: CClusPropList(IN BOOL bAlwaysAddProp = FALSE); ~CClusPropList(void);
// Attributes
protected: BOOL m_bAlwaysAddProp;
CLUSPROP_BUFFER_HELPER m_proplist; CLUSPROP_BUFFER_HELPER m_propCurrent; DWORD m_cbBufferSize; DWORD m_cbDataSize;
public: const CLUSPROP_BUFFER_HELPER const * Proplist(void) const { return &m_proplist; } PBYTE PbProplist(void) const { return m_proplist.pb; } DWORD CbProplist(void) const { return m_cbDataSize + sizeof(CLUSPROP_SYNTAX); /*endmark*/ } DWORD Cprops(void) const { if (m_proplist.pb == NULL) return 0; return m_proplist.pList->nPropertyCount; }
void AddProp( IN LPCWSTR pwszName, IN const CString & rstrValue, IN const CString & rstrPrevValue ); void AddProp( IN LPCWSTR pwszName, IN DWORD dwValue, IN DWORD dwPrevValue ); void AddProp( IN LPCWSTR pwszName, IN const PBYTE pbValue, IN DWORD cbValue, IN const PBYTE pbPrevValue, IN DWORD cbPrevValue );
void AllocPropList(IN DWORD cbMinimum);
// Operations
public: DWORD DwGetNodeProperties( IN HNODE hNode, IN DWORD dwControlCode, IN HNODE hHostNode = NULL, IN LPVOID lpInBuffer = NULL, IN DWORD cbInBufferSize = 0 );
DWORD DwGetGroupProperties( IN HGROUP hGroup, IN DWORD dwControlCode, IN HNODE hHostNode = NULL, IN LPVOID lpInBuffer = NULL, IN DWORD cbInBufferSize = 0 );
DWORD DwGetResourceProperties( IN HRESOURCE hResource, IN DWORD dwControlCode, IN HNODE hHostNode = NULL, IN LPVOID lpInBuffer = NULL, IN DWORD cbInBufferSize = 0 );
DWORD DwGetResourceTypeProperties( IN HCLUSTER hCluster, IN LPCWSTR pwszResTypeName, IN DWORD dwControlCode, IN HNODE hHostNode = NULL, IN LPVOID lpInBuffer = NULL, IN DWORD cbInBufferSize = 0 );
DWORD DwGetNetworkProperties( IN HNETWORK hNetwork, IN DWORD dwControlCode, IN HNODE hHostNode = NULL, IN LPVOID lpInBuffer = NULL, IN DWORD cbInBufferSize = 0 );
DWORD DwGetNetInterfaceProperties( IN HNETINTERFACE hNetInterface, IN DWORD dwControlCode, IN HNODE hHostNode = NULL, IN LPVOID lpInBuffer = NULL, IN DWORD cbInBufferSize = 0 );
// Overrides
// Implementation
protected: void CopyProp( IN PCLUSPROP_SZ pprop, IN CLUSTER_PROPERTY_TYPE proptype, IN LPCWSTR pwsz, IN DWORD cbsz = 0 ); void CopyProp( IN PCLUSPROP_DWORD pprop, IN CLUSTER_PROPERTY_TYPE proptype, IN DWORD dw ); void CopyProp( IN PCLUSPROP_BINARY pprop, IN CLUSTER_PROPERTY_TYPE proptype, IN const PBYTE pb, IN DWORD cb );
DWORD DwGetPrivateProps( OUT PBYTE * ppbProps, IN CLUSTER_CONTROL_OBJECT ccobjtype = CLUS_OBJECT_RESOURCE ); DWORD DwSetPrivateProps( IN PBYTE pbProps, IN DWORD cbProps, IN CLUSTER_CONTROL_OBJECT ccobjtype = CLUS_OBJECT_RESOURCE );
}; //*** class CClusPropList
#pragma warning( default : 4201 )
/////////////////////////////////////////////////////////////////////////////
#endif // _PROPLIST_H_
|