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

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

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

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

IT-новости

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

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

подробнее

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

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

подробнее

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

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

подробнее

n  __u8 alias_checksum – контрольная сумма короткого имени;

n  __u8 name5_10[12] – символы 6 – 11 имени;

n  __u8 name11_12[4] – символы 12 – 13 имени.

Продолжим рассмотрение программной реализации алгоритма и определим имя раздела, на котором создана файловая система FAT16:

#ifndef FAT16_PART_NAME

#define FAT16_PART_NAME "/dev/hda1"

#endif

Глобальные структуры:

struct fat_boot_sector fbs; // структура загрузочного сектора

struct msdos_dir_entry dentry; // структура элемента каталога

Глобальные переменные:

__u16 *fat16;           // сюда копируем таблицу FAT16

__u16 sector_size;      // размер сектора (из FAT16)

__u16 dir_entries;      // число 32-байтных дескрипторов

                        // в root-каталоге (0 для FAT32)

__u16 sectors;          // общее число секторов в разделе

__u32 fat16_size;       // размер FAT16

__u32 root_size;        // размер корневого каталога

__u32 data_start;       // начало области данных

__u16 byte_per_cluster; // размер кластера в байтах

__u16 next_cluster;     // очередной кластер в цепочке

__u8 *dir_entry = NULL; // указатель на записи каталога

 

int hard;               // дескриптор файла устройства

int fat;

Начнём рассмотрение с главной функции:

int main()

{

    int num;

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

    __u8 *full_path = "/Folder1/Folder2/text.txt";

Открываем файл устройства:

    hard = open(FAT16_PART_NAME, O_RDONLY);

    if(hard < 0) {

    perror(FAT16_PART_NAME);

    exit(-1);

    }

Считываем первые 10 кластеров файла. Считывание выполняет функция fat16_read_file(). Параметры функции – полное имя файла и число кластеров для чтения. Функция возвращает число прочитанных кластеров или -1, если при чтении произошла ошибка:

    num = fat16_read_file(full_path, 10);

    if(num < 0) perror("fat16_read_file");

    else printf("Read %d clusters ", num);

Закрываем файл устройства и выходим:

    close(hard);

    return 0;

}

Функция чтения кластеров файла имеет следующий вид:

int fat16_read_file(__u8 *full_path, int num)

{

    struct split_name sn;             // структура для хранения составных частей файла

    __u8 tmp_name_buff[SHORT_NAME]; // буфер для временного хранения составных элементов полного пути файла

    static int i = 1;

    int n;

 


Предыдущая страницаОглавлениеСледующая страница
 
[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]

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