Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
int read_cd(__u32 lba)
{
int i = 0, out_f, ret;
__u8 cmd_buff[12];
__u8 buff[SECT_SIZE];
__u16 data_len = SECT_SIZE, a;
memset((void *)buff, 0, sizeof(buff));
memset((void *)cmd_buff, 0, 12);
/* Формируем командный пакет (рис. 8) */
cmd_buff[0] = 0xBE; // код команды READ CD
cmd_buff[1] = 0; // считываем сектор любого типа (Any Type)
cmd_buff[9] = 0xF8; // считываем всю информацию,
// находящуюся в секторе
cmd_buff[8] = 1; // читаем один сектор
/* Заполняем поле Starting Logical Block Address, при этом меняем порядок расположения байт */
lba = __swab32(lba);
memcpy((cmd_buff + 2), (void *)&lba, 4);
/* Посылаем устройству командный пакет */
if(send_packet_data_command(data_len, cmd_buff) < 0) {
request_sense(); return -1;
}
/* Считываем результат и сохраняем его в файле */
for(i = 0; i < SECT_SIZE; i += 2) {
IN_P_W(a, 0x170);
memcpy((void *)(buff + i), (void *)&a, 2);
}
out_f = open("sector", O_CREAT|O_RDWR, 0600);
write(out_f, buff, sizeof(buff));
return 0;
}
Если при обращении к устройству произойдет ошибка, то никаких данных мы, соответственно, не получим. Однако у нас есть возможность узнать причину ошибки. Для этого достаточно послать устройству пакетную команду REQUEST SENSE. В ответ устройство выдаст информационный блок sense data (см. рис. 10).
Request Sense Standard Data
Bit Byte |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
0 |
Valid |
Error Code (70h or 71h) |
||||||
1 |
Segment Number (Reserved) |
|||||||
2 |
Reserved |
ILI |
Reserved |
Sense Key |
||||
3 |
Information |
|||||||
6 |
||||||||
7 |
Additional Sense Length (n - 7) |
|||||||
8 |
Command Specific Information |
|||||||
11 |
|
|||||||
12 |
Additional Sense Code |
|||||||
13 |
Additional Sense Code Qualifier (Optional) |
|||||||
14 |
Field Replaceable Unit Code (Optional) |
|||||||
...... |