MS-DOS для программиста


Программа FATSCAN


Программа FATSCAN (листинг 2.4) предназначена для исследования подкаталогов корневого каталога НМД, а также для демонстрации основных приемов работы с таблицей размещения файлов FAT . Вы можете использовать ее для исследования структуры каталогов диска.

Листинг 2.4. Файл rootview\ rootview.cpp

// // Для этой программы требуется модель // памяти Large // #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <malloc.h> #include <dos.h> #include <bios.h> #include <ctype.h> #include <string.h>

typedef struct _EBPB_ { unsigned sectsize; char clustsize; unsigned ressecs; char fatcnt; unsigned rootsize; unsigned totsecs; char media; unsigned fatsize; unsigned seccnt; unsigned headcnt; unsigned hiddensec_low; unsigned hiddensec_hi; unsigned long drvsecs; } EBPB;

typedef struct _BOOT_ { char jmp[3]; char oem[8]; EBPB bpb; char drive; char reserved; char signature; unsigned volser_lo; unsigned volser_hi; char label[11]; char fat_format[8]; char boot_code[450]; } BOOT;

typedef struct _FTIME_ { unsigned sec : 5, min : 6, hour : 5; } FTIME; typedef struct _FDATE_ { unsigned day : 5, month : 4, year : 7; } FDATE; typedef struct _FITEM_ { char name[8]; char ext[3]; char attr; char reserved[10]; FTIME time; FDATE date; unsigned cluster_nu; unsigned long size; } FITEM;

int getboot(BOOT far *boot, int drive); int fat(char far *b_fat, int t_fat, unsigned idx);

union REGS reg; struct SREGS segreg;

struct { unsigned long first_sect; unsigned nsect; void far* buf; } cb;

int main(void) { BOOT *boot_rec; int i,j, k, status, fat_sectors; unsigned total_sectors; int ffat, root_begin, root_sectors; char drive; unsigned far *fat_buffer; FITEM far *root_buffer, far *rptr; char cbuf[128]; char far *clust_buffer; unsigned cur_clust;

printf("\n\nЧтение каталогов логического диска" "\n (C)Фролов А., 1995\n");

// Заказываем буфер для чтения загрузочной записи boot_rec = (BOOT*)malloc(sizeof(BOOT)); if(boot_rec == NULL) { printf("\nМало памяти"); return -1; }




Начало  Назад  Вперед



Книжный магазин