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