Herve Poussineau <poussine(a)freesurf.fr>
Simpily the VFAT/FATX detection.
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-12 13:07:17 UTC
(rev 12962)
+++ trunk/reactos/drivers/fs/vfat/fsctl.c 2005-01-12 13:15:24 UTC
(rev 12963)
@@ -86,59 +86,21 @@
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;
- }
}
- /*
- * Floppy disk driver can return Unknown as media type if it
- * doesn't know yet what floppy in the drive really is. This is
- * perfectly correct to do under Windows.
- */
- if (DiskGeometry.MediaType == Unknown)
+ else if (DiskGeometry.MediaType == Unknown)
{
+ /*
+ * Floppy disk driver can return Unknown as media type if it
+ * doesn't know yet what floppy in the drive really is. This is
+ * perfectly correct to do under Windows.
+ */
*RecognizedFS = TRUE;
DiskGeometry.BytesPerSector = 512;
}
- if (DiskGeometry.MediaType > Unknown && DiskGeometry.MediaType <
RemovableMedia )
- {
- *RecognizedFS = TRUE;
- }
- if (*RecognizedFS == FALSE)
- {
- return STATUS_SUCCESS;
- }
Boot = ExAllocatePool(NonPagedPool, DiskGeometry.BytesPerSector);
if (Boot == NULL)
{
- *RecognizedFS=FALSE;
return STATUS_INSUFFICIENT_RESOURCES;
}
@@ -148,17 +110,11 @@
Status = VfatReadDisk(DeviceToMount, &Offset,
DiskGeometry.BytesPerSector, (PUCHAR) Boot, FALSE);
if (NT_SUCCESS(Status))
{
+ *RecognizedFS = TRUE;
+
if (Boot->Signatur1 != 0xaa55)
{
- BootFatX = (struct _BootSectorFatX *) Boot;
- if (BootFatX->SysType[0] != 'F' ||
- BootFatX->SysType[1] != 'A' ||
- BootFatX->SysType[2] != 'T' ||
- BootFatX->SysType[3] != 'X')
- {
- DPRINT1("Signature %04x\n", Boot->Signatur1);
- }
- *RecognizedFS=FALSE;
+ *RecognizedFS = FALSE;
}
if (*RecognizedFS &&
Boot->BytesPerSector != 512 &&
@@ -167,7 +123,7 @@
Boot->BytesPerSector != 4096)
{
DPRINT1("BytesPerSector %d\n", Boot->BytesPerSector);
- *RecognizedFS=FALSE;
+ *RecognizedFS = FALSE;
}
if (*RecognizedFS &&
@@ -175,7 +131,7 @@
Boot->FATCount != 2)
{
DPRINT1("FATCount %d\n", Boot->FATCount);
- *RecognizedFS=FALSE;
+ *RecognizedFS = FALSE;
}
if (*RecognizedFS &&
@@ -190,7 +146,7 @@
Boot->Media != 0xff)
{
DPRINT1("Media %02x\n", Boot->Media);
- *RecognizedFS=FALSE;
+ *RecognizedFS = FALSE;
}
if (*RecognizedFS &&
@@ -204,14 +160,14 @@
Boot->SectorsPerCluster != 128)
{
DPRINT1("SectorsPerCluster %02x\n", Boot->SectorsPerCluster);
- *RecognizedFS=FALSE;
+ *RecognizedFS = FALSE;
}
if (*RecognizedFS &&
Boot->BytesPerSector * Boot->SectorsPerCluster > 32 * 1024)
{
DPRINT1("ClusterSize %dx\n", Boot->BytesPerSector *
Boot->SectorsPerCluster);
- *RecognizedFS=FALSE;
+ *RecognizedFS = FALSE;
}
if (*RecognizedFS)