FAT

Тема в разделе "WASM.BEGINNERS", создана пользователем _s4, 20 ноя 2006.

  1. _s4

    _s4 New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2006
    Сообщения:
    58
    Кто нибуть знает почему умерает файловая система при перезаписи первого сектора на дискете(первые 446 байт), таблицу разделов не трогаю, но не умерает если не трогать первые 24 байта ?
     
  2. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    смотри структуру бут-сектора
     
  3. _s4

    _s4 New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2006
    Сообщения:
    58
    Структуру бут сектора пересмотрел уже не раз... На винте все нормально(на Fat16/32) а вот на дискете нет... :dntknw:
     
  4. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.347
    Ну и как? Не заметил сколько служебных данных находится в тех 446-ти байтах, которые ты затираешь?

    А она есть на дискетах? :)
     
  5. _s4

    _s4 New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2006
    Сообщения:
    58
    2rmn нет, если честно, то не заметил... Сколько не читал доков про это, не разу не слышал ни слово о каких нибуть служебных данных до 446 байта.
     
  6. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    _s4
    А что же там по твойму находится, если не служебные данные?
     
  7. _s4

    _s4 New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2006
    Сообщения:
    58
    2Pavia mbr... -\
     
  8. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    _s4
    На дискетах нет MBR, обычно. Первый сектор -- загрузчик файловой системы.
     
  9. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.347
    Что значит "обычно"? :) Его там нет никогда. Или кто-то уже нарезал на дискетах логические диски?
     
  10. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    rmn
    Вот мне самому интересно, если добавить, как к этому ОС отнесутся? Этим летом встретил флешку, 32 метра, с MBR :).
     
  11. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.347
    Для флешки это нормально. На ней можно сделать несколько логических дисков (информация о них как раз в Partition Table записана, а она в MBR).
    А с дискеткой надо будет попробовать... :)
     
  12. zxm

    zxm New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2006
    Сообщения:
    71
    Гы, еси получиться - скажите )
     
  13. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    rmn
    Да, да, мне тоже интересно, но дисковода нет :).
     
  14. _s4

    _s4 New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2006
    Сообщения:
    58
    Хорошо..., кто нибуть знает на дискете в BR что находится в первых 24 байтах ? Или вообще в первых 446 байтах не считая загрузчика ?
     
  15. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.347
    То же, что и в BootRecord логического диска на винте - загрузчик ОС.

    Код (Text):
    1. /////////////////////////////////////////////////////////////////////////////////
    2. /*   === Элемент таблицы разделов === */
    3. typedef struct _PARTITIONELEMENT
    4. {
    5.     unsigned char  ActiveFlag;
    6.     unsigned char  StartingHead;
    7.     unsigned char  StartingSector;
    8.     unsigned char  StartingCyl;
    9.     unsigned char  SystemCode;
    10.     unsigned char  LastHead;
    11.     unsigned char  LastSector;
    12.     unsigned char  LastCyl;
    13.     unsigned long  RelativeOffset;
    14.     unsigned long  SizeInSectors;
    15. } PARTITIONELEMENT;
    16.  
    17. typedef struct _PARTITIONTABLE
    18. {
    19.     PARTITIONELEMENT Partitions[4];
    20. } PARTITIONTABLE;
    21.  
    22. /*   === Блок параметров BIOS === */
    23. typedef struct _BIOSPARAMETERSBLOCK
    24. {
    25.     unsigned short BytesPerSector;
    26.     unsigned char  SectorsPerCluster;
    27.     unsigned short ReservedSectors;
    28.     unsigned char  FATCount;
    29.     unsigned short MaxRootDescriptors;
    30.     unsigned short TotalSectors;
    31.     unsigned char  MediaDescriptor;
    32.     unsigned short SectorsInFAT;
    33. } BIOSPARAMETERSBLOCK;
    34.  
    35. /*   === Расширенный блок параметров BIOS === */
    36. typedef struct _EXTENDEDBIOSPARAMETERSBLOCK
    37. {
    38.     BIOSPARAMETERSBLOCK OldBPB;
    39.     unsigned short      SectorsPerTrack;
    40.     unsigned short      NumberOfHeads;
    41.     unsigned short      HiddenSectorsForPart_Less32Mb;
    42.     unsigned short      HiddenSectorsForPart_Great32Mb;
    43.     unsigned long       TotalSectorsForDisk_Great32Mb;
    44. } EXTENDEDBIOSPARAMETERSBLOCK;
    45.  
    46. /*   === Старая загрузочная запись === */
    47. typedef struct _OLDBOOTRECORD
    48. {
    49.     unsigned char       JMP[3];
    50.     char                Vendor[8];
    51.     BIOSPARAMETERSBLOCK bpb;
    52.     unsigned short      SectorsPerTrack;
    53.     unsigned short      NumberOfHeads;
    54.     unsigned short      HiddenSectors;
    55.     unsigned char       Loader[482];
    56. } OLDBOOTRECORD;
    57.  
    58. /*   === Новая загрузочная запись === */
    59. typedef struct _NEWBOOTRECORD
    60. {
    61.     unsigned char               JMP[3];
    62.     char                        Vendor[8];
    63.     EXTENDEDBIOSPARAMETERSBLOCK EBPB;
    64.     unsigned char               PhysicalDeviceNumber;
    65.     unsigned char               Reserved_00;
    66.     unsigned char               ExtendedBootRecordFlag;
    67.     unsigned long               VolumeSerialNumber;
    68.     char                        VolumeLabel[11];
    69.     char                        Reserved_01[8];
    70.     unsigned char               Loader[450];
    71. } NEWBOOTRECORD;
    72.  
    73. typedef struct _MBR
    74. {
    75.     unsigned char  Formatted[0x1be];
    76.     PARTITIONTABLE PartitionTable;
    77.     unsigned short Signature;
    78. } MBR;