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

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

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

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

IT-новости

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

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

подробнее

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

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

подробнее

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

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

подробнее

#ifdef DEBUG

    printf("Signature - 0x%X ", sign);

#endif

 

    if(sign != SIGNATURE) return -1;

    return 0;

}

Функция чтения расширенной таблицы разделов:

void read_ext_ptable(int hard, __u64 seek)

{

    int num = 4; // начиная с этой позиции, массив структур pt_t будет заполняться информацией о логических дисках

    __u8 smbr[512];

 

Входные данные:

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

n  seek – смещение к расширенному разделу от начала диска (в байтах).

Для получения информации о логических дисках организуем цикл:

    for(;;num++) {

Считываем SMBR, находящуюся по смещению seek от начала диска:

    memset((void *)smbr, 0, 512);

    pread64(hard, smbr, 512, seek);

Заполняем два элемента таблицы pt_t, начиная с позиции num. Первый элемент будет указывать на логический диск, а второй – на следующую структуру SMBR:

    memset((void *)&pt_t[num], 0, PT_SIZE * 2);

    memcpy((void *)&pt_t[num], smbr + 0x1BE, PT_SIZE * 2);

Вносим поправку в поле «Номер начального сектора» – отсчет ведется от начала диска:

    pt_t[num].sect_before += (seek / 512);

Если код типа раздела равен нулю, то больше логических дисков нет:

      if(!(pt_t[num + 1].type_part)) break;

Вычисляем смещение к следующему SMBR:

    seek = ((__u64)(pt_t[num].sect_before + pt_t[num].sect_total)) * 512;

    }

    return;

}

Функция show_pt_info() отображает информацию о найденных логических дисках на устройстве:

void show_pt_info()

{

    int i = 0, n;

 

#ifdef DEBUG

    printf("Число разделов на диске - %d ", PART_NUM);

#endif

 

    for(; i < MAX_PART; i++) {

    if(!pt_t[i].type_part) break;

    printf(" Тип раздела %d - ", i);

 

        for(n = 0; n < PART_NUM; n++) {

        if(pt_t[i].type_part == i386_sys_types[n].part_type) {

           printf("%s ", i386_sys_types[n].part_name);

           break;


Предыдущая страницаОглавлениеСледующая страница
 
[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 - 2023 год
Нижний Новгород, ул. Дальняя, 17А.
Rambler's Top100