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


Программа BSCAN


Приведем исходный текст программы BSCAN (листинг 27), которая просматривает базу данных объектов. Для каждого найденного объекта программа выводит имя и расшифрованный тип объекта, флаг и уровень доступа. Если объект имеет дополнительные записи (properties), вызывается функция, которая выводит имена найденных записей.

// =================================================== // Листинг 27. Программа для просмотра содержимого // базы данных объектов // Файл bscan\bscan.cpp // // (C) A. Frolov, 1993 // ===================================================

#include <stdlib.h> #include <stdio.h> #include <string.h>

#define WORD unsigned int #define BYTE unsigned char

extern "C" int GetNetWareShellVersion(char *,char *, char *); extern "C" int ScanBinderyObject(char *, WORD, long *, char *, WORD *, char *, char *, char *); extern "C" int ScanProperty(char *, WORD, char *, long *, char *, char *, char *, char *, char *);

void Property(char *ObjectName, WORD ObjectType);

void main(void) {

char MajorVersion=0; char MinorVersion=0; char Revision=0; int ccode;

BYTE ObjectSecurity; long ObjectID; char SearchObjectName[48]; char ObjectName[48]; WORD SearchObjectType; WORD ObjectType; char ObjectHasProperties; char ObjectFlag;

printf("\n*BSCAN* (C) Frolov A., 1993\n");

// Проверяем присутствие сетевой оболочки

asm push si GetNetWareShellVersion(&MajorVersion, &MinorVersion, &Revision); asm pop si

if(MajorVersion == 0) { printf("\nОболочка NetWare не загружена\n"); return; }

// Просматриваем в цикле содержимое базы объектов, // ищем объекты всех типов

SearchObjectType = -1;

// Маска для поиска всех объектов

strcpy(SearchObjectName, "*");

for(ObjectID = -1;;) {

// Получаем очередной объект

ccode = ScanBinderyObject(SearchObjectName, SearchObjectType, &ObjectID, ObjectName, &ObjectType, &ObjectHasProperties, &ObjectFlag, &ObjectSecurity);

// Если больше нет объектов или произошла ошибка, завершаем цикл




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