У вас вопросы?
У нас ответы:) SamZan.net

Задание Перечень занятых кластеров

Работа добавлена на сайт samzan.net: 2015-07-05

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 9.3.2025

Задание

Перечень занятых кластеров.

Программа

#include<stdio.h>

#include<dos.h>

#include<conio.h>

#include<ctype.h>

#include<math.h>

#include<stdlib.h>

#include<string.h>

#include<bios.h>

#define drive 3

#define CMD_READ 2    // Команда чтения

#define CMD_RESET 0   // Команда сброса

#define NSECT 1       // Число секторов

char ch;

typedef struct

     {

unsigned char jmp[3];

unsigned char ibm[8];

unsigned sec_size;

unsigned char sec_per_cluster;

unsigned rsv_sec;

unsigned char fat;

unsigned root_size;

unsigned tot_secs;

unsigned char med;

unsigned fat_size;

unsigned trk_secs;

unsigned head_cnt;

unsigned long hid_secs;

unsigned long total_sec;

union

  {

      struct

 {

  unsigned char no_drv;

  unsigned char rezerv;

  unsigned char signat;

  unsigned long serial_num;

  unsigned char label[11];

  unsigned char marker[8];

 }FAT12_16;

      struct

 {

  unsigned long fat_size;

  unsigned int active_fat;

  unsigned int FS;

  unsigned long clst_root;

  unsigned int FS_inf;

  unsigned int bkp_root_clst;

  unsigned char rsrv[12];

  unsigned char ndrive;

  unsigned char resrv;

  unsigned char sign_0x29;

  unsigned long serial_num;

  unsigned char label[11];

  unsigned char marker[8];

 }FAT32;

  };

  }BOOT;

BOOT boot,*pboot=&boot;

char *pfat1; //*pdate;

int i,sinfat,marker;

void fat_line16();

void fat_line32();

void absreadinfat(unsigned sector);

struct date d;

int ft;

unsigned long ft1;

int main(void)

{

 clrscr();

 absread(drive,1,0,pboot);

 pboot->FAT12_16.marker[5]='\0';

 marker=atoi(pboot->FAT12_16.marker+3);

 if ((marker!=12) && (marker!=16))

   {

     pboot->FAT32.marker[5]='\0';

     marker=atoi(pboot->FAT32.marker+3);

   }

 printf("FAT%d\n",marker);getch();

 char* proot=(char *)malloc(pboot->sec_size*sizeof(char)); //выделение розмера

 char* fat1=(char *)malloc(pboot->sec_size*sizeof(char));

 int ss,num,fat_sec=1;

 pfat1=fat1;

 if (marker==16)

   { printf("SizeFAT=%u\n",pboot->fat_size);

     absread(drive,1,1,pfat1);

   }

 else if(marker==32)

   { printf("SizeFAT=%u\n",pboot->FAT32.fat_size);

     printf("reserv=%u",pboot->rsv_sec);

     getch();

     absreadinfat(pboot->rsv_sec);

   }

 else

  {printf("ERROR FAT!!! ");

    exit(0);

  }

   getch();

   if(marker==16)

   {

   for(sinfat=1; sinfat<=pboot->fat_size;sinfat++ )

   {

     fat_line16();

     fat_sec++;

     absread(drive,1,fat_sec,pfat1);

   if(ft==0)

   { break;}

   }

  }

  else if(marker==32)

   {fat_sec=pboot->rsv_sec;

  for(sinfat=1; sinfat<=pboot->FAT32.fat_size;sinfat++ )

   { fat_line32();

     fat_sec++;

    absreadinfat(fat_sec); //(drive,1,32/*fat_sec*/,pfat1);

   if(ft1==0)

   { break;}

   }

  }

  getch();

 return 0;

}

void absreadinfat(unsigned sector)

{

unsigned H, C, S,A;

int i;

int error_count,result;

/*S=fmod(sector,pboot->trk_secs);

A=sector/pboot->trk_secs;

H=fmod(A,pboot->head_cnt+1)+1;

C=A/(pboot->head_cnt+1);

printf("H=%u C=%u S=%u\n",H,C,S);

 */

 S=0;H=1;C=0;

 for(i=0;i<sector;i++)

 { S++;

  if(S>pboot->trk_secs)

   { S++;

   H++;

   if(H>pboot->head_cnt)

   {H=0;

    C++;

   }

  }

 }

 //printf("H=%u C=%u S=%u\n",H,C,S);

    while(error_count < 3)

 {result = biosdisk(CMD_READ, drive, H,C,S, NSECT,pfat1);

 if (!result) break;

 error_count++;

 biosdisk(CMD_RESET, drive, H, C, S,NSECT,pfat1);

 }

}

void fat_line16()

 { int x,j,noclst;

 ft=0;

   for(noclst=0; noclst< 256 ;noclst++)

   {x=2*noclst;// off in FAt

    ft=peek(FP_SEG(pfat1+x),FP_OFF(pfat1+x));

    if((ft!=0xfff7)&&(ft!=0))

    printf(" %04X=%04X",noclst+256*(sinfat-1),ft);

    if(noclst==255)

  { printf("\n**************\n");

    getch();}

  }

 }

void fat_line32()

 { unsigned long  x,j,noclst;//0xFFFFFFF7

 ft1=0;

   for(noclst=0; noclst< 128 ;noclst++)

   {x=4*noclst;// off in FAt

    ft1=peek(FP_SEG(pfat1+x),FP_OFF(pfat1+x));

    if((ft1!=0xFFFFFFF7)&&(ft1!=0))

    printf(" %04X=%04X",noclst+128*(sinfat-1),ft1);

    if(noclst==127)

  { printf("\n**************\n");

    getch();}

  }

 }




1. Техноткани С 09 июня 1997 г
2.  Государство как социальнополитическая организация общества
3.  КОНЦЕПЦИЯ УПРАВЛЕНИЯ ПЕРСОНАЛОМ ОРГАНИЗАЦИИ В УСЛОВИЯХ РЫНОЧНЫХ ОТНОШЕНИЙ
4. Учение Вернадского о Биосфере
5. ТЕМА- АСЕПТИКА Асептика мероприятиянаправленные на предупреждени
6. Сочинский государственный университет в лице ректора Романовой Г
7. I ИСТОРИЧЕСКИЙ ОЧЕРК ИДЕИ ВСЕЕДИНСТВА ДО НАЧАЛА ЕЕ РУССКОЙ ТРАДИЦИИ
8. Тема 14 Ассортимент грибов
9. КОНТРОЛЬНАЯ РАБОТА По дисциплине Анализ финансовой отчетности Студент- Гуськова Ната
10. новить деталь