mirror of
https://github.com/reactos/reactos.git
synced 2024-09-29 14:09:10 +00:00
[AUTOCHK][CHKDSK]: Minor fixes / formatting. Really add chkdsk to build.
[FMIFS]: Quickly implement the chkdsk function, the same way as it is done for the formatting function. svn path=/trunk/; revision=70869
This commit is contained in:
parent
9723b5e974
commit
b1ef18e020
|
@ -1,6 +1,7 @@
|
||||||
|
|
||||||
add_subdirectory(autochk)
|
add_subdirectory(autochk)
|
||||||
add_subdirectory(bootok)
|
add_subdirectory(bootok)
|
||||||
|
add_subdirectory(chkdsk)
|
||||||
add_subdirectory(diskpart)
|
add_subdirectory(diskpart)
|
||||||
add_subdirectory(expand)
|
add_subdirectory(expand)
|
||||||
add_subdirectory(format)
|
add_subdirectory(format)
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
/* PROJECT: ReactOS Kernel
|
/*
|
||||||
|
* PROJECT: ReactOS Kernel
|
||||||
* LICENSE: GPL - See COPYING in the top level directory
|
* LICENSE: GPL - See COPYING in the top level directory
|
||||||
* FILE: base/system/autochk/autochk.c
|
* FILE: base/system/autochk/autochk.c
|
||||||
* PURPOSE: Filesystem checker
|
* PURPOSE: Filesystem checker
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
//
|
//
|
||||||
// Copyright (c) 1998 Mark Russinovich
|
// Copyright (c) 1998 Mark Russinovich
|
||||||
// Systems Internals
|
// Systems Internals
|
||||||
// http://www.sysinternals.com/
|
// http://www.sysinternals.com
|
||||||
//
|
//
|
||||||
// Chkdsk clone that demonstrates the use of the FMIFS file system
|
// Chkdsk clone that demonstrates the use of the FMIFS file system
|
||||||
// utility library.
|
// utility library.
|
||||||
|
@ -43,10 +43,14 @@
|
||||||
|
|
||||||
/* PSDK/NDK Headers */
|
/* PSDK/NDK Headers */
|
||||||
#define WIN32_NO_STATUS
|
#define WIN32_NO_STATUS
|
||||||
#include <windows.h>
|
#include <windef.h>
|
||||||
|
#include <winbase.h>
|
||||||
|
#include <wincon.h>
|
||||||
|
|
||||||
#define NTOS_MODE_USER
|
#define NTOS_MODE_USER
|
||||||
#include <ndk/ntndk.h>
|
#include <ndk/ntndk.h>
|
||||||
|
|
||||||
|
/* FMIFS Public Header */
|
||||||
#include <fmifs/fmifs.h>
|
#include <fmifs/fmifs.h>
|
||||||
|
|
||||||
#define FMIFS_IMPORT_DLL
|
#define FMIFS_IMPORT_DLL
|
||||||
|
@ -118,9 +122,8 @@ CtrlCIntercept(DWORD dwCtrlType)
|
||||||
//
|
//
|
||||||
// Tell the user how to use the program
|
// Tell the user how to use the program
|
||||||
//
|
//
|
||||||
// 19990216 EA Missing printf %s argument
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
VOID
|
static VOID
|
||||||
Usage(PWCHAR ProgramName)
|
Usage(PWCHAR ProgramName)
|
||||||
{
|
{
|
||||||
wprintf(L"Usage: %s [drive:] [-F] [-V] [-R] [-C]\n\n"
|
wprintf(L"Usage: %s [drive:] [-F] [-V] [-R] [-C]\n\n"
|
||||||
|
@ -140,7 +143,7 @@ Usage(PWCHAR ProgramName)
|
||||||
// Get the switches.
|
// Get the switches.
|
||||||
//
|
//
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
int
|
static int
|
||||||
ParseCommandLine(
|
ParseCommandLine(
|
||||||
int argc,
|
int argc,
|
||||||
WCHAR *argv[]
|
WCHAR *argv[]
|
||||||
|
@ -160,9 +163,9 @@ ParseCommandLine(
|
||||||
|
|
||||||
switch (argv[i][1])
|
switch (argv[i][1])
|
||||||
{
|
{
|
||||||
case L'?':
|
// case L'?':
|
||||||
Usage(argv[0]);
|
// Usage(argv[0]);
|
||||||
break;
|
// return i;
|
||||||
|
|
||||||
case L'F': case L'f':
|
case L'F': case L'f':
|
||||||
{
|
{
|
||||||
|
@ -309,7 +312,7 @@ ChkdskCallback(
|
||||||
|
|
||||||
case DONE:
|
case DONE:
|
||||||
status = (PBOOLEAN)Argument;
|
status = (PBOOLEAN)Argument;
|
||||||
if (*status == TRUE)
|
if (*status == FALSE)
|
||||||
{
|
{
|
||||||
wprintf(L"Chkdsk was unable to complete successfully.\n\n");
|
wprintf(L"Chkdsk was unable to complete successfully.\n\n");
|
||||||
Error = TRUE;
|
Error = TRUE;
|
||||||
|
@ -329,7 +332,7 @@ ChkdskCallback(
|
||||||
// 19990216 EA Used wide functions
|
// 19990216 EA Used wide functions
|
||||||
//
|
//
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
BOOLEAN
|
static BOOLEAN
|
||||||
LoadFMIFSEntryPoints(VOID)
|
LoadFMIFSEntryPoints(VOID)
|
||||||
{
|
{
|
||||||
HMODULE hFmifs = LoadLibraryW(L"fmifs.dll");
|
HMODULE hFmifs = LoadLibraryW(L"fmifs.dll");
|
||||||
|
|
|
@ -2,13 +2,16 @@
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: File Management IFS Utility functions
|
* PROJECT: File Management IFS Utility functions
|
||||||
* FILE: reactos/dll/win32/fmifs/chkdsk.c
|
* FILE: reactos/dll/win32/fmifs/chkdsk.c
|
||||||
* PURPOSE: Chkdsk
|
* PURPOSE: Disk Checker
|
||||||
*
|
*
|
||||||
* PROGRAMMERS: (none)
|
* PROGRAMMERS: Hermes Belusca-Maito (hermes.belusca@sfr.fr)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "precomp.h"
|
#include "precomp.h"
|
||||||
|
|
||||||
|
#define NDEBUG
|
||||||
|
#include <debug.h>
|
||||||
|
|
||||||
/* FMIFS.1 */
|
/* FMIFS.1 */
|
||||||
VOID
|
VOID
|
||||||
NTAPI
|
NTAPI
|
||||||
|
@ -23,12 +26,44 @@ Chkdsk(
|
||||||
IN PVOID Unused3,
|
IN PVOID Unused3,
|
||||||
IN PFMIFSCALLBACK Callback)
|
IN PFMIFSCALLBACK Callback)
|
||||||
{
|
{
|
||||||
|
PIFS_PROVIDER Provider;
|
||||||
|
UNICODE_STRING usDriveRoot;
|
||||||
BOOLEAN Argument = FALSE;
|
BOOLEAN Argument = FALSE;
|
||||||
|
WCHAR VolumeName[MAX_PATH];
|
||||||
|
//CURDIR CurDir;
|
||||||
|
|
||||||
/* FAIL immediately */
|
Provider = GetProvider(Format);
|
||||||
Callback(DONE, /* Command */
|
if (!Provider)
|
||||||
0, /* DWORD Modifier */
|
{
|
||||||
&Argument);/* Argument */
|
/* Unknown file system */
|
||||||
|
Callback(DONE, 0, &Argument);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if 1
|
||||||
|
DPRINT1("Warning: use GetVolumeNameForVolumeMountPointW() instead!\n");
|
||||||
|
swprintf(VolumeName, L"\\??\\%c:", towupper(DriveRoot[0]));
|
||||||
|
RtlCreateUnicodeString(&usDriveRoot, VolumeName);
|
||||||
|
/* Code disabled as long as our storage stack doesn't understand IOCTL_MOUNTDEV_QUERY_DEVICE_NAME */
|
||||||
|
#else
|
||||||
|
if (!GetVolumeNameForVolumeMountPointW(DriveRoot, VolumeName, MAX_PATH) ||
|
||||||
|
!RtlDosPathNameToNtPathName_U(VolumeName, &usDriveRoot, NULL, &CurDir))
|
||||||
|
{
|
||||||
|
/* Report an error. */
|
||||||
|
Callback(DONE, 0, &Argument);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
DPRINT("ChkdskEx - %S\n", Format);
|
||||||
|
Provider->ChkdskEx(&usDriveRoot,
|
||||||
|
CorrectErrors,
|
||||||
|
Verbose,
|
||||||
|
CheckOnlyIfDirty,
|
||||||
|
ScanDrive,
|
||||||
|
Callback);
|
||||||
|
|
||||||
|
RtlFreeUnicodeString(&usDriveRoot);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* EOF */
|
/* EOF */
|
||||||
|
|
|
@ -55,9 +55,7 @@ FormatEx(
|
||||||
if (!Provider)
|
if (!Provider)
|
||||||
{
|
{
|
||||||
/* Unknown file system */
|
/* Unknown file system */
|
||||||
Callback(DONE, /* Command */
|
Callback(DONE, 0, &Argument);
|
||||||
0, /* DWORD Modifier */
|
|
||||||
&Argument); /* Argument */
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,9 +69,7 @@ FormatEx(
|
||||||
!RtlDosPathNameToNtPathName_U(VolumeName, &usDriveRoot, NULL, &CurDir))
|
!RtlDosPathNameToNtPathName_U(VolumeName, &usDriveRoot, NULL, &CurDir))
|
||||||
{
|
{
|
||||||
/* Report an error. */
|
/* Report an error. */
|
||||||
Callback(DONE, /* Command */
|
Callback(DONE, 0, &Argument);
|
||||||
0, /* DWORD Modifier */
|
|
||||||
&Argument); /* Argument */
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -167,9 +167,7 @@ InitializeFmIfs(
|
||||||
if (FmIfsInitialized == FALSE)
|
if (FmIfsInitialized == FALSE)
|
||||||
{
|
{
|
||||||
if (InitializeFmIfsOnce() == FALSE)
|
if (InitializeFmIfsOnce() == FALSE)
|
||||||
{
|
return FALSE;
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
FmIfsInitialized = TRUE;
|
FmIfsInitialized = TRUE;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue