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

Передача сообщений пользователям


Для передачи сообщения другим пользователям предназначена функция SendBroadcastMessage(): int SendBroadcastMessage(char *Message, WORD *ConnectionList, BYTE *ResultList, WORD ConnectionCount);
Параметр Message задает адрес текстовой строки, содержащей сообщение. Размер этой строки не должен превышать 56 байт (включая двоичный ноль, закрывающий строку).
Параметр ConnectionList - указатель на массив слов, содержащий номера каналов, используемых файл-сервером для связи с рабочими станциями. Размер этого массива определяется параметром ConnectionCount.
Параметр ResultList - массив байт, в котором для каждой станции отражается результат посылки сообщения:
0x00Сообщение передано успешно
0xFCСообщение не передано, так как буфер сообщения для данной станции уже содержит сообщение, которое еще не было принято станцией
0xFDСоответствующий номер канала задан неправильно
0xFFСтанция заблокировала прием сообщения, установив соответствующий режим приема сообщений. Этот код ошибки может появиться и в том случае, если заданный номер канала не используется

Функция возвращает 0 при успешном завершении или код ошибки:


Код ошибкиЗначение
0xFEОшибка ввода/вывода или нехватка памяти на сервере

Вместо функции SendBroadcastMessage() можно использовать функцию E1h прерывания INT21h:
На входе:AH= E1h;
DS:SI= Адрес буфера запроса;
ES:DI= Адрес буфера ответа.
На выходе:AL= Код ошибки или 0, если операция завершилась без ошибок.

Буфер запроса: struct REQUEST { WORD PacketLength; // размер пакета запроса BYTE Function; // должно быть равно 0 BYTE ConnectionCount; // количество станций BYTE ConnectionList[ConnectionCount];// список станций BYTE MessageLength; // длина сообщения BYTE Message[MessageLength]; // сообщение };
Буфер ответа: struct REPLAY { WORD PacketLength; // размер пакета BYTE ConnectionCount; // количество станций BYTE ResultList[ConnectionCount];// результат };

Содержание раздела