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


Программа BOOTVIEW


Приведем исходный текст программы BOOTVIEW (листинг 2.2), показывающей содержимое загрузочной записи для указанного логического диска.

Для работы с загрузочной записью мы подготовили структуры EBPB и BOOT, описывающие расширенный блок параметров и загрузочную запись, соответственно.

Поле серийного номера диска разбито на две компоненты - volser_lo и volser_hi. Это сделано для облегчения представления серийного номера в том виде, который используется командой DIR операционной системы MS-DOS.

Листинг 2.2. Файл bootview\ bootview.cpp

#include <stdio.h> #include <dos.h> #include <conio.h> #include <ctype.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;

int getboot(BOOT far *boot, int drive);

int main(void) { char boot[512]; BOOT far* boot_rec = (BOOT far*)boot; int i, status; char drive;

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

// Запрашиваем диск, для которого необходимо // выполнить чтение загрузочной записи printf( "\nВведите обозначение диска, для просмотра" "\nзагрузочной записи (A, B, ...):"); drive = getche();

// Вычисляем номер дисковода drive = toupper(drive) - 'A';

// Читаем загрузочную запись в буфер status = getboot((BOOT far*)boot_rec, drive);

// Если произошла ошибка (например, неправильно // указано обозначение диска), // завершаем работу программы if(status) { printf("\nОшибка при чтении загрузочного сектора"); return(-1); }

printf("\nСодержимое загрузочного " "сектора для диска %c", drive + 'A'); printf("\n" "\nOEM - название фирмы и версия DOS - ");




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



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