Remove Vfat(x)Initialize and Vfat(x)Cleanup which were empty

Remove vfatlib dependancy of fmifs.dll (Providers like ufat.dll are loaded dynamically at startup)

svn path=/trunk/; revision=23915
This commit is contained in:
Hervé Poussineau 2006-09-04 19:27:19 +00:00
parent 132cf4ece8
commit 90d5c19850
10 changed files with 133 additions and 73 deletions

View file

@ -105,8 +105,6 @@ FormatPartition (PUNICODE_STRING DriveRoot)
ProgressSetStepCount (ProgressBar, 100);
VfatInitialize ();
Status = VfatFormat (DriveRoot,
0, /* MediaFlag */
NULL, /* Label */
@ -114,8 +112,6 @@ FormatPartition (PUNICODE_STRING DriveRoot)
0, /* ClusterSize */
(PFMIFSCALLBACK)FormatCallback); /* Callback */
VfatCleanup ();
DestroyProgressBar (ProgressBar);
ProgressBar = NULL;

View file

@ -67,6 +67,7 @@
<property name="BASEADDRESS_LZ32" value="0x73d80000" />
<property name="BASEADDRESS_COREDLL" value="0x73d80000" />
<property name="BASEADDRESS_ICMP" value="0x741f0000" />
<property name="BASEADDRESS_UFAT" value="0x741f0000" />
<property name="BASEADDRESS_USERENV" value="0x74850000" />
<property name="BASEADDRESS_WS2_32" value="0x74aa0000" />
<property name="BASEADDRESS_SYSSETUP" value="0x74a30000" />

View file

@ -4,7 +4,6 @@
<define name="_DISABLE_TIDENTS" />
<define name="__USE_W32API" />
<define name="_WIN32_WINNT">0x0600</define>
<library>vfatlib</library>
<library>ntdll</library>
<library>kernel32</library>
<file>chkdsk.c</file>

View file

@ -5,6 +5,7 @@
* PURPOSE: Volume format
*
* PROGRAMMERS: Emanuele Aliberti
* Hervé Poussineau (hpoussin@reactos.org)
*/
#include "precomp.h"
@ -14,7 +15,7 @@
/* FMIFS.6 */
VOID NTAPI
Format(void)
Format(VOID)
{
}
@ -29,13 +30,15 @@ FormatEx(
IN ULONG ClusterSize,
IN PFMIFSCALLBACK Callback)
{
PIFS_PROVIDER Provider;
UNICODE_STRING usDriveRoot;
UNICODE_STRING usLabel;
BOOLEAN Argument = FALSE;
WCHAR VolumeName[MAX_PATH];
CURDIR CurDir;
if (_wcsnicmp(Format, L"FAT", 3) != 0)
Provider = GetProvider(Format);
if (!Provider)
{
/* Unknown file system */
Callback(
@ -58,16 +61,14 @@ FormatEx(
RtlInitUnicodeString(&usLabel, Label);
DPRINT1("FormatEx - FAT\n");
VfatInitialize();
VfatFormat(
DPRINT1("FormatEx - %S\n", Format);
Provider->FormatEx(
&usDriveRoot,
MediaFlag,
&usLabel,
QuickFormat,
ClusterSize,
Callback);
VfatCleanup();
RtlFreeUnicodeString(&usDriveRoot);
}

View file

@ -5,17 +5,93 @@
* PURPOSE: Initialisation
*
* PROGRAMMERS: Emanuele Aliberti
* Hervé Poussineau (hpoussin@reactos.org)
*/
#include "precomp.h"
static BOOLEAN FmIfsInitialized = FALSE;
LIST_ENTRY ProviderListHead;
static BOOLEAN NTAPI
PIFS_PROVIDER
GetProvider(
IN PWCHAR FileSystem)
{
PLIST_ENTRY ListEntry;
PIFS_PROVIDER Provider;
ListEntry = ProviderListHead.Flink;
while (ListEntry != ProviderListHead.Flink)
{
Provider = CONTAINING_RECORD(ListEntry, IFS_PROVIDER, ListEntry);
if (wcscmp(Provider->Name, FileSystem) == 0)
return Provider;
ListEntry = ListEntry->Flink;
}
/* Provider not found */
return NULL;
}
static BOOLEAN
AddProvider(
IN PWCHAR FileSystem,
IN PWCHAR DllFile)
{
PIFS_PROVIDER Provider = NULL;
ULONG RequiredSize;
HMODULE hMod = NULL;
BOOLEAN ret = FALSE;
hMod = LoadLibraryW(DllFile);
if (!hMod)
goto cleanup;
RequiredSize = FIELD_OFFSET(IFS_PROVIDER, Name)
+ wcslen(FileSystem) * sizeof(WCHAR) + sizeof(UNICODE_NULL);
Provider = (PIFS_PROVIDER)RtlAllocateHeap(
RtlGetProcessHeap(),
0,
RequiredSize);
if (!Provider)
goto cleanup;
RtlZeroMemory(Provider, RequiredSize);
/* Get function pointers */
//Provider->Chkdsk = (CHKDSK)GetProcAddress(hMod, "Chkdsk");
//Provider->ChkdskEx = (CHKDSKEX)GetProcAddress(hMod, "ChkdskEx");
//Provider->Extend = (EXTEND)GetProcAddress(hMod, "Extend");
//Provider->Format = (FORMAT)GetProcAddress(hMod, "Format");
Provider->FormatEx = (FORMATEX)GetProcAddress(hMod, "FormatEx");
//Provider->Recover = (RECOVER)GetProcAddress(hMod, "Recover");
wcscpy(Provider->Name, FileSystem);
InsertTailList(&ProviderListHead, &Provider->ListEntry);
ret = TRUE;
cleanup:
if (!ret)
{
if (hMod)
FreeLibrary(hMod);
if (Provider)
RtlFreeHeap(RtlGetProcessHeap(), 0, Provider);
}
return ret;
}
static BOOLEAN
InitializeFmIfsOnce(void)
{
InitializeListHead(&ProviderListHead);
/* Add default providers */
AddProvider(L"FAT", L"ufat");
AddProvider(L"FAT32", L"ufat");
/* TODO: Check how many IFS are installed in the system */
/* TOSO: and register a descriptor for each one */
/* TODO: and register a descriptor for each one */
return TRUE;
}

View file

@ -1,9 +1,11 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS System Libraries
* FILE: lib/fmifs/precomp.h
* PURPOSE: Win32 FMIFS API Libary Header
* PROGRAMMER: Alex Ionescu (alex@relsoft.net)
* PROJECT: File Management IFS Utility functions
* FILE: reactos/dll/win32/fmifs/precomp.h
* PURPOSE: Win32 FMIFS API Library Header
*
* PROGRAMMERS: Alex Ionescu (alex@relsoft.net)
* Hervé Poussineau (hpoussin@reactos.org)
*/
/* INCLUDES ******************************************************************/
@ -23,4 +25,33 @@
/* VFATLIB Public Header */
#include <fslib/vfatlib.h>
typedef NTSTATUS (NTAPI *FORMATEX)(
IN PUNICODE_STRING DriveRoot,
IN FMIFS_MEDIA_FLAG MediaFlag,
IN PUNICODE_STRING Label,
IN BOOLEAN QuickFormat,
IN ULONG ClusterSize,
IN PFMIFSCALLBACK Callback);
extern LIST_ENTRY ProviderListHead;
typedef struct _IFS_PROVIDER
{
LIST_ENTRY ListEntry;
PVOID Chkdsk;
PVOID ChkdskEx;
PVOID Extend;
PVOID Format;
FORMATEX FormatEx;
PVOID Recover;
WCHAR Name[1];
} IFS_PROVIDER, *PIFS_PROVIDER;
/* init.c */
PIFS_PROVIDER
GetProvider(
IN PWCHAR FileSytem);
/* EOF */

View file

@ -9,15 +9,9 @@
#include <fmifs/fmifs.h>
NTSTATUS
VfatInitialize (VOID);
NTSTATUS
VfatCleanup (VOID);
NTSTATUS
NTSTATUS NTAPI
VfatFormat (PUNICODE_STRING DriveRoot,
ULONG MediaFlag,
FMIFS_MEDIA_FLAG MediaFlag,
PUNICODE_STRING Label,
BOOLEAN QuickFormat,
ULONG ClusterSize,

View file

@ -9,16 +9,12 @@
#include <fmifs/fmifs.h>
NTSTATUS
VfatxInitialize (VOID);
NTSTATUS
VfatxCleanup (VOID);
NTSTATUS
NTSTATUS NTAPI
VfatxFormat (PUNICODE_STRING DriveRoot,
ULONG MediaFlag,
FMIFS_MEDIA_FLAG MediaFlag,
PUNICODE_STRING Label,
BOOLEAN QuickFormat,
ULONG ClusterSize,
PFMIFSCALLBACK Callback);
#endif /*__VFATLIB_H */

View file

@ -12,18 +12,9 @@
#define NDEBUG
#include <debug.h>
NTSTATUS
VfatInitialize(VOID)
{
DPRINT("VfatInitialize()\n");
return STATUS_SUCCESS;
}
NTSTATUS
NTSTATUS NTAPI
VfatFormat (PUNICODE_STRING DriveRoot,
ULONG MediaFlag,
FMIFS_MEDIA_FLAG MediaFlag,
PUNICODE_STRING Label,
BOOLEAN QuickFormat,
ULONG ClusterSize,
@ -194,15 +185,6 @@ VfatFormat (PUNICODE_STRING DriveRoot,
}
NTSTATUS
VfatCleanup(VOID)
{
DPRINT("VfatCleanup()\n");
return STATUS_SUCCESS;
}
VOID
UpdateProgress (PFORMAT_CONTEXT Context,
ULONG Increment)

View file

@ -12,19 +12,12 @@
#define NDEBUG
#include <debug.h>
NTSTATUS
VfatxInitialize(VOID)
{
DPRINT("VfatxInitialize()\n");
return STATUS_SUCCESS;
}
NTSTATUS
NTSTATUS NTAPI
VfatxFormat (PUNICODE_STRING DriveRoot,
ULONG MediaFlag,
FMIFS_MEDIA_FLAG MediaFlag,
PUNICODE_STRING Label,
BOOLEAN QuickFormat,
ULONG ClusterSize,
PFMIFSCALLBACK Callback)
{
OBJECT_ATTRIBUTES ObjectAttributes;
@ -163,15 +156,6 @@ VfatxFormat (PUNICODE_STRING DriveRoot,
}
NTSTATUS
VfatxCleanup(VOID)
{
DPRINT("VfatxCleanup()\n");
return STATUS_SUCCESS;
}
VOID
VfatxUpdateProgress (PFORMAT_CONTEXT Context,
ULONG Increment)