2006-09-04 17:11:14 +00:00
|
|
|
|
/*
|
|
|
|
|
* COPYRIGHT: See COPYING in the top level directory
|
|
|
|
|
* PROJECT: File Management IFS Utility functions
|
|
|
|
|
* FILE: reactos/dll/win32/fmifs/format.c
|
|
|
|
|
* PURPOSE: Volume format
|
1999-05-11 21:19:41 +00:00
|
|
|
|
*
|
2006-09-04 17:11:14 +00:00
|
|
|
|
* PROGRAMMERS: Emanuele Aliberti
|
2006-09-04 19:27:19 +00:00
|
|
|
|
* Herv<EFBFBD> Poussineau (hpoussin@reactos.org)
|
1999-05-11 21:19:41 +00:00
|
|
|
|
*/
|
2006-09-04 17:11:14 +00:00
|
|
|
|
|
2005-10-19 17:03:38 +00:00
|
|
|
|
#include "precomp.h"
|
2003-04-05 23:17:22 +00:00
|
|
|
|
|
|
|
|
|
#define NDEBUG
|
|
|
|
|
#include <debug.h>
|
|
|
|
|
|
1999-05-11 21:19:41 +00:00
|
|
|
|
/* FMIFS.6 */
|
2014-07-06 16:13:49 +00:00
|
|
|
|
VOID NTAPI
|
|
|
|
|
Format(
|
|
|
|
|
IN PWCHAR DriveRoot,
|
|
|
|
|
IN FMIFS_MEDIA_FLAG MediaFlag,
|
|
|
|
|
IN PWCHAR Format,
|
|
|
|
|
IN PWCHAR Label,
|
|
|
|
|
IN BOOLEAN QuickFormat,
|
|
|
|
|
IN PFMIFSCALLBACK Callback)
|
1999-05-11 21:19:41 +00:00
|
|
|
|
{
|
2015-01-04 15:34:23 +00:00
|
|
|
|
FormatEx(DriveRoot,
|
|
|
|
|
MediaFlag,
|
|
|
|
|
Format,
|
|
|
|
|
Label,
|
|
|
|
|
QuickFormat,
|
|
|
|
|
0,
|
|
|
|
|
Callback);
|
1999-05-11 21:19:41 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* FMIFS.7 */
|
2014-07-06 14:03:04 +00:00
|
|
|
|
VOID
|
|
|
|
|
NTAPI
|
2006-09-04 17:11:14 +00:00
|
|
|
|
FormatEx(
|
2014-07-06 14:03:04 +00:00
|
|
|
|
IN PWCHAR DriveRoot,
|
|
|
|
|
IN FMIFS_MEDIA_FLAG MediaFlag,
|
|
|
|
|
IN PWCHAR Format,
|
|
|
|
|
IN PWCHAR Label,
|
|
|
|
|
IN BOOLEAN QuickFormat,
|
|
|
|
|
IN ULONG ClusterSize,
|
|
|
|
|
IN PFMIFSCALLBACK Callback)
|
1999-05-11 21:19:41 +00:00
|
|
|
|
{
|
2014-07-06 14:03:04 +00:00
|
|
|
|
PIFS_PROVIDER Provider;
|
|
|
|
|
UNICODE_STRING usDriveRoot;
|
|
|
|
|
UNICODE_STRING usLabel;
|
|
|
|
|
BOOLEAN Argument = FALSE;
|
|
|
|
|
WCHAR VolumeName[MAX_PATH];
|
|
|
|
|
//CURDIR CurDir;
|
2005-12-13 23:10:34 +00:00
|
|
|
|
|
2014-07-06 14:03:04 +00:00
|
|
|
|
Provider = GetProvider(Format);
|
|
|
|
|
if (!Provider)
|
|
|
|
|
{
|
|
|
|
|
/* Unknown file system */
|
2016-03-03 00:36:25 +00:00
|
|
|
|
Callback(DONE, 0, &Argument);
|
2014-07-06 14:03:04 +00:00
|
|
|
|
return;
|
|
|
|
|
}
|
2003-04-05 23:17:22 +00:00
|
|
|
|
|
2006-09-04 21:58:38 +00:00
|
|
|
|
#if 1
|
2014-07-06 14:03:04 +00:00
|
|
|
|
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 */
|
2006-09-04 21:58:38 +00:00
|
|
|
|
#else
|
2014-07-06 14:03:04 +00:00
|
|
|
|
if (!GetVolumeNameForVolumeMountPointW(DriveRoot, VolumeName, MAX_PATH) ||
|
|
|
|
|
!RtlDosPathNameToNtPathName_U(VolumeName, &usDriveRoot, NULL, &CurDir))
|
|
|
|
|
{
|
|
|
|
|
/* Report an error. */
|
2016-03-03 00:36:25 +00:00
|
|
|
|
Callback(DONE, 0, &Argument);
|
2014-07-06 14:03:04 +00:00
|
|
|
|
return;
|
|
|
|
|
}
|
2006-09-04 21:58:38 +00:00
|
|
|
|
#endif
|
2003-04-05 23:17:22 +00:00
|
|
|
|
|
2014-07-06 14:03:04 +00:00
|
|
|
|
RtlInitUnicodeString(&usLabel, Label);
|
2003-04-05 23:17:22 +00:00
|
|
|
|
|
2014-07-06 14:03:04 +00:00
|
|
|
|
DPRINT("FormatEx - %S\n", Format);
|
|
|
|
|
Provider->FormatEx(&usDriveRoot,
|
|
|
|
|
MediaFlag,
|
|
|
|
|
&usLabel,
|
|
|
|
|
QuickFormat,
|
|
|
|
|
ClusterSize,
|
|
|
|
|
Callback);
|
|
|
|
|
|
|
|
|
|
RtlFreeUnicodeString(&usDriveRoot);
|
1999-05-11 21:19:41 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* EOF */
|