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