Необходимо выполнить запись в каждый LBA на диске с помощью SCSI CDB. Здесь я построил цикл while/for для записи в каждый LBA. Я использую 10-байтовую CDB.
Как мне представить 32-битный LBA, чтобы он выполнялся от LBA 0 до Maximun LBA. Какова должна быть длина передачи данных, если я планирую писать на каждом LBA. Размер каждого LBA 512 байт.
for(i=0;i<=max_lba;i++)
{
ccb->cam_flags = DATA_OUT;
ccb->cdb[0] = 0x2A; /* 0x2A SCSI Opcode for write 10 CDB */
ccb->cdb[1] = 0;
ccb->cdb[2] = ?? ( LBA )
ccb->cdb[3] = ?? ( LBA )
ccb->cdb[4] = ?? ( LBA )
ccb->cdb[5] = ?? ( LBA )
ccb->cdb[6] = 0;
ccb->cdb[7] = ?? /* Data Transfer Length */
ccb->cdb[8] = ?? /* Data Transfer Length */
ccb->cdb[9] = 0;
ccb->ccb_address = (long)ccb;
ptr_data = (byte *)(buffer + ccb->data_buf_ptr);
data_pattern = i + (i << 4);
buffer[ccb->data_buf_ptr ] = data_pattern;
}