16.3. Анализ ресурсов дисков

We use cookies. Read the Privacy and Cookie Policy

Модуль DOS включает в себя две функции для анализа дисков:

DiskFree( D : Word ) : LongInt

- 355 -

и

DiskSize( D : Word ) : LongInt

Обе функции возвращают длинное целое число — размер свободного пространства на диске и общую вместимость диска в байтах соответственно.

Параметром является целая переменная или целое число, указывающее на конкретный диск. Если D = 0, то анализируется текущий диск, D = 1 соответствует диску A: , D = 2 — диску B: и т.д.

Если система не может установить соответствие введенного значения параметра D конкретному диску, то функции будут возвращать значение (-1). Эту особенность можно использовать для определения характеристик подключенных к ПЭВМ дисководов (хотя это не самый эффективный способ), как это показано в программе на рис. 16.6.

| { ПРОГРАММА АНАЛИЗА ЖЕСТКИХ И ВИРТУАЛЬНЫХ ДИСКОВ }

| USES DOS;

| VAR i : Byte; disk : LongInt; { объем дисков }

| ch : Char; { буква диска }

| BEGIN

| { Анализ ячейки системной памяти ПЭВМ: }

| i := ( Mem[0:$411] shr 6 ) + 1;

| WriteLn( #10'Дисководов для гибких дисков:', i );

| i:= 3; ch:= 'С'; disk:= DiskSize(i); { начало анализа }

| if disk>0 then WriteLn('Жесткие и виртуальные диски:');

| while disk > -1 do begin

| WriteLn( 'Диск '+ch+': -> ОБЪЕМ=', disk:8,

| ' Байт; СВОБОДНО ', DiskFree( i ),' Байт' );

| Inc( i ); ch := Succ( ch ); { следующий диск }

| disk := DiskSize( i ) end; {while}

| END.

Рис. 16.6

Первая строка тела процедуры проверяет количество накопителей на гибких дисках (для применения к ним процедур DiskSize и DiskFree надо быть уверенным, что в дисководы вставлены дискеты и шторки на них задвинуты). Далее цикл While анализирует жесткие и виртуальные диски. Цикл продолжается до первого отсутствующего диска. При этом мы считаем, что первый жесткий диск имеет обозначение C: .

- 356 -

Для того чтобы получить значения размеров в килобайтах, достаточно поделить получаемые цифры на 1024, например:

disk := DiskSize( i ) div 1024

Полученное число будет ближайшим меньшим целым числом K.

Проверка самого факта существования в ПЭВМ дисковода может производиться непосредственным вызовом функции MS-DOS. Пример этого будет рассмотрен в разд. 16.5.3 «Процедура MsDos».