Чтение длинное
При помощи команды длинного чтения программа может прочитать полное содержимое сектора компакт-диска, включая служебные области сектора.
Формат заголовка запроса:
// ---------------
// Код команды 128
// ---------------
#pragma pack(1)
typedef struct _ReadLong
{
ReqHdr rh;
BYTE bAddressMode;
DWORD lpTransferAddress;
WORD wDataSize;
WORD wStartSector;
BYTE bDataReadMode;
BYTE bInterleaveSise;
BYTE bInterleaveSkip;
} ReadLong;
Заполнение полей заголовка запроса:
Поле | Описание | ||
rh.wStatus | После вызова драйвера содержит слово состояния | ||
bAddressMode | Режим адресации:
0 – режим HSG (по умолчанию); 1 – режим Readbook; 2-255 – зарезервировано | ||
lpTransferAddress | Адрес буфера | ||
wDataSize | Размер буфера | ||
wStartSector | Номер начального сектора, должен быть равен нулю | ||
bDataReadMode | Режим чтения данных:
0 – режим Cooked; 1 – режим Raw; 2-255 – зарезервировано | ||
bInterleaveSize | Количество блоков или секторов, которые записаны последовательно друг за другом | ||
bInterleaveSkip | Фактор пропуска при чередовании: количество последовательно расположенных блоков или секторов, которые разделяют фрагменты файла с чередованием |