7. Приложение 3. Функции NETBIOS

7.1. Работа с именами

NB_WAddName (0x30) - добавить имя

Поля NCB на входе Содержимое
Cmd 0x30
OurName Добавляемое имя
PostRoutine Дальний указатель на POST-программу или нулевое значение, если POST-программа не используется
AdapterNumber Номер адаптера; 0 - первый адаптер, 1 - второй
Поля NCB на выходе Содержимое
NetworkNameNumber Присвоенный номер имени
CCode Промежуточный код завершения команды
FinalCCode Окончательный код завершения команды

NB_AddName (0xB0)

Команда аналогична предыдущей, за исключением того, что она выполняется без ожидания и в поле Cmd необходимо записать значение 0xB0.

NB_WAddGroupName (0x36) - добавить групповое имя

Поля NCB на входе Содержимое
Cmd 0x36
OurName Добавляемое групповое имя
PostRoutine Дальний указатель на POST-программу или нулевое значение, если POST-программа не используется
AdapterNumber Номер адаптера; 0 - первый адаптер, 1 - второй
Поля NCB на выходе Содержимое
NetworkNameNumber Присвоенный номер имени
CCode Промежуточный код завершения команды
FinalCCode Окончательный код завершения команды

NB_AddGroupName (0xB6)

Команда аналогична предыдущей, за исключением того, что она выполняется без ожидания и в поле Cmd необходимо записать значение 0xB6.

NB_WDeleteName (0x31) - удалить имя

Поля NCB на входе Содержимое
Cmd 0x31
OurName Удаляемое имя
PostRoutine Дальний указатель на POST-программу или нулевое значение, если POST-программа не используется
AdapterNumber Номер адаптера; 0 - первый адаптер, 1 - второй
Поля NCB на выходе Содержимое
CCode Промежуточный код завершения команды
FinalCCode Окончательный код завершения команды

NB_DeleteName (0xB1)

Команда аналогична предыдущей, за исключением того, что она выполняется без ожидания и в поле Cmd необходимо записать значение 0xB1.

7.2. Прием и передача датаграмм

NB_WSendDatagram (0x20) - послать датаграмму

Поля NCB на входе Содержимое
Cmd 0x20
NetworkNameNumber Номер, присвоенный при добавлении имени
CallName Имя станции, которой передаются данные
Buffer Адрес буфера, содержащего передаваемые данные
Size Размер буфера
PostRoutine Дальний указатель на POST-программу или нулевое значение, если POST-программа не используется
AdapterNumber Номер адаптера; 0 - первый адаптер, 1 - второй
Поля NCB на выходе Содержимое
CCode Промежуточный код завершения команды
FinalCCode Окончательный код завершения команды

NB_SendDatagram (0xA0)

Команда аналогична предыдущей, за исключением того, что она выполняется без ожидания и в поле Cmd необходимо записать значение 0xA0.

NB_WSendBroadcastDatagram (0x22) - послать датаграмму одновременно всем станциям

Поля NCB на входе Содержимое
Cmd 0x22
NetworkNameNumber Номер, присвоенный при добавлении имени
Buffer Адрес буфера, содержащего передаваемые данные
Size Размер буфера
PostRoutine Дальний указатель на POST-программу или нулевое значение, если POST-программа не используется
AdapterNumber Номер адаптера; 0 - первый адаптер, 1 - второй
Поля NCB на выходе Содержимое
CCode Промежуточный код завершения команды
FinalCCode Окончательный код завершения команды

NB_SendBroadcastDatagram (0xA2)

Команда аналогична предыдущей, за исключением того, что она выполняется без ожидания и в поле Cmd необходимо записать значение 0xA2.

NB_WReceiveDatagram (0x21) - принять датаграмму

Поля NCB на входе Содержимое
Cmd 0x21
NetworkNameNumber Номер, присвоенный при добавлении имени или 0xFF
Buffer Адрес буфера, содержащего передаваемые данные
Size Размер буфера
PostRoutine Дальний указатель на POST-программу или нулевое значение, если POST-программа не используется
AdapterNumber Номер адаптера; 0 - первый адаптер, 1 - второй
Поля NCB на выходе Содержимое
CallName Имя станции, от которой получена датаграмма
Size Размер принятого блока данных
CCode Промежуточный код завершения команды
FinalCCode Окончательный код завершения команды

NB_ReceiveDatagram (0xA1)

Команда аналогична предыдущей, за исключением того, что она выполняется без ожидания и в поле Cmd необходимо записать значение 0xA1.

NB_WReceiveBroadcastDatagram (0x23) - принять датаграмму, посланную одновременно всем станциям в сети

Поля NCB на входе Содержимое
Cmd 0x23
NetworkNameNumber Номер, присвоенный при добавлении имени или 0xFF
Buffer Адрес буфера, содержащего передаваемые данные
Size Размер буфера
PostRoutine Дальний указатель на POST-программу или нулевое значение, если POST-программа не используется
AdapterNumber Номер адаптера; 0 - первый адаптер, 1 - второй
Поля NCB на выходе Содержимое
CallName Имя станции, от которой получена датаграмма
Size Размер принятого блока данных
CCode Промежуточный код завершения команды
FinalCCode Окончательный код завершения команды

NB_ReceiveBroadcastDatagram (0xA3)

Команда аналогична предыдущей, за исключением того, что она выполняется без ожидания и в поле Cmd необходимо записать значение 0xA3.

7.3. Работа с каналами

NB_WCall (0x10) - создать канал с передающей стороны

Поля NCB на входе Содержимое
Cmd 0x10
CallName Имя, с которым устанавливается канал
OurName Имя станции, создающей канал
ReceiveTimeout Время ожидания приема, в 1/2 с
SendTimeout Время ожидания передачи, в 1/2 с
PostRoutine Дальний указатель на POST-программу или нулевое значение, если POST-программа не используется
AdapterNumber Номер адаптера; 0 - первый адаптер, 1 - второй
Поля NCB на выходе Содержимое
LocalSessionNumber Присвоенный номер канала
CCode Промежуточный код завершения команды
FinalCCode Окончательный код завершения команды

NB_Call (0x90)

Команда аналогична предыдущей, за исключением того, что она выполняется без ожидания и в поле Cmd необходимо записать значение 0x90.

NB_WListen (0x11) - создать канал с принимающей стороны

Поля NCB на входе Содержимое
Cmd 0x11
CallName Имя, с которым устанавливается канал. Если в первый байт имени записать символ "*", канал будет установлен с любой вызывающей станцией
OurName Имя станции, создающей канал с принимающей стороны
ReceiveTimeout Время ожидания приема, в 1/2 с
SendTimeout Время ожидания передачи, в 1/2 с
PostRoutine Дальний указатель на POST-программу или нулевое значение, если POST-программа не используется
AdapterNumber Номер адаптера; 0 - первый адаптер, 1 - второй
Поля NCB на выходе Содержимое
LocalSessionNumber Присвоенный номер канала
CallName В это поле записывается имя вызвавшей станции, если при установлении канала было указано имя "*"
CCode Промежуточный код завершения команды
FinalCCode Окончательный код завершения команды

NB_Listen (0x91)

Команда аналогична предыдущей, за исключением того, что она выполняется без ожидания и в поле Cmd необходимо записать значение 0x91.

NB_WHangUp (0x12) - закрыть канал

Поля NCB на входе Содержимое
Cmd 0x12
LocalSessionNumber Номер закрываемого канала
PostRoutine Дальний указатель на POST-программу или нулевое значение, если POST-программа не используется
AdapterNumber Номер адаптера; 0 - первый адаптер, 1 - второй
Поля NCB на выходе Содержимое
CCode Промежуточный код завершения команды
FinalCCode Окончательный код завершения команды

NB_HangUp (0x92)

Команда аналогична предыдущей, за исключением того, что она выполняется без ожидания и в поле Cmd необходимо записать значение 0x92.

NB_WSessionStatus (0x34) - получить состояние канала

Название поля Назначение поля
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 Окончательный код завершения команды

NB_SessionStatus (0xB4)

Команда аналогична предыдущей, за исключением того, что она выполняется без ожидания и в поле Cmd необходимо записать значение 0xB4.

7.4. Прием и передача данных через каналы

NB_WSend (0x14) - передать данные через канал

Поля NCB на входе Содержимое
Cmd 0x14
LocalSessionNumber Номер используемого канала
Buffer Указатель на буфер, содержащий передаваемые данные
Size Размер буфера
PostRoutine Дальний указатель на POST-программу или нулевое значение, если POST-программа не используется
AdapterNumber Номер адаптера; 0 - первый адаптер, 1 - второй
Поля NCB на выходе Содержимое
CCode Промежуточный код завершения команды
FinalCCode Окончательный код завершения команды

NB_Send (0x94)

Команда аналогична предыдущей, за исключением того, что она выполняется без ожидания и в поле Cmd необходимо записать значение 0x94.

NB_WSendNoAck (0x71) - передать данные через канал без подтверждения

Поля NCB на входе Содержимое
Cmd 0x71
LocalSessionNumber Номер используемого канала
Buffer Указатель на буфер, содержащий передаваемые данные
Size Размер буфера
PostRoutine Дальний указатель на POST-программу или нулевое значение, если POST-программа не используется
AdapterNumber Номер адаптера; 0 - первый адаптер, 1 - второй
Поля NCB на выходе Содержимое
CCode Промежуточный код завершения команды
FinalCCode Окончательный код завершения команды

NB_SendNoAck (0xF1)

Команда аналогична предыдущей, за исключением того, что она выполняется без ожидания и в поле Cmd необходимо записать значение 0xF1.

NB_WChainSend (0x17) - передать данные через канал, используя сцепленные буферы

Поля NCB на входе Содержимое
Cmd 0x17
LocalSessionNumber Номер используемого канала
Buffer Указатель на первый буфер, содержащий передаваемые данные
Size Размер первого буфера
CallName Первые два байта содержат размер второго буфера, следующие четыре байта - дальний адрес второго буфера
PostRoutine Дальний указатель на POST-программу или нулевое значение, если POST-программа не используется
AdapterNumber Номер адаптера; 0 - первый адаптер, 1 - второй
Поля NCB на выходе Содержимое
CCode Промежуточный код завершения команды
FinalCCode Окончательный код завершения команды

NB_ChainSend (0x97)

Команда аналогична предыдущей, за исключением того, что она выполняется без ожидания и в поле Cmd необходимо записать значение 0x97.

NB_WChainSendNoAck (0x72) - передать данные через канал, используя сцепленные буферы без подтверждения

Поля NCB на входе Содержимое
Cmd 0x72
LocalSessionNumber Номер используемого канала
Buffer Указатель на первый буфер, содержащий передаваемые данные
Size Размер первого буфера
CallName Первые два байта содержат размер второго буфера, следующие четыре байта - дальний адрес второго буфера
PostRoutine Дальний указатель на POST-программу или нулевое значение, если POST-программа не используется
AdapterNumber Номер адаптера; 0 - первый адаптер, 1 - второй
Поля NCB на выходе Содержимое
CCode Промежуточный код завершения команды
FinalCCode Окончательный код завершения команды

NB_ChainSendNoAck (0xF2)

Команда аналогична предыдущей, за исключением того, что она выполняется без ожидания и в поле Cmd необходимо записать значение 0xF2.

NB_WReceive (0x15) - принять данные через канал

Поля NCB на входе Содержимое
Cmd 0x15
LocalSessionNumber Номер используемого канала
Buffer Указатель на буфер, используемый для записи принятых данных
Size Размер буфера
PostRoutine Дальний указатель на POST-программу или нулевое значение, если POST-программа не используется
AdapterNumber Номер адаптера; 0 - первый адаптер, 1 - второй
Поля NCB на выходе Содержимое
Size Количество принятых и записанных в буфер байт данных
CCode Промежуточный код завершения команды
FinalCCode Окончательный код завершения команды

NB_Receive (0x95)

Команда аналогична предыдущей, за исключением того, что она выполняется без ожидания и в поле Cmd необходимо записать значение 0x95.

NB_WReceiveAny (0x16) - принять данные через канал от любого имени

Поля NCB на входе Содержимое
Cmd 0x16
NetworkNameNumber Номер имени или 0xFF
Buffer Указатель на буфер, используемый для записи принятых данных
Size Размер буфера
PostRoutine Дальний указатель на POST-программу или нулевое значение, если POST-программа не используется
AdapterNumber Номер адаптера; 0 - первый адаптер, 1 - второй
Поля NCB на выходе Содержимое
Size Количество принятых и записанных в буфер байт данных
NetworkNameNumber Номер имени станции, от которой пришли данные
CCode Промежуточный код завершения команды
FinalCCode Окончательный код завершения команды

NB_ReceiveAny (0x96)

Команда аналогична предыдущей, за исключением того, что она выполняется без ожидания и в поле Cmd необходимо записать значение 0x96.

7.5. Другие команды

NB_WResetAdapter (0x32) - сбросить сетевой адаптер

Поля NCB на входе Содержимое
Cmd 0x32
LocalSessionNumber Максимальное количество каналов или 0 для использования значения по умолчанию
NetworkNameNumber Максимальное количество блоков NCB или 0 для использования значения по умолчанию
AdapterNumber Номер адаптера; 0 - первый адаптер, 1 - второй
Поля NCB на выходе Содержимое
FinalCCode Окончательный код завершения команды

NB_WCancel (0x35) - отменить команду

Поля NCB на входе Содержимое
Cmd 0x35
Buffer Указатель на блок NCB, для которого отменяется команда
AdapterNumber Номер адаптера; 0 - первый адаптер, 1 - второй
Поля NCB на выходе Содержимое
FinalCCode Окончательный код завершения команды