windows-nt/Source/XPSP1/NT/drivers/ftapi/ftman/logvol.h
2020-09-26 16:20:57 +08:00

123 lines
3.3 KiB
C++

/*++
Copyright (c) 1998 Microsoft Corporation
Module Name:
FTMan
File Name:
LogVol.h
Abstract:
The definition of class CLogicalVolumeData. The class who stores all properties of a logical volume
Author:
Cristian Teodorescu October 20, 1998
Notes:
Revision History:
--*/
/////////////////////////////////////////////////////////////////////////////
#if !defined(AFX_LOGVOL_H_INCLUDED_)
#define AFX_LOGVOL_H_INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <FTTypes.h>
#include "Item.h"
////////////////////////////////////////////////////////////////////////////////////////////////////
// Class CLogicalVolumeData
class CLogicalVolumeData : public CItemData
{
public:
// Constructor providing the ID of the Logical Volume
CLogicalVolumeData(
FT_LOGICAL_DISK_ID llVolID,
CItemData* pParentData = NULL,
BOOL bIsRootVolume = FALSE,
USHORT unMemberIndex = MAXWORD,
FT_MEMBER_STATE nMemberStatus = FtMemberHealthy );
// Copy constructor
CLogicalVolumeData( CLogicalVolumeData& rData );
virtual ~CLogicalVolumeData() {};
// Operations
public:
virtual BOOL ReadItemInfo( CString& strErrors );
// Read the FT related info of the logical volume
BOOL ReadFTInfo( CString& strErrors );
virtual BOOL ReadMembers( CObArray& arrMembersData, CString& strErrors );
virtual int ComputeImageIndex() const;
virtual BOOL operator==(CItemData& rData) const;
// Provide item properties
virtual void GetDisplayName( CString& strDisplay ) const ;
virtual void GetDisplayType( CString& strDisplay ) const ;
virtual void GetDisplayExtendedName( CString& strDisplay ) const ;
virtual BOOL GetVolumeID( FT_LOGICAL_DISK_ID& llVolID ) const;
virtual BOOL GetSize( LONGLONG& llSize ) const;
virtual BOOL GetDiskNumber( ULONG& ulDiskNumber ) const;
virtual BOOL GetOffset( LONGLONG& llOffset) const;
//Data members
public:
// Logical Volume ID
FT_LOGICAL_DISK_ID m_llVolID;
// Logical Volume Size
LONGLONG m_llVolSize;
// Logical Volume Type ( FtPartition, FtVolumeSet, FtStripeSet, FtMirrorSet, FtStripeSetWithParity, FtRedistribution )
FT_LOGICAL_DISK_TYPE m_nVolType;
// Configuration info
union
{
// For a FT partition I must keep some extra info together with FT_PARTITION_CONFIGURATION_INFORMATION
struct
{
FT_PARTITION_CONFIGURATION_INFORMATION Config;
PARTITION_TYPE wPartitionType;
DWORD dwPartitionNumber;
} partConfig;
// For all other logical volumes the FT_.... structure is enough
FT_STRIPE_SET_CONFIGURATION_INFORMATION stripeConfig;
FT_MIRROR_SET_CONFIGURATION_INFORMATION mirrorConfig;
FT_STRIPE_SET_WITH_PARITY_CONFIGURATION_INFORMATION swpConfig;
FT_REDISTRIBUTION_CONFIGURATION_INFORMATION redistConfig;
} m_ConfigInfo;
// State info
union
{
FT_MIRROR_AND_SWP_STATE_INFORMATION stripeState;
FT_REDISTRIBUTION_STATE_INFORMATION redistState;
} m_StateInfo;
// If the volume is a member of a logical volume set store here the zero-based index of the member in the set
// MAXWORD if the volume is not a member of a set ( then IsRootVolume returns TRUE )
USHORT m_unMemberIndex;
protected:
virtual BOOL RetrieveNTName( CString& strNTName ) const;
virtual BOOL RetrieveDisksSet();
};
#endif // !defined(AFX_LOGVOL_H_INCLUDED_)