67 DPRINT(
"VfatFormat(DriveRoot '%wZ')\n", DriveRoot);
109 DPRINT(
"IOCTL_DISK_GET_DRIVE_GEOMETRY failed with status 0x%08x\n",
Status);
120 DPRINT(
"DiskSize %I64d\n",
138 DPRINT(
"IOCTL_DISK_GET_PARTITION_INFO failed with status 0x%08x\n",
Status);
238 DPRINT1(
"WARNING: Failed to lock volume for formatting! Format may fail! (Status: 0x%x)\n", LockStatus);
295 DPRINT1(
"Failed to umount volume (Status: 0x%x)\n", LockStatus);
310 DPRINT1(
"Failed to unlock volume (Status: 0x%x)\n", LockStatus);
353 DPRINT1(
"VfatPrint -- %s", TextBuf);
414 salvage_files =
TRUE;
433 if (CheckOnlyIfDirty && !fs_isdirty())
444 else if (CheckOnlyIfDirty && fs_isdirty())
457 VfatPrint(
"Starting check/repair pass.\n");
476 VfatPrint(
"Starting verification pass.\n");
500 VfatPrint(
"Leaving filesystem unchanged.\n");
504 VfatPrint(
"%wZ: %u files, %lu/%lu clusters\n", DriveRoot,
#define FILE_GENERIC_READ
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
NTSTATUS Fat16Format(IN HANDLE FileHandle, IN PPARTITION_INFORMATION PartitionInfo, IN PDISK_GEOMETRY DiskGeometry, IN PUNICODE_STRING Label, IN BOOLEAN QuickFormat, IN ULONG ClusterSize, IN OUT PFORMAT_CONTEXT Context)
#define FSCTL_UNLOCK_VOLUME
VOID VfatPrintV(PCHAR Format, va_list args)
#define UNREFERENCED_PARAMETER(P)
BOOLEAN NTAPI VfatChkdsk(IN PUNICODE_STRING DriveRoot, IN PFMIFSCALLBACK Callback, IN BOOLEAN FixErrors, IN BOOLEAN Verbose, IN BOOLEAN CheckOnlyIfDirty, IN BOOLEAN ScanDrive, IN PVOID pUnknown1, IN PVOID pUnknown2, IN PVOID pUnknown3, IN PVOID pUnknown4, IN PULONG ExitStatus)
#define STATUS_INVALID_PARAMETER
NTSTATUS Fat12Format(IN HANDLE FileHandle, IN PPARTITION_INFORMATION PartitionInfo, IN PDISK_GEOMETRY DiskGeometry, IN PUNICODE_STRING Label, IN BOOLEAN QuickFormat, IN ULONG ClusterSize, IN OUT PFORMAT_CONTEXT Context)
void read_fat(DOS_FS *fs)
VOID VfatPrint(PCHAR Format,...)
enum _MEDIA_TYPE MEDIA_TYPE
NTSYSAPI NTSTATUS NTAPI NtDeviceIoControlFile(IN HANDLE hFile, IN HANDLE hEvent OPTIONAL, IN PIO_APC_ROUTINE IoApcRoutine OPTIONAL, IN PVOID IoApcContext OPTIONAL, OUT PIO_STATUS_BLOCK pIoStatusBlock, IN ULONG DeviceIoControlCode, IN PVOID InBuffer OPTIONAL, IN ULONG InBufferLength, OUT PVOID OutBuffer OPTIONAL, IN ULONG OutBufferLength)
void fs_open(char *path, int rw)
void read_boot(DOS_FS *fs)
BOOLEAN NTAPI VfatFormat(IN PUNICODE_STRING DriveRoot, IN PFMIFSCALLBACK Callback, IN BOOLEAN QuickFormat, IN BOOLEAN BackwardCompatible, IN MEDIA_TYPE MediaType, IN PUNICODE_STRING Label, IN ULONG ClusterSize)
#define FILE_SYNCHRONOUS_IO_ALERT
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
int scan_root(DOS_FS *fs)
#define FSCHECK_READ_WRITE
#define FSCHECK_INTERACTIVE
#define FSCTL_DISMOUNT_VOLUME
NTSYSAPI NTSTATUS NTAPI NtOpenFile(OUT PHANDLE phFile, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK pIoStatusBlock, IN ULONG ShareMode, IN ULONG OpenMode)
char get_key(const char *valid, const char *prompt)
NTSYSAPI NTSTATUS NTAPI NtFsControlFile(IN HANDLE hFile, IN HANDLE hEvent OPTIONAL, IN PIO_APC_ROUTINE IoApcRoutine OPTIONAL, IN PVOID IoApcContext OPTIONAL, OUT PIO_STATUS_BLOCK pIoStatusBlock, IN ULONG DeviceIoControlCode, IN PVOID InBuffer OPTIONAL, IN ULONG InBufferLength, OUT PVOID OutBuffer OPTIONAL, IN ULONG OutBufferLength)
#define NT_SUCCESS(StatCode)
_In_ ULONG _In_ struct _SET_PARTITION_INFORMATION_EX * PartitionInfo
#define STATUS_ACCESS_DENIED
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
#define IOCTL_DISK_GET_PARTITION_INFO
_In_ WDFINTERRUPT _In_ PFN_WDF_INTERRUPT_SYNCHRONIZE Callback
#define FILE_GENERIC_WRITE
PFMIFSCALLBACK ChkdskCallback
BOOLEAN(NTAPI * PFMIFSCALLBACK)(IN CALLBACKCOMMAND Command, IN ULONG SubAction, IN PVOID ActionInfo)
void reclaim_file(DOS_FS *fs)
uint32_t update_free(DOS_FS *fs)
struct tagContext Context
#define STATUS_DISK_CORRUPT_ERROR
#define FSCTL_LOCK_VOLUME
#define RtlZeroMemory(Destination, Length)
#define InitializeObjectAttributes(p, n, a, r, s)
#define PARTITION_FAT32_XINT13
IN OUT PLONG IN OUT PLONG Addend IN OUT PLONG IN LONG Increment
void reclaim_free(DOS_FS *fs)
#define IOCTL_DISK_GET_DRIVE_GEOMETRY
VOID UpdateProgress(PFORMAT_CONTEXT Context, ULONG Increment)
NTSTATUS Fat32Format(IN HANDLE FileHandle, IN PPARTITION_INFORMATION PartitionInfo, IN PDISK_GEOMETRY DiskGeometry, IN PUNICODE_STRING Label, IN BOOLEAN QuickFormat, IN ULONG ClusterSize, IN OUT PFORMAT_CONTEXT Context)