SPXTerminateConnection
На входе: | BX | = | 13h. |
ES:SI | = | Указатель на блок ECB. | |
DX | = | Номер канала связи. | |
На выходе: | Регистры не используются. |
Функция посылает удаленному партнеру пакет, который состоит из одного заголовка. В поле DataStreamType этого заголовка находится значение FEh, которое говорит партнеру о том, что необходимо закрыть канал. Сразу после вызова функция возвращает управление вызывавшей ее программе.
Перед вызовом функции программа должна заполнить поле ESRAddress, счетчик фрагментов (в пакете должен быть один фрагмент размером 42 байта) и дескриптор фрагмента блока ECB.
В регистр DX необходимо загрузить номер канала, используемый партнером.
После завершения процесса закрытия канала в поле InUse блока ECB проставляется нулевое значение и вызывается программа ESR (если она была задана). В поле CCode проставляется код завершения:
00h | канал был успешно закрыт; |
FDh | сбойный пакет: либо счетчик фрагментов не равен единице, либо размер фрагмента меньше 42 байт; |
EEh | неправильное значение в регистре DX; |
EDh | канал закрылся с ошибкой, при этом удаленный партнер не прислал пакет, подтверждающий закрытие канала. При этом SPX не гарантирует, что партнер успешно закрыл канал со своей стороны; |
ECh | удаленный партнер закрыл канал без подтверждения команды закрытия канала, при этом SPX не может гарантировать, что партнер вызвал функцию, закрывающую канал. |
После закрытия канала освобождается место в таблице номеров каналов. Программа может открывать новые каналы.
Заметим, что для отмены ожидания завершения процесса закрытия канала необходимо использовать функцию SPXAbortConnection, а не IPXCancelEvent.