diff options
Diffstat (limited to 'src/Driver')
-rw-r--r-- | src/Driver/Ntdriver.c | 8 | ||||
-rw-r--r-- | src/Driver/Ntvol.c | 16 |
2 files changed, 18 insertions, 6 deletions
diff --git a/src/Driver/Ntdriver.c b/src/Driver/Ntdriver.c index f8db446f..3505826b 100644 --- a/src/Driver/Ntdriver.c +++ b/src/Driver/Ntdriver.c @@ -1353,12 +1353,14 @@ NTSTATUS ProcessMainDeviceControlIrp (PDEVICE_OBJECT DeviceObject, PEXTENSION Ex switch (BE64 (*(uint64 *) readBuffer)) { case 0xEB52904E54465320: // NTFS - case 0xEB3C904D53444F53: // FAT16 + case 0xEB3C904D53444F53: // FAT16/FAT32 case 0xEB58904D53444F53: // FAT32 case 0xEB76904558464154: // exFAT case 0x0000005265465300: // ReFS - case 0xEB58906D6B66732E: // FAT by mkfs.fat - case 0xEB58906D6B646F73: // FAT by mkfs.vfat/mkdosfs + case 0xEB58906D6B66732E: // FAT32 mkfs.fat + case 0xEB58906D6B646F73: // FAT32 mkfs.vfat/mkdosfs + case 0xEB3C906D6B66732E: // FAT16/FAT12 mkfs.fat + case 0xEB3C906D6B646F73: // FAT16/FAT12 mkfs.vfat/mkdosfs opentest->FilesystemDetected = TRUE; break; } diff --git a/src/Driver/Ntvol.c b/src/Driver/Ntvol.c index 15e6e610..0413708f 100644 --- a/src/Driver/Ntvol.c +++ b/src/Driver/Ntvol.c @@ -739,7 +739,9 @@ NTSTATUS TCOpenVolume (PDEVICE_OBJECT DeviceObject, switch (fsId) { - case 0xEB3C904D53444F53: // FAT16 + case 0xEB3C904D53444F53: // FAT16/FAT12 + case 0xEB3C906D6B66732E: // mkfs.fat + case 0xEB3C906D6B646F73: // mkfs.vfat/mkdosfs // workaround for FAT32 formatting by TrueCrypt/VeraCrypt if (memcmp (readBuffer + 0x52, "FAT32 ", 8) == 0) { @@ -748,8 +750,16 @@ NTSTATUS TCOpenVolume (PDEVICE_OBJECT DeviceObject, } else { - Extension->PartitionType = PARTITION_FAT_16; - Dump ("FAT16 detected\n"); + if (memcmp (readBuffer + 0x36, "FAT12 ", 8) == 0) + { + Extension->PartitionType = PARTITION_FAT_12; + Dump ("FAT12 detected\n"); + } + else + { + Extension->PartitionType = PARTITION_FAT_16; + Dump ("FAT16 detected\n"); + } } break; case 0xEB58906D6B66732E: // mkfs.fat |