Локальные сети персональных компьютеров. Работа с сервером Novell NetWare



                  

  

WORD TotalBlocks, SectorsPerBlock, AvailableBlocks; WORD



Листинг 7

Программа для просмотра имен // томов текущего или первичного файл-сервера // Файл volinfo\volinfo.cpp // // (C) A. Frolov, 1993 // =================================================== #include <stdlib.h>
#include <stdio.h>
#define WORD unsigned int #define BYTE unsigned char extern "C" int GetNetWareShellVersion(char *,char *, char *);
extern "C" int GetVolumeName(int, char*);
extern "C" int GetVolumeInfoWithNumber(BYTE, char*, WORD*, WORD*, WORD*, WORD*, WORD*, WORD*);
void main(void) { char MajorVersion=0; char MinorVersion=0; char Revision=0; char VolumeName[64][16]; int ccode, i; WORD TotalBlocks, SectorsPerBlock, AvailableBlocks; WORD TotalDirectorySlots, AvailableDirectorySlots, Removable; long TotalSectors, AvailableSectors; printf("\n*VOLINFO* (C) Frolov A., 1993\n");
asm push si GetNetWareShellVersion(&MajorVersion, &MinorVersion, &Revision);
asm pop si if(MajorVersion == 0) { printf("\nОболочка NetWare не загружена\n");
return; } printf("\nСмонтированные тома:\n" "----------------------------------------------\n");
printf("Имя тома\tВсего Кбайт\tСвободно Кбайт\n");
printf("----------------------------------------------");
// Цикл по томам файл-сервера. for(i=0; i<64; i++) { // Получаем и выводим имя тома ccode = GetVolumeName(i, VolumeName[i]);
printf("\n%s\t", VolumeName[i]);
// Если ошибка или тома нет, выходим из цикла if(ccode) break; if(!*(VolumeName[i])) break; // Получаем информацию о томе ccode = GetVolumeInfoWithNumber(i, VolumeName[i], &TotalBlocks, &SectorsPerBlock, &AvailableBlocks, &TotalDirectorySlots,&AvailableDirectorySlots, &Removable);
if(!ccode) { // Подсчитываем общее количество секторов на томе // и количество свободных секторов TotalSectors = (long)TotalBlocks * SectorsPerBlock; AvailableSectors = (long)AvailableBlocks * SectorsPerBlock; // Выводим размер томов и размер свободного пространства // в килобайтах. Учитываем, что размер сектора // составляет 512 байт. printf("\t%ld\t\t%ld", ((long)TotalSectors * 512L) / 1024L, ((long)AvailableSectors * 512L) / 1024L);
} } } Вот что программа VOLINFO вывела на экран, когда мы запустили ее на нашем сервере SYSPRG: *VOLINFO* (C) Frolov A., 1993 Смонтированные тома: ---------------------------------------------- Имя тома Всего Кбайт Свободно Кбайт ---------------------------------------------- SYS 140000 8084 VOL1 178864 13768 VOL2 160000 13372 VOL3 169024 924

Содержание  Назад  Вперед