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


Программа CLUSTLST


Приведем исходный текст программы CLUSTLST (листинг 5.6). Эта программа выводит на экран содержимое таблицы файлов и список кластеров для файла, полный путь которого передается программе в качестве параметра.

Листинг 5.6. Файл clustlst\clustlst.cpp

#include <dos.h> #include <bios.h> #include <alloc.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <fcntl.h> #include <io.h> #include <ctype.h>

typedef struct _DFCB_ { unsigned handl_num; unsigned char access_mode; unsigned reserv1; unsigned dev_info; void far *driver; unsigned first_clu; unsigned time; unsigned date; unsigned long fl_size; unsigned long offset; unsigned reserv2; unsigned reserv7; unsigned reserv3; char reserv4; char filename[11]; char reserv5[6]; unsigned ownr_psp; unsigned reserv6; unsigned last_clu; char reserv8[4]; } DFCB; typedef DFCB far* LPDFCB;

typedef struct _DFT_ { struct _DFT_ far *next; unsigned file_count; DFCB dfcb; } SFT; typedef SFT far* LPSFT;

typedef struct { unsigned mcb_seg; void far *dev_cb; void far *file_tab; void far *clock_dr; void far *con_dr; unsigned max_btbl; void far *disk_buf; void far *drv_info; void far *fcb_tabl; unsigned fcb_size; unsigned char num_bdev; unsigned char lastdriv; } CVT; typedef CVT far* LPCVT;

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;

LPSFT get_fsft(LPCVT cvt); LPSFT get_nsft(LPSFT sft); void show(DFCB far *); int getboot(BOOT far *boot, int drive);

union REGS regs; struct SREGS sregs;

int main(int argc, char *argv[]) { CVT far *cvt; SFT far *sft; unsigned i,j,k; DFCB far *dfcb, far *file_dfcb; int handle, flag, disk;




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