mirror of https://github.com/tongzx/nt5src
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
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_
|