windows-nt/Source/XPSP1/NT/base/fs/utils/dfrg/inc/diskview.h

77 lines
2.3 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*****************************************************************************************************************
FILENAME: diskview.hpp
COPYRIGHT<EFBFBD> 2001 Microsoft Corporation and Executive Software International, Inc.
*/
#ifndef _DISKVIEW_H
#define _DISKVIEW_H
class DiskView {
private:
int Clusters; // number of clusters on the disk
int ClusterArraySize; // number of elements in pClusterArray
int NumLines; // number of lines in the line array
int ClusterFactor; // number of clusters per line in the line array
int MftZoneStart; // first cluster of the MFT zone (or reserved space)
int MftZoneEnd; // last cluster of the MFT zone (or reserved space)
char * pClusterArray; // memory array holding data about the fragmented or contiguous
// etc state for each cluster on the volume
// (one nibble per cluster)
char * pLineArray; // memory array holding condensed cluster data for GUI
BOOL m_bIsDataSent;
BOOL m_IsActive; // is this DiskView in use
UINT m_FragColorThreshold; // required % fragmented clusters to turn line red
BOOL m_bMemAllocFailed; // failed to allocate cluster or line array
INT m_nFreeDelta;
INT m_nFragDelta;
INT m_nNonMovableDelta;
INT m_nUsedDelta;
void InitFragColorThreshold();
BOOL TransferToLineArray();
BOOL Invariant() const;
CRITICAL_SECTION m_CriticalSection;
public:
DiskView(const int, const int, const int);
DiskView(const DiskView&);
DiskView();
DiskView& operator=(const DiskView&);
~DiskView();
BOOL IsActive() {return m_IsActive;}
BOOL IsDataSent() {return m_bIsDataSent;}
BOOL HasMapMemory() const;
void SetNumLines(const int numLines);
void SetClusterCount(const int InClusters);
void SetMftZone(const int InZoneStart, const int InZoneEnd);
BOOL GetLineArray(char ** ppOutLineArray, DWORD *pNumLines);
void UpdateClusterArray(PBYTE);
void EnterMyCriticalSection();
void LeaveMyCriticalSection();
};
// must match DiskDisp.h
#define SystemFileColor 0 // green
#define PageFileColor 1 // green
#define FragmentColor 2 // red
#define UsedSpaceColor 3 // blue
#define FreeSpaceColor 4 // white
#define DirectoryColor 5 // blue
#define MftZoneFreeSpaceColor 6 // green
#define NUM_COLORS 7
#define DirtyColor 12
#endif // #define _DISKVIEW_H