627 lines
18 KiB
C
627 lines
18 KiB
C
/*++
|
|
|
|
Copyright (c) Microsoft Corporation. All rights reserved.
|
|
|
|
Module Name:
|
|
|
|
fmifs.h
|
|
|
|
Abstract:
|
|
|
|
This header file contains the specification of the interface
|
|
between the file manager and fmifs.dll for the purposes of
|
|
accomplishing IFS functions.
|
|
|
|
Author:
|
|
|
|
Norbert P. Kusters (norbertk) 6-Mar-92
|
|
|
|
--*/
|
|
|
|
#if !defined( _FMIFS_DEFN_ )
|
|
|
|
#define _FMIFS_DEFN_
|
|
|
|
typedef LONG *PNTSTATUS;
|
|
|
|
//
|
|
// These are the defines for 'PacketType'.
|
|
// Revisions: 02/03/98: Dave Sheldon - Added FmIfsNoMediaInDevice
|
|
//
|
|
|
|
typedef enum _FMIFS_PACKET_TYPE {
|
|
FmIfsPercentCompleted = 0,
|
|
FmIfsFormatReport = 1,
|
|
FmIfsInsertDisk = 2,
|
|
FmIfsIncompatibleFileSystem = 3,
|
|
FmIfsFormattingDestination = 4,
|
|
FmIfsIncompatibleMedia = 5,
|
|
FmIfsAccessDenied = 6,
|
|
FmIfsMediaWriteProtected = 7,
|
|
FmIfsCantLock = 8,
|
|
FmIfsCantQuickFormat = 9,
|
|
FmIfsIoError = 10,
|
|
FmIfsFinished = 11,
|
|
FmIfsBadLabel = 12,
|
|
FmIfsCheckOnReboot = 13,
|
|
FmIfsTextMessage = 14,
|
|
FmIfsHiddenStatus = 15,
|
|
FmIfsClusterSizeTooSmall = 16,
|
|
FmIfsClusterSizeTooBig = 17,
|
|
FmIfsVolumeTooSmall = 18,
|
|
FmIfsVolumeTooBig = 19,
|
|
FmIfsNoMediaInDevice = 20,
|
|
FmIfsClustersCountBeyond32bits = 21,
|
|
FmIfsCantChkMultiVolumeOfSameFS = 22,
|
|
FmIfsFormatFatUsing64KCluster = 23
|
|
} FMIFS_PACKET_TYPE, *PFMIFS_PACKET_TYPE;
|
|
|
|
typedef struct _FMIFS_PERCENT_COMPLETE_INFORMATION {
|
|
ULONG PercentCompleted;
|
|
} FMIFS_PERCENT_COMPLETE_INFORMATION, *PFMIFS_PERCENT_COMPLETE_INFORMATION;
|
|
|
|
//
|
|
// These couple of bits are used in the ValuesInMB field of the structure
|
|
// FMIFS_FORMAT_REPORT_INFORMATION. When set, the corresponding
|
|
// ULONG value becomes in units of megabytes. If not set, the corresponding
|
|
// ULONG value is in units of kilobytes.
|
|
//
|
|
#define TOTAL_DISK_SPACE_IN_MB 1
|
|
#define BYTES_AVAILABLE_IN_MB 2
|
|
|
|
typedef struct _FMIFS_FORMAT_REPORT_INFORMATION {
|
|
ULONG KiloBytesTotalDiskSpace;
|
|
ULONG KiloBytesAvailable;
|
|
ULONG ValuesInMB;
|
|
} FMIFS_FORMAT_REPORT_INFORMATION, *PFMIFS_FORMAT_REPORT_INFORMATION;
|
|
|
|
// The packet for FmIfsDblspaceCreated is a Unicode string
|
|
// giving the name of the Compressed Volume File; it is not
|
|
// necessarily zero-terminated.
|
|
//
|
|
|
|
#define DISK_TYPE_GENERIC 0
|
|
#define DISK_TYPE_SOURCE 1
|
|
#define DISK_TYPE_TARGET 2
|
|
#define DISK_TYPE_SOURCE_AND_TARGET 3
|
|
|
|
typedef struct _FMIFS_INSERT_DISK_INFORMATION {
|
|
ULONG DiskType;
|
|
} FMIFS_INSERT_DISK_INFORMATION, *PFMIFS_INSERT_DISK_INFORMATION;
|
|
|
|
typedef struct _FMIFS_IO_ERROR_INFORMATION {
|
|
ULONG DiskType;
|
|
ULONG Head;
|
|
ULONG Track;
|
|
} FMIFS_IO_ERROR_INFORMATION, *PFMIFS_IO_ERROR_INFORMATION;
|
|
|
|
typedef struct _FMIFS_FINISHED_INFORMATION {
|
|
BOOLEAN Success;
|
|
} FMIFS_FINISHED_INFORMATION, *PFMIFS_FINISHED_INFORMATION;
|
|
|
|
typedef struct _FMIFS_CHECKONREBOOT_INFORMATION {
|
|
OUT BOOLEAN QueryResult; // TRUE for "yes", FALSE for "no"
|
|
} FMIFS_CHECKONREBOOT_INFORMATION, *PFMIFS_CHECKONREBOOT_INFORMATION;
|
|
|
|
typedef enum _TEXT_MESSAGE_TYPE {
|
|
MESSAGE_TYPE_PROGRESS,
|
|
MESSAGE_TYPE_RESULTS,
|
|
MESSAGE_TYPE_FINAL
|
|
} TEXT_MESSAGE_TYPE, *PTEXT_MESSAGE_TYPE;
|
|
|
|
typedef struct _FMIFS_TEXT_MESSAGE {
|
|
IN TEXT_MESSAGE_TYPE MessageType;
|
|
IN PSTR Message;
|
|
} FMIFS_TEXT_MESSAGE, *PFMIFS_TEXT_MESSAGE;
|
|
|
|
|
|
#define FMIFS_SONY_MS_MASK 0x00000001 // mask for all types of memory stick
|
|
#define FMIFS_SONY_MS 0x00000001 // device is a memory stick
|
|
#define FMIFS_SONY_MS_FMT_CMD_CAPABLE 0x00000010 // reader supports fmt cmd
|
|
#define FMIFS_SONY_MS_PROGRESS_INDICATOR_CAPABLE 0x00000020 // reader supports progress indicator
|
|
#define FMIFS_NTFS_NOT_SUPPORTED 0x00000040 // ntfs should not be used on this device
|
|
|
|
typedef struct _FMIFS_DEVICE_INFORMATION {
|
|
ULONG Flags;
|
|
} FMIFS_DEVICE_INFORMATION, *PFMIFS_DEVICE_INFORMATION;
|
|
|
|
//
|
|
// This is a list of supported floppy media types for format.
|
|
//
|
|
|
|
typedef enum _FMIFS_MEDIA_TYPE {
|
|
FmMediaUnknown,
|
|
FmMediaF5_160_512, // 5.25", 160KB, 512 bytes/sector
|
|
FmMediaF5_180_512, // 5.25", 180KB, 512 bytes/sector
|
|
FmMediaF5_320_512, // 5.25", 320KB, 512 bytes/sector
|
|
FmMediaF5_320_1024, // 5.25", 320KB, 1024 bytes/sector
|
|
FmMediaF5_360_512, // 5.25", 360KB, 512 bytes/sector
|
|
FmMediaF3_720_512, // 3.5", 720KB, 512 bytes/sector
|
|
FmMediaF5_1Pt2_512, // 5.25", 1.2MB, 512 bytes/sector
|
|
FmMediaF3_1Pt44_512, // 3.5", 1.44MB, 512 bytes/sector
|
|
FmMediaF3_2Pt88_512, // 3.5", 2.88MB, 512 bytes/sector
|
|
FmMediaF3_20Pt8_512, // 3.5", 20.8MB, 512 bytes/sector
|
|
FmMediaRemovable, // Removable media other than floppy
|
|
FmMediaFixed,
|
|
FmMediaF3_120M_512, // 3.5", 120M Floppy
|
|
// FMR Sep.8.1994 SFT YAM
|
|
// FMR Jul.14.1994 SFT KMR
|
|
FmMediaF3_640_512, // 3.5" , 640KB, 512 bytes/sector
|
|
FmMediaF5_640_512, // 5.25", 640KB, 512 bytes/sector
|
|
FmMediaF5_720_512, // 5.25", 720KB, 512 bytes/sector
|
|
// FMR Sep.8.1994 SFT YAM
|
|
// FMR Jul.14.1994 SFT KMR
|
|
FmMediaF3_1Pt2_512, // 3.5" , 1.2Mb, 512 bytes/sector
|
|
// FMR Sep.8.1994 SFT YAM
|
|
// FMR Jul.14.1994 SFT KMR
|
|
FmMediaF3_1Pt23_1024, // 3.5" , 1.23Mb, 1024 bytes/sector
|
|
FmMediaF5_1Pt23_1024, // 5.25", 1.23MB, 1024 bytes/sector
|
|
FmMediaF3_128Mb_512, // 3.5" , 128MB, 512 bytes/sector 3.5"MO
|
|
FmMediaF3_230Mb_512, // 3.5" , 230MB, 512 bytes/sector 3.5"MO
|
|
FmMediaF3_200Mb_512, // 3.5" , 200MB, 512 bytes/sector HiFD (200MB Floppy)
|
|
FmMediaF3_240Mb_512, // 3.5" , 240MB, 512 bytes/sector HiFD (240MB Floppy)
|
|
FmMediaEndOfData // Total data count.
|
|
} FMIFS_MEDIA_TYPE, *PFMIFS_MEDIA_TYPE;
|
|
|
|
//
|
|
// The structure below defines information to be passed into ChkdskEx.
|
|
// When new fields are added, the version number will have to be upgraded
|
|
// so that only new code will reference those new fields.
|
|
//
|
|
typedef struct {
|
|
UCHAR Major; // initial version is 1.0
|
|
UCHAR Minor;
|
|
ULONG Flags;
|
|
} FMIFS_CHKDSKEX_PARAM, *PFMIFS_CHKDSKEX_PARAM;
|
|
|
|
//
|
|
// Internal definitions for Flags field in FMIFS_CHKDSKEX_PARAM
|
|
//
|
|
#define FMIFS_CHKDSK_RECOVER_FREE_SPACE 0x00000002UL
|
|
#define FMIFS_CHKDSK_RECOVER_ALLOC_SPACE 0x00000004UL
|
|
|
|
//
|
|
// External definitions for Flags field in FMIFS_CHKDSKEX_PARAM
|
|
//
|
|
|
|
// FMIFS_CHKDSK_VERBOSE
|
|
// - For FAT, chkdsk will print every filename being processed
|
|
// - For NTFS, chkdsk will print clean up messages
|
|
// FMIFS_CHKDSK_RECOVER
|
|
// - Perform sector checking on free and allocated space
|
|
// FMIFS_CHKDSK_EXTEND
|
|
// - For NTFS, chkdsk will extend a volume
|
|
// FMIFS_CHKDSK_DOWNGRADE (for NT5 or later but obsolete anyway)
|
|
// - For NTFS, this downgrade a volume from most recent NTFS version
|
|
// FMIFS_CHKDSK_ENABLE_UPGRADE (for NT5 or later but obsolete anyway)
|
|
// - For NTFS, this upgrades a volume to most recent NTFS version
|
|
// FMIFS_CHKDSK_CHECK_IF_DIRTY
|
|
// - Perform consistency check only if the volume is dirty
|
|
// FMIFS_CHKDSK_FORCE (for NT5 or later)
|
|
// - Forces the volume to dismount first if necessary
|
|
// FMIFS_CHKDSK_SKIP_INDEX_SCAN
|
|
// - Skip the scanning of each index entry
|
|
// FMIFS_CHKDSK_SKIP_CYCLE_SCAN
|
|
// - Skip the checking of cycles within the directory tree
|
|
|
|
#define FMIFS_CHKDSK_VERBOSE 0x00000001UL
|
|
#define FMIFS_CHKDSK_RECOVER (FMIFS_CHKDSK_RECOVER_FREE_SPACE | \
|
|
FMIFS_CHKDSK_RECOVER_ALLOC_SPACE)
|
|
#define FMIFS_CHKDSK_EXTEND 0x00000008UL
|
|
#define FMIFS_CHKDSK_DOWNGRADE 0x00000010UL
|
|
#define FMIFS_CHKDSK_ENABLE_UPGRADE 0x00000020UL
|
|
#define FMIFS_CHKDSK_CHECK_IF_DIRTY 0x00000080UL
|
|
#define FMIFS_CHKDSK_FORCE 0x00000100UL
|
|
#define FMIFS_CHKDSK_SKIP_INDEX_SCAN 0x00000200UL
|
|
#define FMIFS_CHKDSK_SKIP_CYCLE_SCAN 0x00000400UL
|
|
|
|
//
|
|
// The structure below defines information to be passed into FormatEx2.
|
|
// When new fields are added, the version number will have to be upgraded
|
|
// so that only new code will reference those new fields.
|
|
//
|
|
typedef struct {
|
|
UCHAR Major; // initial version is 1.0
|
|
UCHAR Minor;
|
|
ULONG Flags;
|
|
PWSTR LabelString; // supplies the volume's label
|
|
ULONG ClusterSize; // supplies the cluster size for the volume
|
|
} FMIFS_FORMATEX2_PARAM, *PFMIFS_FORMATEX2_PARAM;
|
|
|
|
//
|
|
// External definitions for Flags field in FMIFS_FORMATEX2_PARAM
|
|
//
|
|
|
|
// FMIFS_FORMAT_QUICK
|
|
// - Performs a quick format
|
|
// FMIFS_FORMAT_BACKWARD_COMPATIBLE
|
|
// - Formats a volume to be backward compatible to an older version of NTFS volume
|
|
// FMIFS_FORMAT_FORCE
|
|
// - Forces the volume to dismount first if necessary
|
|
|
|
#define FMIFS_FORMAT_QUICK 0x00000001UL
|
|
#define FMIFS_FORMAT_BACKWARD_COMPATIBLE 0x00000002UL
|
|
#define FMIFS_FORMAT_FORCE 0x00000004UL
|
|
|
|
//
|
|
// Maximum length of file system format name string including version number in it
|
|
// (e.g. FAT32, NTFS 5.0, NTFS 4.0, FAT, etc)
|
|
//
|
|
#define MAX_FILE_SYSTEM_FORMAT_VERSION_NAME_LEN 16
|
|
|
|
//
|
|
// Maximum length of file system name string (e.g. NTFS, FAT32, FAT, etc)
|
|
//
|
|
#define MAX_FILE_SYSTEM_FORMAT_NAME_LEN 9
|
|
|
|
//
|
|
// Function types/interfaces.
|
|
//
|
|
|
|
typedef BOOLEAN
|
|
(*FMIFS_CALLBACK)(
|
|
IN FMIFS_PACKET_TYPE PacketType,
|
|
IN ULONG PacketLength,
|
|
IN PVOID PacketData
|
|
);
|
|
|
|
typedef
|
|
VOID
|
|
(*PFMIFS_FORMAT_ROUTINE)(
|
|
IN PWSTR DriveName,
|
|
IN FMIFS_MEDIA_TYPE MediaType,
|
|
IN PWSTR FileSystemName,
|
|
IN PWSTR Label,
|
|
IN BOOLEAN Quick,
|
|
IN FMIFS_CALLBACK Callback
|
|
);
|
|
|
|
typedef
|
|
VOID
|
|
(*PFMIFS_FORMATEX_ROUTINE)(
|
|
IN PWSTR DriveName,
|
|
IN FMIFS_MEDIA_TYPE MediaType,
|
|
IN PWSTR FileSystemName,
|
|
IN PWSTR Label,
|
|
IN BOOLEAN Quick,
|
|
IN ULONG ClusterSize,
|
|
IN FMIFS_CALLBACK Callback
|
|
);
|
|
|
|
typedef
|
|
VOID
|
|
(*PFMIFS_FORMATEX2_ROUTINE)(
|
|
IN PWSTR DriveName,
|
|
IN FMIFS_MEDIA_TYPE MediaType,
|
|
IN PWSTR FileSystemName,
|
|
IN PFMIFS_FORMATEX2_PARAM Param,
|
|
IN FMIFS_CALLBACK Callback
|
|
);
|
|
|
|
typedef
|
|
BOOLEAN
|
|
(*PFMIFS_ENABLECOMP_ROUTINE)(
|
|
IN PWSTR DriveName,
|
|
IN USHORT CompressionFormat
|
|
);
|
|
|
|
typedef
|
|
VOID
|
|
(*PFMIFS_CHKDSK_ROUTINE)(
|
|
IN PWSTR DriveName,
|
|
IN PWSTR FileSystemName,
|
|
IN BOOLEAN Fix,
|
|
IN BOOLEAN Verbose,
|
|
IN BOOLEAN OnlyIfDirty,
|
|
IN BOOLEAN Recover,
|
|
IN PWSTR PathToCheck,
|
|
IN BOOLEAN Extend,
|
|
IN FMIFS_CALLBACK Callback
|
|
);
|
|
|
|
typedef
|
|
VOID
|
|
(*PFMIFS_CHKDSKEX_ROUTINE)(
|
|
IN PWSTR DriveName,
|
|
IN PWSTR FileSystemName,
|
|
IN BOOLEAN Fix,
|
|
IN PFMIFS_CHKDSKEX_PARAM Param,
|
|
IN FMIFS_CALLBACK Callback
|
|
);
|
|
|
|
typedef
|
|
VOID
|
|
(*PFMIFS_EXTEND_ROUTINE)(
|
|
IN PWSTR DriveName,
|
|
IN BOOLEAN Verify,
|
|
IN FMIFS_CALLBACK Callback
|
|
);
|
|
|
|
typedef
|
|
VOID
|
|
(*PFMIFS_DISKCOPY_ROUTINE)(
|
|
IN PWSTR SourceDrive,
|
|
IN PWSTR DestDrive,
|
|
IN BOOLEAN Verify,
|
|
IN FMIFS_CALLBACK Callback
|
|
);
|
|
|
|
typedef
|
|
BOOLEAN
|
|
(*PFMIFS_SETLABEL_ROUTINE)(
|
|
IN PWSTR DriveName,
|
|
IN PWSTR Label
|
|
);
|
|
|
|
typedef
|
|
BOOLEAN
|
|
(*PFMIFS_QSUPMEDIA_ROUTINE)(
|
|
IN PWSTR DriveName,
|
|
OUT PFMIFS_MEDIA_TYPE MediaTypeArray OPTIONAL,
|
|
IN ULONG NumberOfArrayEntries,
|
|
OUT PULONG NumberOfMediaTypes
|
|
);
|
|
|
|
typedef
|
|
BOOLEAN
|
|
(*PFMIFS_QUERY_DEVICE_INFO_BY_HANDLE_ROUTINE)(
|
|
IN HANDLE DriveHandle,
|
|
OUT PFMIFS_DEVICE_INFORMATION DevInfo,
|
|
IN ULONG DevInfoSize
|
|
);
|
|
|
|
typedef
|
|
BOOLEAN
|
|
(*PFMIFS_QUERY_DEVICE_INFO_ROUTINE)(
|
|
IN PWSTR DriveName,
|
|
OUT PFMIFS_DEVICE_INFORMATION DevInfo,
|
|
IN ULONG DevInfoSize
|
|
);
|
|
|
|
typedef
|
|
VOID
|
|
(*PFMIFS_DOUBLESPACE_CREATE_ROUTINE)(
|
|
IN PWSTR HostDriveName,
|
|
IN ULONG Size,
|
|
IN PWSTR Label,
|
|
IN PWSTR NewDriveName,
|
|
IN FMIFS_CALLBACK Callback
|
|
);
|
|
|
|
#if defined( DBLSPACE_ENABLED )
|
|
typedef
|
|
VOID
|
|
(*PFMIFS_DOUBLESPACE_DELETE_ROUTINE)(
|
|
IN PWSTR DblspaceDriveName,
|
|
IN FMIFS_CALLBACK Callback
|
|
);
|
|
|
|
typedef
|
|
VOID
|
|
(*PFMIFS_DOUBLESPACE_MOUNT_ROUTINE)(
|
|
IN PWSTR HostDriveName,
|
|
IN PWSTR CvfName,
|
|
IN PWSTR NewDriveName,
|
|
IN FMIFS_CALLBACK Callback
|
|
);
|
|
|
|
typedef
|
|
VOID
|
|
(*PFMIFS_DOUBLESPACE_DISMOUNT_ROUTINE)(
|
|
IN PWSTR DblspaceDriveName,
|
|
IN FMIFS_CALLBACK Callback
|
|
);
|
|
|
|
typedef
|
|
BOOLEAN
|
|
(*PFMIFS_DOUBLESPACE_QUERY_INFO_ROUTINE)(
|
|
IN PWSTR DosDriveName,
|
|
OUT PBOOLEAN IsRemovable,
|
|
OUT PBOOLEAN IsFloppy,
|
|
OUT PBOOLEAN IsCompressed,
|
|
OUT PBOOLEAN Error,
|
|
OUT PWSTR NtDriveName,
|
|
IN ULONG MaxNtDriveNameLength,
|
|
OUT PWSTR CvfFileName,
|
|
IN ULONG MaxCvfFileNameLength,
|
|
OUT PWSTR HostDriveName,
|
|
IN ULONG MaxHostDriveNameLength
|
|
);
|
|
|
|
typedef
|
|
BOOLEAN
|
|
(*PFMIFS_DOUBLESPACE_SET_AUTMOUNT_ROUTINE)(
|
|
IN BOOLEAN EnableAutomount
|
|
);
|
|
|
|
#endif // DBLSPACE_ENABLED
|
|
|
|
FMIFS_MEDIA_TYPE
|
|
ComputeFmMediaType(
|
|
IN MEDIA_TYPE MediaType
|
|
);
|
|
|
|
VOID
|
|
Format(
|
|
IN PWSTR DriveName,
|
|
IN FMIFS_MEDIA_TYPE MediaType,
|
|
IN PWSTR FileSystemName,
|
|
IN PWSTR Label,
|
|
IN BOOLEAN Quick,
|
|
IN FMIFS_CALLBACK Callback
|
|
);
|
|
|
|
VOID
|
|
FormatEx(
|
|
IN PWSTR DriveName,
|
|
IN FMIFS_MEDIA_TYPE MediaType,
|
|
IN PWSTR FileSystemName,
|
|
IN PWSTR Label,
|
|
IN BOOLEAN Quick,
|
|
IN ULONG ClusterSize,
|
|
IN FMIFS_CALLBACK Callback
|
|
);
|
|
|
|
VOID
|
|
FormatEx2(
|
|
IN PWSTR DriveName,
|
|
IN FMIFS_MEDIA_TYPE MediaType,
|
|
IN PWSTR FileSystemName,
|
|
IN PFMIFS_FORMATEX2_PARAM Param,
|
|
IN FMIFS_CALLBACK Callback
|
|
);
|
|
|
|
BOOLEAN
|
|
EnableVolumeCompression(
|
|
IN PWSTR DriveName,
|
|
IN USHORT CompressionFormat
|
|
);
|
|
|
|
VOID
|
|
Chkdsk(
|
|
IN PWSTR DriveName,
|
|
IN PWSTR FileSystemName,
|
|
IN BOOLEAN Fix,
|
|
IN BOOLEAN Verbose,
|
|
IN BOOLEAN OnlyIfDirty,
|
|
IN BOOLEAN Recover,
|
|
IN PWSTR PathToCheck,
|
|
IN BOOLEAN Extend,
|
|
IN FMIFS_CALLBACK Callback
|
|
);
|
|
|
|
VOID
|
|
ChkdskEx(
|
|
IN PWSTR DriveName,
|
|
IN PWSTR FileSystemName,
|
|
IN BOOLEAN Fix,
|
|
IN PFMIFS_CHKDSKEX_PARAM Param,
|
|
IN FMIFS_CALLBACK Callback
|
|
);
|
|
|
|
VOID
|
|
Extend(
|
|
IN PWSTR DriveName,
|
|
IN BOOLEAN Verify,
|
|
IN FMIFS_CALLBACK Callback
|
|
);
|
|
|
|
VOID
|
|
DiskCopy(
|
|
IN PWSTR SourceDrive,
|
|
IN PWSTR DestDrive,
|
|
IN BOOLEAN Verify,
|
|
IN FMIFS_CALLBACK Callback
|
|
);
|
|
|
|
BOOLEAN
|
|
SetLabel(
|
|
IN PWSTR DriveName,
|
|
IN PWSTR Label
|
|
);
|
|
|
|
BOOLEAN
|
|
QuerySupportedMedia(
|
|
IN PWSTR DriveName,
|
|
OUT PFMIFS_MEDIA_TYPE MediaTypeArray OPTIONAL,
|
|
IN ULONG NumberOfArrayEntries,
|
|
OUT PULONG NumberOfMediaTypes
|
|
);
|
|
|
|
BOOLEAN
|
|
QueryAvailableFileSystemFormat(
|
|
IN ULONG Index,
|
|
OUT PWSTR FileSystemName,
|
|
OUT PUCHAR MajorVersion,
|
|
OUT PUCHAR MinorVersion,
|
|
OUT PBOOLEAN Latest
|
|
);
|
|
|
|
BOOLEAN
|
|
QueryFileSystemName(
|
|
IN PWSTR DriveName,
|
|
OUT PWSTR FileSystemName,
|
|
OUT PUCHAR MajorVersion,
|
|
OUT PUCHAR MinorVersion,
|
|
OUT PNTSTATUS ErrorCode
|
|
);
|
|
|
|
BOOLEAN
|
|
QueryLatestFileSystemVersion(
|
|
IN PWSTR FileSystemName,
|
|
OUT PUCHAR MajorVersion,
|
|
OUT PUCHAR MinorVersion
|
|
);
|
|
|
|
BOOLEAN
|
|
QueryDeviceInformation(
|
|
IN PWSTR DriveName,
|
|
OUT PFMIFS_DEVICE_INFORMATION DevInfo,
|
|
IN ULONG DevInfoSize
|
|
);
|
|
|
|
BOOLEAN
|
|
QueryDeviceInformationByHandle(
|
|
IN HANDLE DriveHandle,
|
|
OUT PFMIFS_DEVICE_INFORMATION DevInfo,
|
|
IN ULONG DevInfoSize
|
|
);
|
|
|
|
VOID
|
|
DoubleSpaceCreate(
|
|
IN PWSTR HostDriveName,
|
|
IN ULONG Size,
|
|
IN PWSTR Label,
|
|
IN PWSTR NewDriveName,
|
|
IN FMIFS_CALLBACK Callback
|
|
);
|
|
|
|
#if defined( DBLSPACE_ENABLED )
|
|
|
|
VOID
|
|
DoubleSpaceDelete(
|
|
IN PWSTR DblspaceDriveName,
|
|
IN FMIFS_CALLBACK Callback
|
|
);
|
|
|
|
VOID
|
|
DoubleSpaceMount(
|
|
IN PWSTR HostDriveName,
|
|
IN PWSTR CvfName,
|
|
IN PWSTR NewDriveName,
|
|
IN FMIFS_CALLBACK Callback
|
|
);
|
|
|
|
VOID
|
|
DoubleSpaceDismount(
|
|
IN PWSTR DblspaceDriveName,
|
|
IN FMIFS_CALLBACK Callback
|
|
);
|
|
|
|
// Miscellaneous prototypes:
|
|
//
|
|
BOOLEAN
|
|
FmifsQueryDriveInformation(
|
|
IN PWSTR DosDriveName,
|
|
OUT PBOOLEAN IsRemovable,
|
|
OUT PBOOLEAN IsFloppy,
|
|
OUT PBOOLEAN IsCompressed,
|
|
OUT PBOOLEAN Error,
|
|
OUT PWSTR NtDriveName,
|
|
IN ULONG MaxNtDriveNameLength,
|
|
OUT PWSTR CvfFileName,
|
|
IN ULONG MaxCvfFileNameLength,
|
|
OUT PWSTR HostDriveName,
|
|
IN ULONG MaxHostDriveNameLength
|
|
);
|
|
|
|
BOOLEAN
|
|
FmifsSetAutomount(
|
|
IN BOOLEAN EnableAutomount
|
|
);
|
|
|
|
#endif
|
|
|
|
|
|
#endif // _FMIFS_DEFN_
|