|
|
/****************************************************************************************************************
FILENAME: FsSubs.h
COPYRIGHT� 2001 Microsoft Corporation and Executive Software International, Inc.
***************************************************************************************************************/
#ifndef _FSSUBS_H_
#define _FSSUBS_H_
#include "dfrgengn.h"
#include "FraggedFileList.h"
#ifdef OFFLINEDK
BOOL GetFileSystem( IN TCHAR DriveLetter, OUT PULONG pFileSystem ); #else
BOOL GetFileSystem( IN PTCHAR volumeName, OUT PULONG pFileSystem, OUT TCHAR* pVolumeLabel ); #endif
//Reduces an extent list to an actual extent list as can be seen on the disk.
//Sometimes extent lists contain two or more factually contiguous "extents".
BOOL CollapseExtentList( EXTENT_LIST_DATA* pExtentData );
BOOL CountStreamExtentsAndClusters( DWORD dwStreamNumber, LONGLONG* pExcessExtents, LONGLONG* pClusters );
//Gets the earliest Lcn of the file on the drive.
BOOL GetLowestStartingLcn( OUT LONGLONG* pStartingLcn, FILE_EXTENT_HEADER* pFileExtentHeader );
BOOL FillMostFraggedList( CFraggedFileList &fraggedFileList, IN CONST BOOL fAnalyseOnly = FALSE );
// compresses long paths into 50 character paths
BOOL ESICompressFilePath( IN PTCHAR infilePath, OUT PTCHAR outFilePath );
// compresses long paths into 50 character paths, in place
TCHAR * ESICompressFilePath( IN PTCHAR inFilePath );
BOOL IsVolumeDirty( void );
BOOL IsVolumeRemovable( PTCHAR volumeName );
BOOL IsFAT12Volume( PTCHAR volumeName );
void FormatDisplayString( TCHAR driveLetter, PTCHAR volumeLabel, PTCHAR displayLabel );
//*************************************
//
// These are for NT5 only
//
//*************************************
#define MAX_MOUNT_POINTS 10
#ifndef VER4 // NT5 version
BOOL GetDriveLetterByGUID( PTCHAR volumeName, TCHAR &driveLetter );
BOOL GetMountPointList( VString Name, // path to a mount point (start with a drive letter)
PWSTR VolumeName, // guid of volume in question
VString mountPointList[MAX_MOUNT_POINTS], UINT &mountPointCount );
// gets the mount point list given a guid
void GetVolumeMountPointList( PWSTR volumeName, VString mountPointList[MAX_MOUNT_POINTS], UINT &mountPointCount );
// overload of NT4 version for use with NT5
void FormatDisplayString( TCHAR driveLetter, PTCHAR volumeLabel, VString mountPointList[MAX_MOUNT_POINTS], UINT mountPointCount, PTCHAR displayLabel );
// check if enough free space exists to defrag
BOOL ValidateFreeSpace(BOOL bCommandLineMode, LONGLONG llFreeSpace, LONGLONG llUsableFreeSpace, LONGLONG llDiskSize, TCHAR *VolLabel, TCHAR *returnMsg, UINT returnMsgLen);
BOOL IsBootVolume( IN TCHAR tDrive );
#endif // #ifndef VER4
#endif //#ifndef _FSSUBS_H_
|