171 lines
4.2 KiB
C++
171 lines
4.2 KiB
C++
|
/*++
|
||
|
|
||
|
Copyright (c) 1990-2000 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
convert.hxx
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
This module contains the declaration of the CONVERT class, which
|
||
|
implements the File System Conversion Utility.
|
||
|
|
||
|
Author:
|
||
|
|
||
|
Ramon Juan San Andres (ramonsa) 27-Sep-1991
|
||
|
|
||
|
Revision History:
|
||
|
|
||
|
|
||
|
--*/
|
||
|
|
||
|
|
||
|
#if !defined( _CONVERT_ )
|
||
|
|
||
|
#define _CONVERT_
|
||
|
|
||
|
#include "program.hxx"
|
||
|
#include "autoentr.hxx"
|
||
|
#include "autoreg.hxx"
|
||
|
#if defined(FE_SB) && defined(_X86_)
|
||
|
#include "drive.hxx" // for DP_DRIVE class
|
||
|
#endif
|
||
|
|
||
|
//
|
||
|
// Convert exit codes
|
||
|
//
|
||
|
#define EXIT_SUCCESS 0 // Volume Converted
|
||
|
#define EXIT_SCHEDULED 1 // Conversion scheduled for next reboot
|
||
|
#define EXIT_NOCANDO 2 // Specified conversion not available
|
||
|
#define EXIT_UNKNOWN 3 // Unknown file system
|
||
|
#define EXIT_ERROR 4 // Conversion error
|
||
|
#define EXIT_NOFREESPACE 5 // Insufficient free space for conversion
|
||
|
|
||
|
DECLARE_CLASS( STREAM_MESSAGE );
|
||
|
DECLARE_CLASS( WSTRING );
|
||
|
DECLARE_CLASS( CONVERT );
|
||
|
|
||
|
|
||
|
class CONVERT : public PROGRAM {
|
||
|
|
||
|
public:
|
||
|
|
||
|
DECLARE_CONSTRUCTOR( CONVERT );
|
||
|
|
||
|
NONVIRTUAL
|
||
|
VOID
|
||
|
Construct (
|
||
|
);
|
||
|
|
||
|
NONVIRTUAL
|
||
|
~CONVERT (
|
||
|
);
|
||
|
|
||
|
NONVIRTUAL
|
||
|
BOOLEAN
|
||
|
Initialize (
|
||
|
OUT PINT ExitCode
|
||
|
);
|
||
|
|
||
|
NONVIRTUAL
|
||
|
INT
|
||
|
Convert (
|
||
|
);
|
||
|
|
||
|
#if defined(FE_SB) && defined(_X86_)
|
||
|
// NEC98 '95.6.23
|
||
|
// We need to use ChangeBPB1 and ChangeBPB2
|
||
|
// We use these function when logicalsectorsize != phisicalsectorsize
|
||
|
BOOLEAN
|
||
|
ChangeBPB1(
|
||
|
IN PCWSTRING NtDrive
|
||
|
);
|
||
|
|
||
|
BOOLEAN
|
||
|
ChangeBPB2(
|
||
|
);
|
||
|
#endif
|
||
|
|
||
|
private:
|
||
|
|
||
|
NONVIRTUAL
|
||
|
VOID
|
||
|
Destroy (
|
||
|
);
|
||
|
|
||
|
NONVIRTUAL
|
||
|
BOOLEAN
|
||
|
RemoveScheduledAutoConv(
|
||
|
);
|
||
|
|
||
|
NONVIRTUAL
|
||
|
PPATH
|
||
|
FindSystemFile(
|
||
|
IN PWSTR FileName
|
||
|
);
|
||
|
|
||
|
NONVIRTUAL
|
||
|
BOOLEAN
|
||
|
ParseArguments(
|
||
|
OUT PINT ExitCode
|
||
|
);
|
||
|
|
||
|
NONVIRTUAL
|
||
|
BOOLEAN
|
||
|
ParseCommandLine (
|
||
|
IN PCWSTRING CommandLine,
|
||
|
IN BOOLEAN Interactive
|
||
|
);
|
||
|
|
||
|
|
||
|
NONVIRTUAL
|
||
|
BOOLEAN
|
||
|
Schedule (
|
||
|
);
|
||
|
|
||
|
|
||
|
NONVIRTUAL
|
||
|
BOOLEAN
|
||
|
ScheduleAutoConv(
|
||
|
);
|
||
|
|
||
|
DSTRING _DisplayDrive; // Display name of the given drive
|
||
|
DSTRING _DosDrive; // Dos guid name or drive letter of the volume to convert
|
||
|
DSTRING _GuidDrive; // Dos guid name of the volume to convert
|
||
|
PATH _FullPath; // Mount point or drive letter of the volume to convert
|
||
|
DSTRING _NtDrive; // NT drive name of volume to convert
|
||
|
DSTRING _FsName; // Name of target file system
|
||
|
DSTRING _CvtZoneFileName; // Convert Zone File Name
|
||
|
BOOLEAN _Verbose; // Verbose flag
|
||
|
BOOLEAN _NoSecurity; // NoSecurity flag
|
||
|
BOOLEAN _NoChkdsk; // NoChkdsk flag
|
||
|
BOOLEAN _ForceDismount; // Force Dismount flag
|
||
|
BOOLEAN _Help; // Help flag
|
||
|
BOOLEAN _Restart; // Restart flag
|
||
|
#ifdef DBLSPACE_ENABLED
|
||
|
BOOLEAN _Uncompress; // Set if we're converting a cvf
|
||
|
DSTRING _CvfName; // If uncompress, the name of the cvf
|
||
|
BOOLEAN _Compress; // Compress resulting filesystem
|
||
|
UCHAR _SequenceNumber // sequence number of CVF to uncompress
|
||
|
|
||
|
#endif // DBLSPACE_ENABLED
|
||
|
|
||
|
#if defined(FE_SB) && defined(_X86_)
|
||
|
// NEC98 '95.6.23
|
||
|
// It use ChangeBPB1 and ChangeBPB2.
|
||
|
USHORT _BytePerSec;
|
||
|
UCHAR _SecPerClus;
|
||
|
USHORT _Reserved;
|
||
|
USHORT _SectorNum;
|
||
|
USHORT _SecPerFat;
|
||
|
ULONG _LargeSector;
|
||
|
#endif
|
||
|
|
||
|
PPATH _Autochk; // Path to Autochk
|
||
|
PPATH _Autoconv; // Path to Autoconv
|
||
|
};
|
||
|
|
||
|
|
||
|
#endif // _CONVERT_
|