Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
magnum / all.doc
Скачиваний:
30
Добавлен:
16.04.2013
Размер:
912.9 Кб
Скачать

1.3.1.1.2.Чтение из почтового слота.

Для чтения из слота используется функция ReadFile(), которая завершает свою работу после получения сообщения, независимо от того, сколько байт необходимо прочитать.

Кроме того, с помощью функции GetMailSlotInfo() можно узнать количество сообщений, ожидающих в очереди слота, и размер следующего сообщения.

          1. Запись в почтовый слот.

Для записи сообщения в слот необходимо сначала открыть его ключ с помощью функции CreateFile(), а затем воспользоваться функциейWriteFile() для посылки сообщения. Ключ слота закрывается функцией CloseHandle().

При вызове CreateFile() необходимо указать имя слота, которому посылается сообщение. Указанное имя допускает циркулярную рассылку данных всем слотам с такими же именами на компьютерах домена.

Для локального компьютера имя слота выглядит следующим образом:

\\.\mailslot\[путь] имя

Для удалённого компьютера имя слота имеет следующий вид:

\\имя_удалённого_компьютера\mailslot\[путь] имя

Для рассылки сообщений всем слотам с одинаковыми именами на компьютерах домена необходимо указать следующее имя:

\\имя_домена\mailslot\[путь]имя

Для рассылки всем компьютерам в домене более высокого иерархического уровня используется следующее имя:

\\*\mailslot\[путь] имя

Кроме того, при вызове функции CreateFile() можно выбрать режимGENERIC_WRITE, режим совместного использованияFILE_SHARE_READ или режим созданияOPEN_EXISTING.

После успешного завершения функции CreateFile() ключ, который она возвращает, можно использовать в функцииWriteFile() для посылки сообщений на слот.

          1. Закрытие слота.

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

1.3.1.2. Протокол NetBios и его команды.

При написании программы с использованием протокола NetBIOS используется блок управления сетью – Net Control Block (NCB). В таблице 1 проиллюстрирована структураNCB, длина и значение каждого поля. Все поля блока NCB перенесены вWinAPI, соответственно, программирование наDelphi с использованием командNetBIOS является достаточно тривиальной задачей.

1.3.1.2.1. Структура ncb.

Имя поля Длина и значение

NCB_COMMAND 1 Поле команды Блока управления сетью (NCB)

NCB_RETCODE 1 Поле кода возврата NCB

NCB_LSN 1 Поле номера локального сеанса NCB

NCB_NUM 1 Поле номера имени NCB

NCB_BUFFER@ 4 Указатель NCB на адрес буфера сообщений

NCB_LENGTH 2 Длина буфера NCB (в байтах)

NCB_CALLNAME 16 Имя NCB на местном или удаленном адаптере

NCB_NAME 16 Имя NCB на местном адаптере

NCB_RTO 1 Величина тайм-аута получения сообщения

NCB_STO 1 Величина тайм-аута отправления сообщения

NCB_POST@ 4 Указатель NCB на подпрограмму регистрации

NCB_LANA_NUM 1 Номер адаптера NCB

NCB_CMD_CPLT 1 Поле состояния команды NCB

NCB_RESERVE 14 Зарезервированная область NCB

Таблица 1. Стуктура блока управления сетью по протоколу NetBIOS.

Соседние файлы в папке magnum