Кто нибуть знает почему умерает файловая система при перезаписи первого сектора на дискете(первые 446 байт), таблицу разделов не трогаю, но не умерает если не трогать первые 24 байта ?
Структуру бут сектора пересмотрел уже не раз... На винте все нормально(на Fat16/32) а вот на дискете нет...
Ну и как? Не заметил сколько служебных данных находится в тех 446-ти байтах, которые ты затираешь? А она есть на дискетах?
2rmn нет, если честно, то не заметил... Сколько не читал доков про это, не разу не слышал ни слово о каких нибуть служебных данных до 446 байта.
rmn Вот мне самому интересно, если добавить, как к этому ОС отнесутся? Этим летом встретил флешку, 32 метра, с MBR .
Для флешки это нормально. На ней можно сделать несколько логических дисков (информация о них как раз в Partition Table записана, а она в MBR). А с дискеткой надо будет попробовать...
Хорошо..., кто нибуть знает на дискете в BR что находится в первых 24 байтах ? Или вообще в первых 446 байтах не считая загрузчика ?
То же, что и в BootRecord логического диска на винте - загрузчик ОС. Код (Text): ///////////////////////////////////////////////////////////////////////////////// /* === Элемент таблицы разделов === */ typedef struct _PARTITIONELEMENT { unsigned char ActiveFlag; unsigned char StartingHead; unsigned char StartingSector; unsigned char StartingCyl; unsigned char SystemCode; unsigned char LastHead; unsigned char LastSector; unsigned char LastCyl; unsigned long RelativeOffset; unsigned long SizeInSectors; } PARTITIONELEMENT; typedef struct _PARTITIONTABLE { PARTITIONELEMENT Partitions[4]; } PARTITIONTABLE; /* === Блок параметров BIOS === */ typedef struct _BIOSPARAMETERSBLOCK { unsigned short BytesPerSector; unsigned char SectorsPerCluster; unsigned short ReservedSectors; unsigned char FATCount; unsigned short MaxRootDescriptors; unsigned short TotalSectors; unsigned char MediaDescriptor; unsigned short SectorsInFAT; } BIOSPARAMETERSBLOCK; /* === Расширенный блок параметров BIOS === */ typedef struct _EXTENDEDBIOSPARAMETERSBLOCK { BIOSPARAMETERSBLOCK OldBPB; unsigned short SectorsPerTrack; unsigned short NumberOfHeads; unsigned short HiddenSectorsForPart_Less32Mb; unsigned short HiddenSectorsForPart_Great32Mb; unsigned long TotalSectorsForDisk_Great32Mb; } EXTENDEDBIOSPARAMETERSBLOCK; /* === Старая загрузочная запись === */ typedef struct _OLDBOOTRECORD { unsigned char JMP[3]; char Vendor[8]; BIOSPARAMETERSBLOCK bpb; unsigned short SectorsPerTrack; unsigned short NumberOfHeads; unsigned short HiddenSectors; unsigned char Loader[482]; } OLDBOOTRECORD; /* === Новая загрузочная запись === */ typedef struct _NEWBOOTRECORD { unsigned char JMP[3]; char Vendor[8]; EXTENDEDBIOSPARAMETERSBLOCK EBPB; unsigned char PhysicalDeviceNumber; unsigned char Reserved_00; unsigned char ExtendedBootRecordFlag; unsigned long VolumeSerialNumber; char VolumeLabel[11]; char Reserved_01[8]; unsigned char Loader[450]; } NEWBOOTRECORD; typedef struct _MBR { unsigned char Formatted[0x1be]; PARTITIONTABLE PartitionTable; unsigned short Signature; } MBR;