114 lines
2.5 KiB
C
114 lines
2.5 KiB
C
|
/**************************************************************************************************
|
|||
|
|
|||
|
FILENAME: BootOptimizeFat.h
|
|||
|
|
|||
|
COPYRIGHT<EFBFBD> 2001 Microsoft Corporation and Executive Software International, Inc.
|
|||
|
|
|||
|
DESCRIPTION:
|
|||
|
Boot Optimize.
|
|||
|
|
|||
|
**************************************************************************************************/
|
|||
|
//
|
|||
|
// Prototype for NtFsControlFile and data structures
|
|||
|
// used in its definition
|
|||
|
//
|
|||
|
//typedef LONG NTSTATUS;
|
|||
|
|
|||
|
//
|
|||
|
// This is the definition for a VCN/LCN (virtual cluster/logical cluster)
|
|||
|
// mapping pair that is returned in the buffer passed to
|
|||
|
// FSCTL_GET_RETRIEVAL_POINTERS
|
|||
|
//
|
|||
|
typedef struct {
|
|||
|
ULONGLONG Vcn;
|
|||
|
ULONGLONG Lcn;
|
|||
|
} MAPPING_PAIR, *PMAPPING_PAIR;
|
|||
|
|
|||
|
//
|
|||
|
// This is the definition for the buffer that FSCTL_GET_RETRIEVAL_POINTERS
|
|||
|
// returns. It consists of a header followed by mapping pairs
|
|||
|
//
|
|||
|
typedef struct {
|
|||
|
ULONG NumberOfPairs;
|
|||
|
ULONGLONG StartVcn;
|
|||
|
MAPPING_PAIR Pair[1];
|
|||
|
} GET_RETRIEVAL_DESCRIPTOR, *PGET_RETRIEVAL_DESCRIPTOR;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
DWORD BootOptimize(
|
|||
|
IN HANDLE hVolumeHandle,
|
|||
|
IN LONGLONG BitmapSize,
|
|||
|
IN LONGLONG BytesPerSector,
|
|||
|
IN LONGLONG TotalClusters,
|
|||
|
IN BOOL IsNtfs,
|
|||
|
IN ULONGLONG MftZoneStart,
|
|||
|
IN ULONGLONG MftZoneEnd,
|
|||
|
IN TCHAR tDrive
|
|||
|
);
|
|||
|
BOOL LoadOptimizeFileList(
|
|||
|
IN TCHAR* cBootOptimzePath,
|
|||
|
IN BOOL IsNtfs,
|
|||
|
IN TCHAR tDrive,
|
|||
|
IN UINT uNumberofRecords
|
|||
|
);
|
|||
|
VOID FreeFileList();
|
|||
|
LONGLONG GetSizeInformationAboutFiles();
|
|||
|
ULONGLONG GetFileSizeInfo(
|
|||
|
IN HANDLE hBootOptimizeFileHandle
|
|||
|
);
|
|||
|
|
|||
|
BOOL MoveFilesInOrder(
|
|||
|
IN ULONGLONG lFirstAvailableFreeSpace,
|
|||
|
IN ULONGLONG lEndOfFreeSpace,
|
|||
|
IN HANDLE hBootVolumeHandle
|
|||
|
);
|
|||
|
BOOL GetBootOptimizeFileStreams(
|
|||
|
IN HANDLE hBootOptimizeFileHandle,
|
|||
|
IN TCHAR* tBootOptimizeFile,
|
|||
|
IN UINT uNumberofRecords
|
|||
|
);
|
|||
|
static PTCHAR ParseStreamName(
|
|||
|
IN PTCHAR StreamName
|
|||
|
);
|
|||
|
HANDLE GetFileHandle(
|
|||
|
IN TCHAR* tBootOptimizeFile
|
|||
|
);
|
|||
|
|
|||
|
BOOL GetRegistryEntires(
|
|||
|
OUT TCHAR cBootOptimzePath[MAX_PATH]
|
|||
|
);
|
|||
|
VOID SetRegistryEntires(
|
|||
|
IN LONGLONG lLcnStartLocation,
|
|||
|
IN LONGLONG lLcnEndLocation
|
|||
|
);
|
|||
|
BOOL CloseFileHandle(
|
|||
|
IN HANDLE hBootOptimizeFileHandle
|
|||
|
);
|
|||
|
BOOL OpenReadBootOptimeFileIntoList(
|
|||
|
IN TCHAR* cBootOptimzePath,
|
|||
|
IN BOOL IsNtfs,
|
|||
|
IN TCHAR tDrive
|
|||
|
);
|
|||
|
UINT CountNumberofRecordsinFile(
|
|||
|
IN TCHAR* cBootOptimzePath
|
|||
|
);
|
|||
|
BOOL IsAValidFile(
|
|||
|
IN TCHAR pBootOptimizeFileName[MAX_PATH+1],
|
|||
|
IN TCHAR tDrive
|
|||
|
);
|
|||
|
VOID SaveErrorInRegistry(
|
|||
|
TCHAR* tComplete,
|
|||
|
TCHAR* tErrorString
|
|||
|
);
|
|||
|
LONGLONG GetStartingEndLncLocations(
|
|||
|
IN PTCHAR pRegKey
|
|||
|
);
|
|||
|
BOOL CheckDateTimeStampInputFile(
|
|||
|
IN TCHAR cBootOptimzePath[MAX_PATH]
|
|||
|
);
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|