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


Отображение дисков рабочей станции - часть 3


ниже), мы указали полный путь к отображаемому каталогу при помощи параметра DirectoryPath, а для параметра DirectoryHandle мы задали нулевое значение.

Параметр DriveLetter задает отображаемый диск. Если этот диск до вызова функции AllocPermanentDirectoryHandle() отображался на другой сетевой каталог или был локальным диском рабочей станции, это никак не скажется на успехе или результате отображения.

Параметр NewDirectoryHandle - указатель на переменную, в которую будет записан индекс, связанный с отображаемым каталогом. Вы можете использовать этот индекс для ссылки на каталог вместо полного имени каталога. Он будет нужен также для отмены отображения диска.

Параметр EffectiveRightsMask - указатель на байт памяти, в который будет записана маска прав доступа пользователя в данном каталоге. Назначение отдельных битов этой маски мы рассмотрим ниже в разделе "Таблица каталогов файл-сервера".

Отображение диска сохраняется до тех пор, пока оно не будет отменено функцией DeallocateDirectoryHandle():

int DeallocateDirectoryHandle(BYTE DirectoryHandle);

Эта функция отменяет отображение диска на каталог, имеющий индекс DirectoryHandle.

Для того чтобы отменить отображение диска, пользуясь его буквенным обозначением, можно воспользоваться функцией GetDirectoryHandle(), возвращающей индекс каталога для диска, заданного своим номером (0 - A, 1 - B и т. д.):

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

Для отображения локального диска на сетевой каталог вместо функции AllocPermanentDirectoryHandle() можно воспользоваться функцией E2h прерывания INT 21h:

На входе: AH = E2h;
DS:SI = Адрес буфера запроса;
ES:DI = Адрес буфера ответа.
На выходе: AL = Код ошибки или 0, если операция завершилась без ошибок.

Буфер запроса имеет следующий формат:

struct REQUEST { WORD PacketLength; // размер пакета запроса BYTE Function; // должно быть равно 18 BYTE DirectoryHandle; // индекс каталога BYTE DriveLetter; // отображаемый диск BYTE PathLength; // длина пути к каталогу BYTE DirectoryPath[PathLength]; // путь к каталогу };




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



Книжный магазин