Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

138 lines
2.9 KiB

/****************************************************************************************************************
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_