Определение положения головки
// ---------------
// Код функции 1
// ---------------
#pragma pack(1)
typedef struct _HeadLocation
{
BYTE bFunctionCode;
BYTE bAddressMode;
DWORD lpHeadLocation;
} HeadLocation;
Поле |
| Описание | |
bFunctionCode | Код функции | ||
bAddressMode | Режим адресации:
0 – HSG; 1 – Redbook; 2 – 255 – зарезервировано | ||
lpHeadLocation | Положении головки. Значение зависит от режима адресации |
Здесь необходимо сделать замечание относительно режимов адресации.
По умолчанию устройство чтения CD-ROM находится в режиме адресации HSG, описанный в стандарте High Sierra. При этом в качестве адреса указывается логический номер блока.
Другой режим адресации описан в стандарте Redbook. В нем адрес представляет собой набор из трех значений: минуты (MIN), секунды (SEC), фреймы (FRAME). Каждое значение занимает один байт, причем в младшем байте хранится значение FRAME, в следующем байте - значение SEC, и в последнем, третьем байте, - значение MIN.
С помощью следующей формулы вы можете преобразовать адрес из формата Redbook в формат HSG:
SECTOR = MIN * 60 * 75 + SEC * 75 + FRAME – 150