///////////////////////////////////////////////////////////////////////////// // // Copyright (c) 1999 Microsoft Corporation // // Module Name: // Partition.h // // Description: // Definition of the cluster disk partition class for the MSCLUS automation // classes. // // Implementation File: // Partition.cpp // // Author: // Galen Barbee (galenb) 10-Feb-1999 // // Revision History: // // Notes: // ///////////////////////////////////////////////////////////////////////////// #ifndef __PARTITION_H_ #define __PARTITION_H__ #if CLUSAPI_VERSION >= 0x0500 #include #else #include "PropList.h" #endif // CLUSAPI_VERSION >= 0x0500 ///////////////////////////////////////////////////////////////////////////// // Forward Class Declarations ///////////////////////////////////////////////////////////////////////////// class CClusPartition; class CClusPartitions; ///////////////////////////////////////////////////////////////////////////// //++ // // class CClusPartition // // Description: // Cluster Partition Automation Class. // // Inheritance: // IDispatchImpl< ISClusPartition, &IID_ISClusPartition, &LIBID_MSClusterLib, MAJORINTERFACEVER, MINORINTERFACEVER >, // CSupportErrorInfo // CComObjectRootEx< CComSingleThreadModel > // CComCoClass< CClusPartition, &CLSID_ClusPartition > // //-- ///////////////////////////////////////////////////////////////////////////// class ATL_NO_VTABLE CClusPartition : public IDispatchImpl< ISClusPartition, &IID_ISClusPartition, &LIBID_MSClusterLib, MAJORINTERFACEVER, MINORINTERFACEVER >, public CSupportErrorInfo, public CComObjectRootEx< CComSingleThreadModel >, public CComCoClass< CClusPartition, &CLSID_ClusPartition > { typedef CComObjectRootEx< CComSingleThreadModel > BaseComClass; public: CClusPartition( void ); BEGIN_COM_MAP(CClusPartition) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(ISClusPartition) COM_INTERFACE_ENTRY(ISupportErrorInfo) END_COM_MAP() DECLARE_NOT_AGGREGATABLE(CClusPartition) DECLARE_NO_REGISTRY() private: CLUS_PARTITION_INFO m_cpi; public: HRESULT Create( IN CLUS_PARTITION_INFO * pcpi ); STDMETHODIMP get_Flags( OUT long * plFlags ); STDMETHODIMP get_DeviceName( OUT BSTR * pbstrDeviceName ); STDMETHODIMP get_VolumeLabel( OUT BSTR * pbstrVolumeLabel ); STDMETHODIMP get_SerialNumber( OUT long * plSerialNumber ); STDMETHODIMP get_MaximumComponentLength( OUT long * plMaximumComponentLength ); STDMETHODIMP get_FileSystemFlags( OUT long * plFileSystemFlags ); STDMETHODIMP get_FileSystem( OUT BSTR * pbstrFileSystem ); }; //*** Class CClusPartition ///////////////////////////////////////////////////////////////////////////// //++ // // class CClusPartitions // // Description: // Cluster Partition Collection Automation Class. // // Inheritance: // IDispatchImpl< ISClusPartitions, &IID_ISClusPartitions, &LIBID_MSClusterLib, MAJORINTERFACEVER, MINORINTERFACEVER >, // CSupportErrorInfo // CComObjectRootEx< CComSingleThreadModel > // CComCoClass< CClusPartitions, &CLSID_ClusPartitions > // //-- ///////////////////////////////////////////////////////////////////////////// class ATL_NO_VTABLE CClusPartitions : public IDispatchImpl< ISClusPartitions, &IID_ISClusPartitions, &LIBID_MSClusterLib, MAJORINTERFACEVER, MINORINTERFACEVER >, public CSupportErrorInfo, public CComObjectRootEx< CComSingleThreadModel >, public CComCoClass< CClusPartitions, &CLSID_ClusPartitions > { typedef CComObjectRootEx< CComSingleThreadModel > BaseComClass; public: CClusPartitions( void ); ~CClusPartitions( void ); BEGIN_COM_MAP(CClusPartitions) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(ISClusPartitions) COM_INTERFACE_ENTRY(ISupportErrorInfo) END_COM_MAP() DECLARE_NOT_AGGREGATABLE(CClusPartitions) DECLARE_NO_REGISTRY() HRESULT HrCreateItem( IN CLUS_PARTITION_INFO * pcpi ); protected: typedef std::vector< CComObject< CClusPartition > * > PartitionVector; PartitionVector m_pvPartitions; void Clear( void ); HRESULT GetIndex( VARIANT varIndex, UINT *pnIndex ); public: STDMETHODIMP get_Count( OUT long * plCount ); STDMETHODIMP get_Item( IN VARIANT varIndex, OUT ISClusPartition ** ppPartition ); STDMETHODIMP get__NewEnum( OUT IUnknown ** ppunk ); }; //*** Class CClusPartitions #endif // __PARTITION_H__