- Allow the second device name RosFat to make it possible to load vfatfs on W2k if fastfat is already loaded.  
- Moved the initialisation of the callback and fast io functions to fastio.c.
Modified: trunk/reactos/drivers/fs/vfat/iface.c
Modified: trunk/reactos/drivers/fs/vfat/vfat.h

Modified: trunk/reactos/drivers/fs/vfat/iface.c
--- trunk/reactos/drivers/fs/vfat/iface.c	2005-01-25 21:11:46 UTC (rev 13281)
+++ trunk/reactos/drivers/fs/vfat/iface.c	2005-01-25 21:12:52 UTC (rev 13282)
@@ -49,7 +49,6 @@
 {
    PDEVICE_OBJECT DeviceObject;
    UNICODE_STRING DeviceName = RTL_CONSTANT_STRING(L"\\Fat");
-   PFAST_IO_DISPATCH pFastIoDispatch;
    NTSTATUS Status;
 
    Status = IoCreateDevice(DriverObject,
@@ -61,7 +60,23 @@
 			   &DeviceObject);
    if (!NT_SUCCESS(Status))
      {
-	return (Status);
+       if (Status == STATUS_OBJECT_NAME_EXISTS ||
+	   Status == STATUS_OBJECT_NAME_COLLISION)
+	 {
+	   /* Try an other name, if 'Fat' is already in use. 'Fat' is also used by fastfat.sys on W2K */
+	   RtlInitUnicodeString(&DeviceName, L"\\RosFat");
+           Status = IoCreateDevice(DriverObject,
+			           sizeof(VFAT_GLOBAL_DATA),
+			           &DeviceName,
+			           FILE_DEVICE_DISK_FILE_SYSTEM,
+			           0,
+			           FALSE,
+			           &DeviceObject);
+	   if (!NT_SUCCESS(Status))
+	     {
+               return (Status);
+	     }
+	 }
      }
    VfatGlobalData = DeviceObject->DeviceExtension;
    RtlZeroMemory (VfatGlobalData, sizeof(VFAT_GLOBAL_DATA));
@@ -95,9 +110,8 @@
    VfatGlobalData->CacheMgrCallbacks.ReleaseFromReadAhead = VfatReleaseFromReadAhead;
    
    /* Fast I/O */
-   DriverObject->FastIoDispatch = pFastIoDispatch = &VfatGlobalData->FastIoDispatch;
-   pFastIoDispatch->SizeOfFastIoDispatch = sizeof(FAST_IO_DISPATCH);
-   pFastIoDispatch->FastIoCheckIfPossible = VfatFastIoCheckIfPossible;
+   VfatInitFastIoRoutines(&VfatGlobalData->FastIoDispatch);
+   DriverObject->FastIoDispatch = &VfatGlobalData->FastIoDispatch;
 
    /* Private lists */
    ExInitializeNPagedLookasideList(&VfatGlobalData->FcbLookasideList, 

Modified: trunk/reactos/drivers/fs/vfat/vfat.h
--- trunk/reactos/drivers/fs/vfat/vfat.h	2005-01-25 21:11:46 UTC (rev 13281)
+++ trunk/reactos/drivers/fs/vfat/vfat.h	2005-01-25 21:12:52 UTC (rev 13282)
@@ -511,15 +511,8 @@
 
 /*  ---------------------------------------------------------  fastio.c  */
 
-BOOLEAN NTAPI
-VfatFastIoCheckIfPossible(IN PFILE_OBJECT FileObject,
-                          IN PLARGE_INTEGER FileOffset,
-                          IN ULONG Lenght,
-                          IN BOOLEAN Wait,
-                          IN ULONG LockKey,
-                          IN BOOLEAN CheckForReadOperation,
-                          OUT PIO_STATUS_BLOCK IoStatus,
-                          IN PDEVICE_OBJECT DeviceObject);
+VOID
+VfatInitFastIoRoutines(PFAST_IO_DISPATCH FastIoDispatch);
 
 BOOLEAN NTAPI
 VfatAcquireForLazyWrite(IN PVOID Context,