Отмена отображения локального диска на
Листинг 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]);
}
Содержание Назад Вперед