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 | Сбой сетевого адаптера или другого сетевого аппаратного обеспечения |