Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
}
}
if(n == PART_NUM) printf("unknown type ");
printf("Признак загрузки - 0x%X ", pt_t[i].bootable);
printf("Секторов в разделе %d - %d ", i, pt_t[i].sect_total);
printf("Секторов перед разделом %d - %d ", i, pt_t[i].sect_before);
}
return;
}
Чтение кластеров файла с раздела FAT32 выполняет функция fat32_read_file(). Эта функция имеет много общего с функцией fat16_read_file(), поэтому за подробными комментариями обратитесь к п. 6:
int fat32_read_file(__u8 *full_path, int num)
{
struct split_name sn;
__u8 tmp_name_buff[SHORT_NAME];
int i = 1, n;
__u32 start_cluster, next_cluster;
__u8 *tmp_buff;
Подготовительные операции – чистим буфер, структуру и проверяем первый слэш:
memset(tmp_name_buff, 0, SHORT_NAME);
memset((void *)&sn, 0, sizeof(struct split_name));
if(full_path[0] != '/') return -1;
Считываем загрузочный сектор:
if(read_fbs() < 0) return -1;
memcpy((void *)§or_size, (void *)fbs.sector_size, 2);
memcpy((void *)&dir_entries, (void *)fbs.dir_entries, 2);
memcpy((void *)§ors, (void *)fbs.sectors, 2);
Считываем структуру FSInfo и отобразим сигнатуру, находящуюся в ней:
if(read_fs_info() < 0) return -1;
printf("Signature1 - 0x%X ", fsinfo.signature1);
printf("Signature2 - 0x%X ", fsinfo.signature2);
fat32_size = fbs.fat32_length * 512; // размер FAT32 в байтах
data_start = 512 * fbs.reserved + fat32_size * 2; // начало поля данных