Функция GenECCAndEDC_Mode1  осуществляет генерацию корректирующих кодов на основе 2048-байтового блока пользовательских данных и имеет следующий прототип (листинг 2.22).:

Листинг 21.22. Прототип функции GenECCAndEDC_Mode1

GenECCAndEDC_Mode1(char *userdata_src,      // указатель на массив из 2048 байт

            char *header_src,               // указатель на заголовок

            struct RAW_SECTOR_MODE1 *raw_sector_mode1_dst)

Где:

q      userdata_src — указатель на 2048-байтовый блок пользовательских данных для которых необходимо выполнить расчет корректирующих кодов. Сами пользовательские данные в процессе выполнения функции остаются неизменными и автоматически копируются в буфер целевого сектора, где к ним добавляется 104 + 172 байт четности и 4  байта контрольной суммы;.

q       

q      header_src — указатель на 4-байтовый блок, содержащий заголовок сектора. Первые три байта занимает абсолютный адрес, записанный в BCD-форме, а четвертый байт отвечает за тип сектора, которому необходимо присвоить значение 1, и соответствующий режиму "корректирующие коды задействованы";.

q       

q      raw_sector_mode1_dst — указатель на 2352-байтовый блок в который будет записан сгенерированный сектор, содержащий 2048-байт пользовательских данных и 104+172 байт корректирующих кодов вместе 4 байтами контрольной суммы и представленный следующей структурой, представленной в листинге 2.23. :

Листинг 21.23. Структура "сырого" сектора

struct RAW_SECTOR_MODE1

{

    BYTE        SYNC[12];             // синхрогруппа

    BYTE        ADDR[3];              // абс. адрес сектора

    BYTE        MODE;                 // тип сектора

    BYTE        USER_DATA[2048];      // пользовательские данные

    BYTE        EDC[4];               // контрольная сумма

    BYTE        ZERO[8];              // нули (не используется)

    BYTE        P[172];               // P-байты четности

    BYTE        Q[104];               // Q-байты четности

    };

При успешном завершении функция возвращает ненулевое значение и ноль в противном случае.