Чтение rma области dvd-r/-rw диска
. . .
/* Тело цикла аналогично предыдущему примеру */
. . .
}
Копию последнего записанного в RMA область RMD блока (точнее, пять копий) содержит последняя Border-out область
DVD-R/-RW диска, поэтому для получения информации о диске RMD блоки предпочтительнее считывать из этой области.
Чтобы прочитать RMD блок из последней Border-out, поле Format команды READ DVD STRUCTURE должно быть равно
0x0C, в поле Address указывается номер поля Field, содержимое которого мы хотим прочитать.
Чтение полей RMD блока из последней Border-out выполняет следующая функция:
int read_RMD()
{
/* Размер считываемых данных (в байтах) */
#define SIZE 2052 // 2048 bytes (1 sector) + 4 header`s bytes
int i, n = 16;
__u8 read_dvd_struct_cmd[12];
__u8 buff[SIZE]; // буфер для считываемых данных
__u8 *RMD = buff + 4; // указатель на начало данных RMD блока
__u8 disk_status = 0;
__u16 alloc_size = SIZE;
__u16 dvd_data_len = 0;
__u16 Inv_RZone_num = 0; // номер последней невидимой/незавершенной RZone
__u32 Start_BOUT = 0, Start_RZone = 0, LRA_RZone = 0;
/* Считываем Field #0 и проверяем статус диска */
memset(buff, 0, SIZE);
memset(read_dvd_struct_cmd, 0, 12);
read_dvd_struct_cmd[0] = 0xAD;
read_dvd_struct_cmd[7] = 0x0C; // read RMD in the last Border-out
read_dvd_struct_cmd[5] = 0; // Address = 0, read Field #0
read_dvd_struct_cmd[8] = *((__u8 *)&alloc_size + 1);
Другие статьи по теме:
- Конфигурация накопителя- Говоря о достоинствах dvd-формата
- Сжатия информации по системе atrac
- Портативные dvd-плееры
- lg electronics