About the calcultation for LBA FAT32 (as opposed to LBA NTFS where I use the windows IOCTL IOCTL_VOLUME_LOGICAL_TO_PHYSICAL) :
-You suggested (in another post) : Sectors_Before+Reserved_Sectors+Number_of_FATs(normally 2) * Sectors_per_FAT+LCN * Cluster_size+(possibly) Cluster_bias
-I initially suggested : physical offset = (LCN * bytes_per_cluster) + offset to start of first cluster (i meant sectors before)
-It proved that you were right (as always) and I finally ended with your formula (fetching all datas from the FAT32 partition boot sector) : sectors before, reserved sectors, number of FATs * sectors per FAT ...
As for the LCN, I am using (independentely of the filesystem) the windows IOCTL FSCTL_GET_RETRIEVAL_POINTERS.
As for the root directory, case 2 and 3 (fat32 and ntfs) are correctly dealt now, (reading the last part of your previous post).
Case 1 (fat12/16) may be incorrectly dealt with for now as I am not accounting root directory.