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



                  

  

long OwnerObjectID; BYTE RightsMask; int



Листинг 11

Просмотр списка подкаталогов // сетевого каталога // Файл dirscan\dirscan.cpp // // (C) A. Frolov, 1993 // =================================================== #include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#define BYTE unsigned char #define WORD unsigned int extern "C" int GetNetWareShellVersion(char *,char *, char *);
extern "C" int ScanDirectoryInformation(BYTE, char *, int *, char *, BYTE *, long *, BYTE *);
extern "C" int GetBinderyObjectName(long, char *, WORD *);
void main(int argc, char *argv[]) { char MajorVersion=0; char MinorVersion=0; char Revision=0; int SequenceNumber; char DirectoryName[16]; BYTE CreationDataAndTime[4]; long OwnerObjectID; BYTE RightsMask; int ccode; char ObjectName[48]; WORD ObjectType; printf("\n*DIRSCAN* (C) Frolov A., 1993\n");
// Проверяем наличие сетевой оболочки asm push si GetNetWareShellVersion(&MajorVersion, &MinorVersion, &Revision);
asm pop si if(MajorVersion == 0) { printf("\nОболочка NetWare не загружена\n");
return; } // В качестве аргумента необходимо задать // путь к просматриваемому каталогу в виде SYS:USERS\* if(argc < 2) { printf("Укажите путь к каталогу, " "например: dirscan sys:users\\*\n");
return; } printf("Содержимое каталога %s\n", argv[1]);
printf("--------------------------------------------\n");
printf("Имя \tКто владелец каталога\n");
printf("--------------------------------------------\n");
// Путь должен быть задан заглавными буквами strupr(argv[1]);
// Цикл просмотра каталога for(SequenceNumber = 0;;) { // Получаем информацию о содержимом каталога ccode = ScanDirectoryInformation(0, argv[1], &SequenceNumber, DirectoryName, CreationDataAndTime, &OwnerObjectID, &RightsMask);
// Если были ошибки или каталог пуст, завершаем цикл if(ccode) break; if(DirectoryName[0] == '\0') break; // Выводим имя каталога printf("%-12s", DirectoryName);
// Если для каталога определен владелец, // получаем и выводим имя владельца if(OwnerObjectID) { GetBinderyObjectName(OwnerObjectID, ObjectName, &ObjectType);
printf("\t%-12s \n", ObjectName);
} else printf("\t <Нет сведений о владельце>
\n");
} }

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