mirror of
https://github.com/reactos/reactos.git
synced 2024-11-03 21:34:00 +00:00
90 lines
2.2 KiB
C
90 lines
2.2 KiB
C
/*
|
|
* COPYRIGHT: See COPYING in the top level directory
|
|
* PROJECT: File Management IFS Utility functions
|
|
* FILE: reactos/dll/win32/fmifs/format.c
|
|
* PURPOSE: Volume format
|
|
*
|
|
* PROGRAMMERS: Emanuele Aliberti
|
|
* Hervé Poussineau (hpoussin@reactos.org)
|
|
*/
|
|
|
|
#include "precomp.h"
|
|
|
|
#define NDEBUG
|
|
#include <debug.h>
|
|
|
|
/* FMIFS.6 */
|
|
VOID NTAPI
|
|
Format(
|
|
IN PWCHAR DriveRoot,
|
|
IN FMIFS_MEDIA_FLAG MediaFlag,
|
|
IN PWCHAR Format,
|
|
IN PWCHAR Label,
|
|
IN BOOLEAN QuickFormat,
|
|
IN PFMIFSCALLBACK Callback)
|
|
{
|
|
FormatEx(DriveRoot,
|
|
MediaFlag,
|
|
Format,
|
|
Label,
|
|
QuickFormat,
|
|
0,
|
|
Callback);
|
|
}
|
|
|
|
/* FMIFS.7 */
|
|
VOID
|
|
NTAPI
|
|
FormatEx(
|
|
IN PWCHAR DriveRoot,
|
|
IN FMIFS_MEDIA_FLAG MediaFlag,
|
|
IN PWCHAR Format,
|
|
IN PWCHAR Label,
|
|
IN BOOLEAN QuickFormat,
|
|
IN ULONG ClusterSize,
|
|
IN PFMIFSCALLBACK Callback)
|
|
{
|
|
PIFS_PROVIDER Provider;
|
|
UNICODE_STRING usDriveRoot;
|
|
UNICODE_STRING usLabel;
|
|
BOOLEAN Argument = FALSE;
|
|
WCHAR VolumeName[MAX_PATH];
|
|
//CURDIR CurDir;
|
|
|
|
Provider = GetProvider(Format);
|
|
if (!Provider)
|
|
{
|
|
/* 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
|
|
|
|
RtlInitUnicodeString(&usLabel, Label);
|
|
|
|
DPRINT("FormatEx - %S\n", Format);
|
|
Provider->FormatEx(&usDriveRoot,
|
|
MediaFlag,
|
|
&usLabel,
|
|
QuickFormat,
|
|
ClusterSize,
|
|
Callback);
|
|
|
|
RtlFreeUnicodeString(&usDriveRoot);
|
|
}
|
|
|
|
/* EOF */
|