Reverted parts of the last changes. Vfat must always check the partition type if it is available.
Modified: trunk/reactos/drivers/fs/vfat/fsctl.c

Modified: trunk/reactos/drivers/fs/vfat/fsctl.c
--- trunk/reactos/drivers/fs/vfat/fsctl.c	2005-01-13 20:54:13 UTC (rev 13031)
+++ trunk/reactos/drivers/fs/vfat/fsctl.c	2005-01-13 20:57:30 UTC (rev 13032)
@@ -86,6 +86,35 @@
          return Status;
       }
       PartitionInfoIsValid = TRUE;
+      DPRINT("Partition Information:\n");
+      DPRINT("StartingOffset      %u\n", PartitionInfo.StartingOffset.QuadPart  / 512);
+      DPRINT("PartitionLength     %u\n", PartitionInfo.PartitionLength.QuadPart / 512);
+      DPRINT("HiddenSectors       %u\n", PartitionInfo.HiddenSectors);
+      DPRINT("PartitionNumber     %u\n", PartitionInfo.PartitionNumber);
+      DPRINT("PartitionType       %u\n", PartitionInfo.PartitionType);
+      DPRINT("BootIndicator       %u\n", PartitionInfo.BootIndicator);
+      DPRINT("RecognizedPartition %u\n", PartitionInfo.RecognizedPartition);
+      DPRINT("RewritePartition    %u\n", PartitionInfo.RewritePartition);
+      if (PartitionInfo.PartitionType)
+      {
+         if (PartitionInfo.PartitionType == PARTITION_FAT_12       ||
+             PartitionInfo.PartitionType == PARTITION_FAT_16       ||
+             PartitionInfo.PartitionType == PARTITION_HUGE         ||
+             PartitionInfo.PartitionType == PARTITION_FAT32        ||
+             PartitionInfo.PartitionType == PARTITION_FAT32_XINT13 ||
+             PartitionInfo.PartitionType == PARTITION_XINT13)
+         {
+            *RecognizedFS = TRUE;
+         }
+      }
+      else if (DiskGeometry.MediaType == RemovableMedia &&
+               PartitionInfo.PartitionNumber > 0 &&
+               PartitionInfo.StartingOffset.QuadPart == 0LL &&
+               PartitionInfo.PartitionLength.QuadPart > 0LL)
+      {
+         /* This is possible a removable media formated as super floppy */
+         *RecognizedFS = TRUE;
+      }
    }
    else if (DiskGeometry.MediaType == Unknown)
    {
@@ -97,6 +126,14 @@
       *RecognizedFS = TRUE;
       DiskGeometry.BytesPerSector = 512;
    }
+   else
+   {
+      *RecognizedFS = TRUE;
+   }  
+   if (*RecognizedFS == FALSE)
+   {
+      return STATUS_SUCCESS;
+   }
 
    Boot = ExAllocatePool(NonPagedPool, DiskGeometry.BytesPerSector);
    if (Boot == NULL)
@@ -110,8 +147,6 @@
    Status = VfatReadDisk(DeviceToMount, &Offset, DiskGeometry.BytesPerSector, (PUCHAR) Boot, FALSE);
    if (NT_SUCCESS(Status))
    {
-      *RecognizedFS = TRUE;
-
       if (Boot->Signatur1 != 0xaa55)
       {
          *RecognizedFS = FALSE;