R>Получаю цепочку кластеров файлика с NTFS раздела. Копирую на винт все замечательно.
R>Пытаюсь проделать тоже самое с файликом на fat32, часть файла является мусором
R>Опытным путем выяснил, что смещение верхушки в результирующем файле составляет 4096 байта.
R>В чем может быть проблема при работе с FAT32?
R>размер таблицы фат? и как это пофиксить. Ниже представлен код копирующий файл.
R> Offset.QuadPart = (ClusterSize * Clusters[r]);
R> printf( "%d\n", Offset.QuadPart );
R> SetFilePointer(hDrive, Offset.LowPart, &Offset.HighPart, FILE_BEGIN);
R> ReadFile(hDrive, Buff_Read, ClusterSize, &Bytes, NULL);
Нумерация кластеров на FAT начинается не от начала тома.
Область данных начинается после области boot + области фат(ов) + (область корневой директории на FAT12/16)
4096 байт для такой области маловато (разве только для дискеты)
Чтобы это пофиксить необходимо к Offset добавить эту область.
Как вычислить эту область? Прочитайте спецификацию на FAT.
http://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/fatgen103.doc