mirror of
https://github.com/reactos/reactos.git
synced 2026-05-30 23:33:24 +08:00
[VFATLIB][FMIFS][CHKDSK] Chkdsk fixes and improvements (#8810)
CORE-18432 Co-authored-by: Carl J. Bialorucki <carl.bialorucki@reactos.org>
This commit is contained in:
@@ -456,7 +456,7 @@ wmain(int argc, WCHAR *argv[])
|
||||
//
|
||||
// Just do it
|
||||
//
|
||||
ConResPrintf(StdOut, IDS_FILE_SYSTEM, fileSystem);
|
||||
ConResPrintf(StdOut, IDS_FILE_SYSTEM, fileSystem, Drive);
|
||||
Chkdsk(Drive,
|
||||
fileSystem,
|
||||
FixErrors,
|
||||
|
||||
@@ -14,7 +14,7 @@ Benutzung: %s [Laufwerk:] [-F] [-V] [-R] [-C]\n\n\
|
||||
\n"
|
||||
|
||||
IDS_PERCENT_COMPL "%d Prozent abgeschlossen.\r"
|
||||
IDS_FILE_SYSTEM "Der Dateisystemtyp ist %s.\n"
|
||||
IDS_FILE_SYSTEM "Der Dateisystemtyp ist %s for volume %s.\n"
|
||||
IDS_ABOUT "\n\
|
||||
Chkdskx v1.0.1 by Mark Russinovich\n\
|
||||
Systems Internals - http://www.sysinternals.com\n\
|
||||
|
||||
@@ -12,7 +12,7 @@ Usage: %s [drive:] [-F] [-V] [-R] [-C]\n\n\
|
||||
\n"
|
||||
|
||||
IDS_PERCENT_COMPL "%d percent completed.\r"
|
||||
IDS_FILE_SYSTEM "The type of file system is %s.\n"
|
||||
IDS_FILE_SYSTEM "The type of file system is %s for volume %s.\n"
|
||||
IDS_ABOUT "\n\
|
||||
Chkdskx v1.0.1 by Mark Russinovich\n\
|
||||
Systems Internals - http://www.sysinternals.com\n\
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL
|
||||
LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
@@ -12,7 +12,7 @@ Utilisation : %s [lecteur:] [-F] [-V] [-R] [-C]\n\n\
|
||||
\n"
|
||||
|
||||
IDS_PERCENT_COMPL "%d pourcent(s) complété(s).\r"
|
||||
IDS_FILE_SYSTEM "Le type du système de fichier est %s.\n"
|
||||
IDS_FILE_SYSTEM "Le type du système de fichier est %s pour le volume %s.\n"
|
||||
IDS_ABOUT "\n\
|
||||
Chkdskx v1.0.1 par Mark Russinovich\n\
|
||||
Systems Internals - http://www.sysinternals.com\n\
|
||||
|
||||
@@ -20,7 +20,7 @@ Uso: %s [drive:] [-F] [-V] [-R] [-C]\n\n\
|
||||
\n"
|
||||
|
||||
IDS_PERCENT_COMPL "%d percentuale completato.\r"
|
||||
IDS_FILE_SYSTEM "Il tipo del file di sistema è %s.\n"
|
||||
IDS_FILE_SYSTEM "Il tipo del file di sistema è %s per l'unità %s.\n"
|
||||
IDS_ABOUT "\n\
|
||||
Chkdskx v1.0.1 di Mark Russinovich\n\
|
||||
Systems Internals - http://www.sysinternals.com\n\
|
||||
|
||||
@@ -12,7 +12,7 @@ Sposób użycia: %s [dysk:] [-F] [-V] [-R] [-C]\n\n\
|
||||
\n"
|
||||
|
||||
IDS_PERCENT_COMPL "Wykonano %d procent.\r"
|
||||
IDS_FILE_SYSTEM "Typ systemu plików to %s.\n"
|
||||
IDS_FILE_SYSTEM "Typ systemu plików to %s for volume %s.\n"
|
||||
IDS_ABOUT "\n\
|
||||
Chkdskx v1.0.1 by Mark Russinovich\n\
|
||||
Systems Internals - http://www.sysinternals.com\n\
|
||||
|
||||
@@ -13,7 +13,7 @@ Uso: %s [unidade:] [-F] [-V] [-R] [-C]\n\n\
|
||||
\n"
|
||||
|
||||
IDS_PERCENT_COMPL "%d percento completo.\r"
|
||||
IDS_FILE_SYSTEM "O sistema de ficheiros é %s.\n"
|
||||
IDS_FILE_SYSTEM "O sistema de ficheiros é %s for volume %s.\n"
|
||||
IDS_ABOUT "\n\
|
||||
Chkdskx v1.0.1 by Mark Russinovich\n\
|
||||
Systems Internals - http://www.sysinternals.com\n\
|
||||
|
||||
@@ -20,7 +20,7 @@ Uz: %s [disc:] [-F] [-V] [-R] [-C]\n\n\
|
||||
\n"
|
||||
|
||||
IDS_PERCENT_COMPL "%d completat.\r"
|
||||
IDS_FILE_SYSTEM "Tipul sistemului de fișier este %s.\n"
|
||||
IDS_FILE_SYSTEM "Tipul sistemului de fișier este %s for volume %s.\n"
|
||||
IDS_ABOUT "\n\
|
||||
Chkdskx v1.0.1 de către Mark Russinovich\n\
|
||||
Systems Internals - http://www.sysinternals.com\n\
|
||||
|
||||
@@ -13,7 +13,7 @@ BEGIN
|
||||
\n"
|
||||
|
||||
IDS_PERCENT_COMPL "%d процентов завершено.\r"
|
||||
IDS_FILE_SYSTEM "Тип файловой системы %s.\n"
|
||||
IDS_FILE_SYSTEM "Тип файловой системы %s for volume %s.\n"
|
||||
IDS_ABOUT "\n\
|
||||
Chkdskx v1.0.1 от Марка Руссиновича\n\
|
||||
Systems Internals - http://www.sysinternals.com\n\
|
||||
|
||||
@@ -14,7 +14,7 @@ Kullanım: %s [sürücü:] [-F] [-V] [-R] [-C]\n\n\
|
||||
\n"
|
||||
|
||||
IDS_PERCENT_COMPL "Yüzde %d tamamlandı.\r"
|
||||
IDS_FILE_SYSTEM "Dosya sistemin türü %s'tır.\n"
|
||||
IDS_FILE_SYSTEM "Dosya sistemin türü %s'tır for volume %s.\n"
|
||||
IDS_ABOUT "\n\
|
||||
Chkdskx v1.0.1 Mark Russinovich tarafından yazılmıştır\n\
|
||||
Systems Internals - http://www.sysinternals.com\n\
|
||||
|
||||
@@ -14,7 +14,7 @@ Usage: %s [drive:] [-F] [-V] [-R] [-C]\n\n\
|
||||
\n"
|
||||
|
||||
IDS_PERCENT_COMPL "百分之 %d 已完成。\r"
|
||||
IDS_FILE_SYSTEM "文件系统类型为 %s。\n"
|
||||
IDS_FILE_SYSTEM "文件系统类型为 %s for volume %s。\n"
|
||||
IDS_ABOUT "\n\
|
||||
Chkdskx v1.0.1 by Mark Russinovich\n\
|
||||
Systems Internals - http://www.sysinternals.com\n\
|
||||
|
||||
@@ -20,7 +20,7 @@ Usage: %s [磁碟機:] [-F] [-V] [-R] [-C]\n\n\
|
||||
\n"
|
||||
|
||||
IDS_PERCENT_COMPL "已完成百分之 %d。\r"
|
||||
IDS_FILE_SYSTEM "檔案系統類型為 %s。\n"
|
||||
IDS_FILE_SYSTEM "檔案系統類型為 %s for volume %s。\n"
|
||||
IDS_ABOUT "\n\
|
||||
Chkdskx v1.0.1 by Mark Russinovich\n\
|
||||
Systems Internals - http://www.sysinternals.com\n\
|
||||
|
||||
@@ -51,12 +51,17 @@ Chkdsk(
|
||||
goto Quit;
|
||||
}
|
||||
|
||||
#ifdef __REACTOS__
|
||||
/* We really just want to use the disk drive letter */
|
||||
wcscpy(VolumeName, DriveName);
|
||||
#else
|
||||
if (!GetVolumeNameForVolumeMountPointW(DriveName, VolumeName, ARRAYSIZE(VolumeName)))
|
||||
{
|
||||
/* Couldn't get a volume GUID path, try checking using a parameter provided path */
|
||||
DPRINT1("Couldn't get a volume GUID path for drive %S\n", DriveName);
|
||||
wcscpy(VolumeName, DriveName);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!RtlDosPathNameToNtPathName_U(VolumeName, &usDriveRoot, NULL, NULL))
|
||||
goto Quit;
|
||||
|
||||
@@ -186,7 +186,7 @@ NTSTATUS fs_open(PUNICODE_STRING DriveRoot, int read_write)
|
||||
FILE_GENERIC_READ | (read_write ? FILE_GENERIC_WRITE : 0),
|
||||
&ObjectAttributes,
|
||||
&Iosb,
|
||||
read_write ? 0 : FILE_SHARE_READ,
|
||||
read_write ? FILE_SHARE_READ : (FILE_SHARE_READ | FILE_SHARE_WRITE),
|
||||
FILE_SYNCHRONOUS_IO_ALERT);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
|
||||
@@ -432,6 +432,7 @@ VfatChkdsk(
|
||||
ULONG free_clusters;
|
||||
DOS_FS fs;
|
||||
NTSTATUS Status;
|
||||
WCHAR DriveLetter[2] = L"0";
|
||||
|
||||
UNREFERENCED_PARAMETER(pUnknown1);
|
||||
UNREFERENCED_PARAMETER(pUnknown2);
|
||||
@@ -544,9 +545,23 @@ VfatChkdsk(
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef __REACTOS__
|
||||
if (DriveRoot->Buffer[0] == '\\' && DriveRoot->Buffer[1] == '?' &&
|
||||
DriveRoot->Buffer[2] == '?' && DriveRoot->Buffer[3] == '\\')
|
||||
{
|
||||
DriveLetter[0] = DriveRoot->Buffer[4] & 0x5F; // 0x5f for Uppercase letter
|
||||
VfatPrint("Chkdsk complete for Volume %S.\n", DriveLetter);
|
||||
VfatPrint("%u files on disk.\n", FsCheckTotalFiles);
|
||||
VfatPrint("%lu total clusters on the disk.\n", fs.data_clusters);
|
||||
VfatPrint("%lu clusters available on the disk.\n", free_clusters);
|
||||
}
|
||||
else
|
||||
VfatPrint("%wZ: %u files, %lu/%lu clusters\n", DriveRoot,
|
||||
FsCheckTotalFiles, fs.data_clusters - free_clusters, fs.data_clusters);
|
||||
#else
|
||||
VfatPrint("%wZ: %u files, %lu/%lu clusters\n", DriveRoot,
|
||||
FsCheckTotalFiles, fs.data_clusters - free_clusters, fs.data_clusters);
|
||||
|
||||
#endif
|
||||
if (FsCheckFlags & FSCHECK_READ_WRITE)
|
||||
{
|
||||
/* Dismount the volume */
|
||||
|
||||
Reference in New Issue
Block a user