Использование протоколов IPX, SPX, NETBIOS

       

NB_WSessionStatus (0x34)


Команда возвращает программе состояние канала, имя которого указано в поле OurName блока NCB. В качестве имени можно указать символ "*", в этом случае программа получит информацию о каналах, относящихся ко всем именам станций, имеющихся в локальной таблице имен на вызывающей команду станции.

Информация о состоянии каналов возвращается в буфер, адрес которого программа должна записать в поле Buffer блока NCB. Размер буфера должен быть указан в поле Size блока NCB.

Формат буфера можно описать следующей структурой:

struct _SESSION_STATUS { unsigned char NameNumber; unsigned char SessionCount; unsigned char DatagramsOutstanding; unsigned char ReceiveAnyoutstanding; struct _SESSION { unsigned char LocalSessionNumber; unsigned char State; char LocalName[16]; char RemoteName[16]; unsigned char ReceiveCount; unsigned char SendCount; } Session[40]; };

Приведем список полей буфера:

Название поля Назначение поля
NameNumberНомер имени канала
SessionCountКоличество каналов
DatagramsOutstandingКоличество выданных команд на прием датаграмм
ReceiveAnyoutstandingКоличество выданных команд на прием командой NB_ReceiveAny
SessionМассив структур, описывающих каждый канал в отдельности
LocalSessionNumberНомер канала
StateСостояние канала:



1 - ожидание завершения команды NB_Listen;

2 - ожидание завершения команды NB_Call;

3 - канал установлен;

4 - ожидание завершения команды NB_HangUp;

5 - команда NB_HangUp завершила свое вы- полнение;

6 - канал закрыт с ошибкой.

LocalNameИмя локальной станции
RemoteNameИмя удаленной станции
ReceiveCountКоличество ожидающих завершение команд NB_Receive
SendCountКоличество ожидающих завершения команд NB_Send

Поля NCB на входе

Содержимое
Cmd0x34
BufferДальний адрес буфера для приема информации

о состоянии каналов

SizeРазмер буфера
OurNamesИмя канала, для которого необходимо получить информацию о состоянии. В качестве имени можно указывать "*"
PostRoutineДальний указатель на POST-программу или нулевое значение, если POST-программа не используется
AdapterNumberНомер адаптера; 0 - первый адаптер, 1 - второй
<
/p>
Поля NCB на выходе

Содержимое
SizeРазмер заполненной части буфера
CCodeПромежуточный код завершения команды
FinalCCodeОкончательный код завершения команды
Содержимое поля CCode

на выходе

Значение
0x00Нет ошибок
0x03Неправильный код команды
0x15Неправильное имя
0x21Интерфейс занят
0x22Выдано слишком много команд
0x23Неправильное значение в поле номера адаптера AdapterNumber
0x40 - 0x4FНеобычное состояние сети (Unusual network condition)
0x50 - 0xFEСбой сетевого адаптера или другого сетевого аппаратного обеспечения
Содержимое поля

FinalCCode на выходе
Значение
0x00Нет ошибок
0x01Неправильная длина буфера
0x03Неправильный код команды
0x06Слишком мал размер выделенного буфера
0x19Конфликт имен (внутренняя ошибка NETBIOS)
0x21Интерфейс занят
0x22Выдано слишком много команд
0x23Неправильное значение в поле номера адаптера AdapterNumber
0x40 - 0x4FНеобычное состояние сети (Unusual network condition)
0x50 - 0xFEСбой сетевого адаптера или другого сетевого аппаратного обеспечения

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