windows-nt/Source/XPSP1/NT/base/fs/utils/ulib/inc/ifsentry.hxx

219 lines
7 KiB
C++
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*++
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_