Чтение rma области dvd-r/-rw диска
/* Из Format 2 RMD считываем поля Field #0 (RMD Header) для определения статуса диска и
* формата остальных RMD блоков, Field #1 для опр. количества операций стирания и перезаписи,
* Field #2 RMD для опр. кода операции стирания и участка с которого cтиралась информация
*/
memset(read_dvd_struct_cmd, 0, 12);
read_dvd_struct_cmd[0] = 0xAD;
read_dvd_struct_cmd[5] = 1; // адрес сектора для считывания
read_dvd_struct_cmd[7] = 0x0D; // read RMA
read_dvd_struct_cmd[8] = *((__u8 *)&alloc_size + 1);
read_dvd_struct_cmd[9] = *((__u8 *)&alloc_size);
test_unit_ready();
if(send_cmd(read_dvd_struct_cmd, 12, SG_DXFER_FROM_DEV, \
buff, alloc_size, 20) <0) return -1;
/* Определяем номер последнего сектора, записанного в RMA */
memcpy((void *)&LRS, buff + 4, 4);
LRS = __swab32(LRS);
printf("Last recorded RMA sector number: %u\n", LRS);
/* Field #0, первый сектор RMD блока. Отсчет секторов ведется с 0, 0-й сектор - это Linking Loss area */
*((__u8 *)&RMD_Format) = RMD[1];
*((__u8 *)&RMD_Format + 1) = RMD[0];
disk_status = RMD[2];
printf(“Field 0 (RMD Header)\n”);
printf("RMD Format: %d\n", RMD_Format);
printf("Disk Status: %.2Xh\n", disk_status);
/* Field #1, 2-й сектор RMD блока */
Другие статьи по теме:
- Информационный работник- Домашние аудио-и видеосистемы sony
- A-data
- прототипы nokia
- Новые цифровые технологии с огромной скоростью входят в нашу повседневную жизнь