Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
tmp_buff = (__u8 *)malloc(byte_per_cluster);
n = open("clust", O_CREAT|O_RDWR, 0600);
if(n < 0) {
perror("open");
return -1;
}
printf("file`s first cluster - 0x%X .. ", start_cluster);
for(i = 0; i < num; i++) {
memset(tmp_buff, 0, byte_per_cluster);
if(read_cluster(start_cluster, tmp_buff) < 0) return -1;
if(write(n, tmp_buff, byte_per_cluster) < 0) {
perror("write");
return -1;
}
next_cluster = fat32[start_cluster];
if(next_cluster == EOF_FAT32) {
free(tmp_buff);
close(n);
return ++i;
}
start_cluster = next_cluster;
}
return i;
}
}
}
Назначение следующих трёх функций – получить содержимое системной области, т.е. загрузочного сектора, структуры FSInfo и таблицы FAT32:
1) функция read_fbs() выполняет чтение загрузочного сектора:
int read_fbs()
{
if(pread64(hard, (__u8 *)&fbs, sizeof(fbs), start_seek) < 0) return -1;
return 0;
}
2) функция read_fs_info() считывает структуру FSInfo:
int read_fs_info()
{
__u64 seek = (__u64)fbs.info_sector * 512 + start_seek;
if(pread64(hard, (__u8 *)&fsinfo, sizeof(fsinfo), seek) < 0) return -1;
return 0;
}