Разработка динамических сайтов
SEO услуги
Управление контекстной рекламой

Вход на хостинг

Имя пользователя:*

Пароль пользователя:*

IT-новости

20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла

Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......

подробнее

30.07.2015 Ищем уникальный контент для сайта

Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......

подробнее

11.05.2015 Распространённые ошибки разработчиков сайтов

Не секрет, что в сети Интернет насчитывается миллионы сайтов, и каждый день появляются тысячси новых......

подробнее

Байты 7, 8 и 9 содержат координаты сектора в MSF-формате. Если пересчитать этот адрес в формат LBA, то получится, что TEAC считывает «родной» Q-субканал сектора, а MITSUMI читает Q-субканал соседа, 1002 сектора.

Для изучения следующего примера понадобится компакт-диск, на котором записано несколько сессий. Наша задача – прочитать содержимое TOC этого диска при условии, что поле Format содержит значение 10b. Формат данных TOC при Format Field = 10b представлен на рис.13. Следующая структура описывает формат записи TOC при Format = 10b:

struct toc {

    __u8 snum;          // номер сессии

    __u8 ctrl    :4;    // Control

    __u8 adr     :4;    // ADR

    __u8 tno;           // номер трека (всегда 0)

    __u8 point;         // POINT

    __u8 min;           // AMIN

    __u8 sec;           // ASEC

    __u8 frame;         // AFRAME

    __u8 zero;          // 0

    __u8 pmin;          // PMIN

    __u8 psec;          // PSEC

    __u8 pframe;        // PFRAME

} __attribute__ ((packed));

Поле point определяет тип информации, которую содержит запись TOC. Значение этого поля определяет назначение остальных полей, таких как min, sec, frame, pmin, psec, pframe.

Считывание TOC выполняет функция read_toc():

int read_toc()

{

    int i = 1;

    // буфер для хранения результатов чтения TOC

    __u8 *data_buff;

 

/* Задаем размер области памяти для хранения данных ТОС. Т.к. заранее объем данных нам не известен,

 * то зададим маскимальное значение - 64 Кб

 */

    __u16 buff_size = 0xFFFF;

    __u16 toc_data_length = 0; // длина записей TOC

    __u32 lba;

    int toc_entries = 0; // число записей в TOC

    struct cdrom_generic_command cgc;

    struct request_sense sense;

    struct toc *t;

 

    memset((void *)&cgc, 0, sizeof(struct cdrom_generic_command));

    memset(&sense, 0, sizeof(sense));

 

/* Выделяем память для содержимого TOC */

    data_buff = (__u8 *)malloc(buff_size);

    memset(data_buff, 0, buff_size);

 

/* Формируем пакетную команду для чтения TOC */

    cgc.cmd[0] = GPCMD_READ_TOC_PMA_ATIP;

    cgc.cmd[2] = 2; // поле Format Field = 10b

    cgc.sense = &sense;

    cgc.data_direction = CGC_DATA_READ;

    cgc.buffer = data_buff;

    cgc.buflen = buff_size;

 

    buff_size = __swab16(buff_size);

    memcpy((void *)(cgc.cmd + 7), (void *)&buff_size, 2);

 

/* Посылаем командный пакет устройству */


Предыдущая страницаОглавлениеСледующая страница
 
[001] [002] [003] [004] [005] [006] [007] [008] [009] [010] [011] [012] [013] [014] [015] [016] [017] [018] [019] [020]
[021] [022] [023] [024] [025] [026] [027] [028] [029] [030] [031] [032] [033] [034] [035] [036] [037] [038] [039] [040]
[041] [042] [043] [044] [045] [046] [047] [048] [049] [050] [051] [052] [053] [054] [055] [056] [057] [058] [059] [060]
[061] [062] [063] [064] [065] [066] [067] [068] [069] [070] [071] [072] [073] [074] [075] [076] [077] [078] [079] [080]
[081] [082] [083] [084] [085] [086] [087] [088] [089] [090] [091] [092] [093] [094] [095] [096] [097] [098] [099] [100]
[101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120]
[121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140]
[141] [142] [143] [144] [145] [146] [147] [148] [149] [150] [151] [152] [153] [154] [155] [156] [157] [158] [159] [160]
[161]

+7 (831) 413-63-27
ООО Дельта-Технология ©2007 - 2023 год
Нижний Новгород, ул. Дальняя, 17А.
Rambler's Top100