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

Для иллюстрации способов использования функций


Для иллюстрации способов использования функций _dos_getdrive , _dos_setdrive и _dos_getdiskfree мы составили программу DISKINF2 (листинг 3.1).

Листинг 3.1. Файл diskinf2\diskinf2.cpp

#include <dos.h> #include <bios.h> #include <conio.h> #include <stdio.h>

void main(void) { struct diskfree_t dinfo; unsigned drive, drivecount;

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

// Определяем номер текущего диска _dos_getdrive (&drive);

// Выводим на экран обозначение текущего диска printf("\nТекущий диск: %c:\n", 'A' + drive - 1);

// Вызываем функцию установки текущего диска. // Мы не изменяем текущий диск, вызов этой функции // нужен нам для определения количества установленных // в системе логических дисков _dos_setdrive (drive, &drivecount);

// Получаем характеристики текущего диска _dos_getdiskfree (drive, &dinfo);

printf("\nОбщее количество кластеров на диске: %u" "\nКоличество свободных кластеров: %u" "\nКоличество секторов в кластере: %u" "\nКоличество байт в секторе: %u" "\nРазмер свободного пространства в байтах: %ld" "\n", dinfo.total_clusters, dinfo.avail_clusters, dinfo.sectors_per_cluster, dinfo.bytes_per_sector, (long)dinfo.avail_clusters * dinfo.sectors_per_cluster * dinfo.bytes_per_sector );

printf("\nКоличество логических дисков: %d" "\n", drivecount); }


Содержание раздела