3.2. Отображение дисков рабочей станции

3.2.1. Программа WKSTABLE

3.2.2. Программа DIRMAP

3.2.3. Программа DIRUNMAP

Программа DIRUNMAP (листинг 10) выполняет отмену отображения локального
диска на сетевой каталог. Ей необходимо указать один параметр
— букву, обозначающую диск, для которого необходимо отменить отображение.

// ===================================================
// Листинг 10. Отмена отображения локального диска на
// сетевой каталог
// Файл dirunmap\dirunmap.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" BYTE GetDirectoryHandle(BYTE);
extern "C" int DeallocateDirectoryHandle(BYTE);

void main(int argc, char *argv[]) {

        char MajorVersion=0;
        char MinorVersion=0;
        char Revision=0;

        BYTE DirectoryHandle;

        int ccode;

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

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

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

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

// Необходимо задать букву, обозначающую имя
// локального диска и путь к сетевому каталогу

        if(argc < 2) {
                printf(
                        "Укажите локальный диск, например: dirunmap f\n");
                return;
        }
// Параметр должен быть задан заглавной буквой

        strupr(argv[1]);

// Получаем индекс каталога, на который отображен указанный диск

        DirectoryHandle = GetDirectoryHandle(argv[1][0] - 'A');

// Если диск не отображен на сетевой каталог,
// выводим сообщение об ошибке

        if(DirectoryHandle)
                printf("Индекс каталога: %d\n", DirectoryHandle);
        else {
                printf("Диск не отображен на сетевой каталог\n");
                return;
        }

// Отменяем отображение диска

        ccode = DeallocateDirectoryHandle(DirectoryHandle);

// Если ошибок не было, выводим индекс каталога
// и маску прав для каталога

        if(ccode)
                printf("Ошибка %02.2X\n", ccode);
        else
                printf("Диск %c удален\n", argv[1][0]);
}



При использовании материалов сайта ссылка обязательна! (Copyright by www.avs-info.ru 2006)