Локальные сети персональных компьютеров. Использование протоколов IPX, SPX, NETBIOS
© Александр Фролов, Григорий Фролов
Том 4, М.: Диалог-МИФИ, 1993, 160 стр.
|
7. Приложение 3. ФУНКЦИИ NETBIOS
7.1. Работа с именами
7.2. Прием и передача датаграмм
7.3. Работа с каналами
7.4. Прием и передача данных через
каналы
7.5. Другие команды
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.
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.
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.
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.
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 |
Окончательный код завершения команды |
|