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.
218 lines
7.0 KiB
218 lines
7.0 KiB
/*++
|
|
|
|
Copyright (c) 1990-2001 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
ifsentry.hxx
|
|
|
|
Abstract:
|
|
|
|
Contains prototypes for entry points to the IFS
|
|
utility DLLs.
|
|
|
|
|
|
Author:
|
|
|
|
Bill McJohn (billmc) 04-June-1991
|
|
|
|
Environment:
|
|
|
|
User Mode
|
|
|
|
--*/
|
|
|
|
|
|
#if !defined ( _IFS_ENTRY_ )
|
|
|
|
#define _IFS_ENTRY_
|
|
|
|
#if !defined(_IFS_SERV_)
|
|
|
|
//
|
|
// Definition of DRIVE_TYPE
|
|
//
|
|
enum DRIVE_TYPE {
|
|
UnknownDrive,
|
|
RemovableDrive,
|
|
FixedDrive,
|
|
RemoteDrive,
|
|
CdRomDrive,
|
|
RamDiskDrive
|
|
};
|
|
|
|
//
|
|
// Internal definitions for Flags field in CHKDSKEX_FN_PARAM
|
|
//
|
|
#define CHKDSK_RECOVER_FREE_SPACE 0x00000002UL
|
|
#define CHKDSK_RECOVER_ALLOC_SPACE 0x00000004UL
|
|
|
|
//
|
|
// External definitions for Flags field in CHKDSKEX_FN_PARAM
|
|
//
|
|
|
|
// CHKDSK_VERBOSE
|
|
// - For FAT, chkdsk will print every filename being processed
|
|
// - For NTFS, chkdsk will print clean up messages
|
|
// CHKDSK_RECOVER
|
|
// - Perform sector checking on free and allocated space
|
|
// CHKDSK_EXTEND
|
|
// - For NTFS, chkdsk will extend a volume
|
|
// CHKDSK_DOWNGRADE (for NT 5 or later but obsolete anyway)
|
|
// - For NTFS, this downgrade a volume from most recent NTFS version
|
|
// CHKDSK_ENABLE_UPGRADE (for NT 5 or later but obsolete anyway)
|
|
// - For NTFS, this upgrades a volume to most recent NTFS version
|
|
// CHKDSK_RESIZE_LOGFILE
|
|
// - For NTFS, this changes the size of the logfile
|
|
// CHKDSK_CHECK_IF_DIRTY
|
|
// - Perform consistency check only if the volume is dirty
|
|
// CHKDSK_FORCE
|
|
// - Forces the volume to dismount first if necessary (implies /F)
|
|
// CHKDSK_SKIP_INDEX_SCAN
|
|
// - Skip the scanning of each index entry
|
|
// CHKDSK_SKIP_CYCLE_SCAN
|
|
// - Skip the checking of cycles within the directory tree
|
|
// CHKDSK_ALGORITHM_SPECIFIED
|
|
// - For NTFS, this indicates an algorithm value is specified
|
|
// This bit cannot be used together with CHKDSK_SKIP_INDEX_SCAN
|
|
|
|
#define CHKDSK_VERBOSE 0x00000001UL
|
|
#define CHKDSK_RECOVER (CHKDSK_RECOVER_FREE_SPACE | \
|
|
CHKDSK_RECOVER_ALLOC_SPACE)
|
|
#define CHKDSK_EXTEND 0x00000008UL
|
|
#define CHKDSK_DOWNGRADE 0x00000010UL
|
|
#define CHKDSK_ENABLE_UPGRADE 0x00000020UL
|
|
#define CHKDSK_RESIZE_LOGFILE 0x00000040UL
|
|
#define CHKDSK_CHECK_IF_DIRTY 0x00000080UL
|
|
#define CHKDSK_FORCE 0x00000100UL
|
|
#define CHKDSK_SKIP_INDEX_SCAN 0x00000200UL
|
|
#define CHKDSK_SKIP_CYCLE_SCAN 0x00000400UL
|
|
#define CHKDSK_ALGORITHM_SPECIFIED 0x00000800UL
|
|
|
|
//
|
|
// Values related to the above bits
|
|
//
|
|
#define CHKDSK_MAX_ALGORITHM_VALUE 50
|
|
|
|
typedef struct _CHKDSKEX_FN_PARAM {
|
|
UCHAR Major; // initial version is 1.0
|
|
UCHAR Minor;
|
|
ULONG Flags;
|
|
ULONG LogFileSize;
|
|
PPATH PathToCheck; // path including mount points
|
|
PPATH RootPath; // path from the root of the actual drive
|
|
USHORT Algorithm; // number of passes to use during stage 2 of NTFS chkdsk
|
|
} CHKDSKEX_FN_PARAM, *PCHKDSKEX_FN_PARAM;
|
|
|
|
//
|
|
// External definitions for Flags field in FORMATEX_FN_PARAM
|
|
//
|
|
|
|
#define FORMAT_QUICK 0x00000001UL
|
|
#define FORMAT_BACKWARD_COMPATIBLE 0x00000002UL
|
|
#define FORMAT_FORCE 0x00000004UL
|
|
#define FORMAT_YES 0x80000000UL
|
|
|
|
// FORMAT_QUICK
|
|
// - Performs a quick format
|
|
// FORMAT_BACKWARD_COMPATIBLE
|
|
// - Formats a volume to be backward compatible to an older version of NTFS volume
|
|
// FORMAT_FORCE
|
|
// - Forces the volume to dismount first if necessary
|
|
// FORMAT_YES
|
|
// - Ignore all warnings and safety prompts. Just go ahead and format.
|
|
|
|
|
|
typedef struct _FORMATEX_FN_PARAM {
|
|
UCHAR Major; // initial version is 1.0
|
|
UCHAR Minor;
|
|
ULONG Flags;
|
|
PCWSTRING LabelString; // supplies the volume's label
|
|
ULONG ClusterSize; // supplies the cluster size for the volume
|
|
} FORMATEX_FN_PARAM, *PFORMATEX_FN_PARAM;
|
|
|
|
#endif // _IFS_SERV_
|
|
|
|
#if defined( _AUTOCHECK_ ) && !defined( _SETUP_LOADER_ )
|
|
#define FAR
|
|
#define WINAPI __stdcall
|
|
#define APIENTRY WINAPI
|
|
#endif // _AUTOCHECK_ || _SETUP_LOADER_
|
|
|
|
|
|
typedef BOOLEAN(FAR APIENTRY * CHKDSK_FN)( PCWSTRING DriveName,
|
|
PMESSAGE Message,
|
|
BOOLEAN Fix,
|
|
BOOLEAN Verbose,
|
|
BOOLEAN OnlyIfDirty,
|
|
BOOLEAN Recover,
|
|
PPATH PathToCheck,
|
|
BOOLEAN Extend,
|
|
BOOLEAN ResizeLogFile,
|
|
ULONG LogFileSize,
|
|
PULONG ExitStatus);
|
|
|
|
typedef BOOLEAN(FAR APIENTRY * CHKDSKEX_FN)( PCWSTRING DriveName,
|
|
PMESSAGE Message,
|
|
BOOLEAN Fix,
|
|
PCHKDSKEX_FN_PARAM Param,
|
|
PULONG ExitStatus );
|
|
|
|
typedef BOOLEAN(FAR APIENTRY * FORMAT_FN)( PCWSTRING,
|
|
PMESSAGE,
|
|
BOOLEAN,
|
|
BOOLEAN,
|
|
MEDIA_TYPE,
|
|
PCWSTRING,
|
|
ULONG );
|
|
|
|
typedef BOOLEAN(FAR APIENTRY * FORMATEX_FN)( PCWSTRING,
|
|
PMESSAGE,
|
|
PFORMATEX_FN_PARAM,
|
|
MEDIA_TYPE );
|
|
|
|
|
|
typedef BOOLEAN(FAR APIENTRY * RECOVER_FN)( PPATH, PMESSAGE );
|
|
|
|
typedef BOOLEAN (FAR APIENTRY * EXTEND_FN)(PCWSTRING, PMESSAGE, BOOLEAN Verify);
|
|
|
|
#if !defined(_IFS_SERV_)
|
|
|
|
//
|
|
// Convert status code
|
|
//
|
|
typedef enum _CONVERT_STATUS {
|
|
|
|
CONVERT_STATUS_CONVERTED,
|
|
CONVERT_STATUS_INVALID_FILESYSTEM,
|
|
CONVERT_STATUS_CONVERSION_NOT_AVAILABLE,
|
|
CONVERT_STATUS_CANNOT_LOCK_DRIVE,
|
|
CONVERT_STATUS_ERROR,
|
|
CONVERT_STATUS_INSUFFICIENT_SPACE,
|
|
CONVERT_STATUS_NTFS_RESERVED_NAMES,
|
|
CONVERT_STATUS_DRIVE_IS_DIRTY,
|
|
CONVERT_STATUS_INSUFFICIENT_FREE_SPACE,
|
|
CONVERT_STATUS_WRITE_PROTECTED
|
|
|
|
} CONVERT_STATUS, *PCONVERT_STATUS;
|
|
|
|
#endif // _IFS_SERV_
|
|
|
|
//
|
|
// Convert option flags
|
|
//
|
|
#define CONVERT_VERBOSE_FLAG (0x00000001)
|
|
#define CONVERT_NOCHKDSK_FLAG (0x00000002)
|
|
#define CONVERT_FORCE_DISMOUNT_FLAG (0x00000004)
|
|
#define CONVERT_PAUSE_FLAG (0x00000008)
|
|
#define CONVERT_NOSECURITY_FLAG (0x00000010)
|
|
|
|
typedef LONG(FAR APIENTRY * IS_CONVERSION_AVAIL_FN)( PCWSTRING );
|
|
|
|
typedef BOOLEAN(FAR APIENTRY * CONVERT_FN)( PCWSTRING,
|
|
PCWSTRING,
|
|
PCWSTRING,
|
|
PMESSAGE,
|
|
ULONG,
|
|
PCONVERT_STATUS );
|
|
#endif // _IFS_ENTRY_
|