58 Глава 3

0

Используются не 2 стороны

1

1

На дорожке 8 секторов

0

На дорожке не 8 секторов

2

1

Съемный носитель информации

0

Несъемный носитель информации


Назначение остальных полей ВРВ будет пояснено дальше. Сразу за ВРВ (начиная с байта с номером 25) в загрузочном секторе располагается следующая структура данных:

type

Add_BPB_Type = record

TrkSecs: Word; {Количество секторов на дорожке}

HeadCnt: Word; {Количество головок)

HidnSec: Word {Количество спрятанных секторов}

end; {Ad.d_BPB__Type}

Поле HidnSec содержит общее количество «спрятанных» секторов, т.е. секторов, не относящихся к логической структуре диска (см. ниже). Начиная с версии 4.0 в ДОС вошли средства, поддерживающие жесткие диски большого размера (больше 32 Мбайт). Поэтому для версий 4.х и выше структура данных, располагающихся за ВРВ, такова:

type

Add_BPB_4_Type = record

TrkSecs : Word; {"Количество секторов на дорожке}

HeadCnt : Word; {Количество головок}

HidnSecLo: Word {Младшее слово количества спрятанных секторов}

HidnSecHi: Word {Старшее слово}

TotSecs : Longint {Полное количество секторов на диске) end; {Add._BPB_4_Type}

Признаком того, что используется расширенный блок ВРВ, является значение 41 (символ «)») в 39—м по счету байте загрузочного сектора.

Физический диск может быть разбит на несколько логических разделов, каждый из которых имеет свою логическую структуру. С точки зрения пользователя, каждый раздел выступает как самостоятельный диск и называется логическим диском. Разбивка физического диска на ряд логических устройств осуществляется утилитой FDisk операционной системы или подобными ей несистемными средствами (ADM, Disk Manager и т.п.). Если диск разбит на разделы, в конце загрузочного сектора выделяется 64—байтное поле описателей разделов (по 16 байт на каждый логический диск). Это поле начинается с байта с номером 447 (смещение $1ВЕ от начала сектора). Каждый описатель раздела, создаваемый утилитой FDisk, соответствует такой структуре данных:

type

Part_Type = record

BootF: Byte; {Флаг активности раздела} BegHd: Byte; {Начало раздела - номер головки}