Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Программирование в сетях Windows

.pdf
Скачиваний:
538
Добавлен:
11.03.2015
Размер:
3.02 Mб
Скачать

538 Приложение А Перечень команд NetBtOB

Команда NCBCHAINSEND Х1ЮКЖ бднвмоЖ

Команда отправляет содержимое двух буферов указанному получателю. Максимальное количество данных, которое можно отправить, — 128 кб (по 64 кб в каждом буфере). Укажите первый буфер и его длину в полях neb buffer и ncbjength соответственно. Используйте байты 0-1 из ncbcallname, чтобы задать длину второго буфера, а байты 2-5 — чтобы сослаться на него.

Поле

 

Ввод или вывод

 

Нужно ли задать

neb

command

 

Ввод

 

Да

 

neb

retcode

 

Вывод

 

Нет

 

ncbjsn

 

Ввод

 

Да

 

neb пит

 

Необязательно

 

Нет

 

ncbj>uffer

 

Ввод

 

Да

 

neb

length

 

Ввод

 

Да

 

neb

callname

IMl

Ввод

 

Да

 

neb

name

nil

Необязательно

 

Н е т

VK>\

ncbrto

 

Необязательно

 

Нет

да

nebsto

 

Необязательно

 

Нет

 

ncb_post

 

Ввод

 

Нет

 

neb

lana пит

 

Ввод

 

Да

 

ncb_cmd_cplt

 

Вывод

|»;

Нет

 

neb

event

 

Ввод

 

Нет

 

 

 

 

 

 

 

 

КомандаNCBCHAINSENDNA

Команда отправляет содержимое двух буферов указанному получателю, не ожидая подтверждения. Максимальное количество данных, которое можно отправить, — 128 кб (по 64 кб в каждом буфере). Укажите первый буфер и его длину в полях nebjbuffer и ncbjength соответственно. Используйте байты 0-1 из ncbjoallname, чтобы задать длину второго буфера, а байты 2-5 — чтобы сослаться на него.

Поле

Ввод или вывод

 

Нужно ли задать

ncb_command

Ввод

 

Да

 

ncbretcode

Вывод

 

Нет

 

ncbjsn

Ввод

 

Да

,\

neb пит

Необязательно

м

Нет

^ ^

neb buffer

Ввод

ч

Да

ч

ncbjength

Ввод

 

Да

 

ncbjzallname

Ввод

 

Да

 

nebjiame

Необязательно

 

Нет

 

ncb_rto

Необязательно

 

Нет

 

ncb_sto

Необязательно

 

Нет

 

neb post

Ввод

 

Нет

 

Приложение А Перечень команд NetBIOS

539

 

 

продолжение

 

 

 

 

Поле

Ввод или вывод

Нужно ли задать

 

neb lana пит

Ввод

Да

ncbcmdcplt

Вывод

Нет

neb event

Ввод

Нет

КомандаNCBDELNAME

Команда удаляет имя из локальной таблицы имен. Если удаляемое имя связано с активными сеансами, возвращается ошибка NRC^ACTSES (OxOF). Если ожидают выполнения какие-либо неактивные сеансы — ошибка NRC_NAMERR (0x17).

Поле

Ввод или вывод

 

Нужно ли задать

neb

command

Ввод

 

Да

ncb_retcode

Вывод

 

Нет

neb Isn

Не обязательно

 

Нет

nebjium

Не обязательно

 

Нет

neb

buffer

Не обязательно

 

Нет

neb

length

Не обязательно

 

Нет

neb

callname

Не обязательно

 

Нет

neb

name

Ввод

 

Да

neb

rto

Не обязательно

 

' t Щ

 

Нет

 

 

 

 

neb

sto

Не обязательно

 

Нет

nebjjost

Ввод

J.,,,

Нет «

neb

lana пит

Ввод

 

Да

neb

cmdcplt

Вывод

 

Нет

ncb_event

Ввод

 

Нет

 

 

 

 

 

КомандаNCBDGRECV

Команда получает дейтаграмму, адресованную локальному имени, связанному со значением nebjium. Если ncbjium — OxFF, то команда получает дейтаграммы, адресованные любому локальному имени. Локальное имя может быть именем группы, либо уникальным. Если при отправке дейтаграммы нет команд, ожидающих приема дейтаграмм, данные удаляются. Если предоставленный буфер слишком мал, появится сообщение о невозможности завершения (NRCJNCOMP — 0x06) и данные будут усечены до размера буфера.

Поле

Ввод или вывод

Нужно ли задать

 

neb

command

Ввод

Да

 

 

neb

retcode

Вывод

Нет

 

 

neb Isn

Не обязательно

Нет

 

 

neb

пит

Ввод

Да

 

 

nebbuffer

Вывод

Да

см.след.стр.

 

 

 

 

 

 

540 Приложение А Перечень команд NetBIOS

продолжение

Поле

Ввод или вывод

Нужно ли задать

 

 

ncbjength

Ввод и вывод

Да

 

 

neb

callname

Вывод

Нет

 

 

neb

name

Необязательно

Нет

1

neb

rto

Не обязательно

Нет

 

 

neb

sto

Не обязательно

Нет

1

 

ncb_post

Ввод

Нет

 

 

 

nebjanajvum

Ввод

Да

1

neb

cmd cplt

Вывод

Нет

11

ncb_event

Ввод

Нет

 

 

 

 

 

 

 

 

КомандаNCBDGRECVBC

Команда получает широковещательную дейтаграмму от любого имени, выдающего команды отправки таких дейтаграмм. Если предоставленный буфер слишком мал, появится сообщение о невозможности завершения (NRCJNСОМР — ОхОб) и данные будут усечены до размера буфера.

Поле

 

 

Ввод или вывод

 

Нужно ли задать

nebcommand

 

Ввод

Да

 

ncbretcode

 

Вывод

Нет

н

ncbjsn

He обязательно

Нет

<

nebjium

Ввод

Да

.1

ncb_buffer

Ввод

Да

л

ncbjength

Ввод и вывод

Да

\.

neb callname

 

Вывод

Нет

 

nebjiame

He обязательно

Нет

si

ncb_rto

He обязательно

Нет

 

ncb_sto

Необязательно

Нет \

|

ncb_post

Ввод

Нет

 

nebjanajnum

Ввод

Да

f'

ncbcmdcplt

Вывод

Нет

''

ncbevent

 

Ввод

Нет

 

КомандаNCBDGSEND

Команда отправляет дейтаграмму по указанному уникальному или групповому имени. Если в адаптере есть отложенная команда приема дейтаграммы для того же самого имени, то адаптер получит свое собственное сообщение. Выполните локальную команду NCBASTAT — в структуре ADAPTERJ5TATUS будет возвращен максимальный размер дейтаграммы для базового транспортного протокола.

 

 

 

Приложение А

Перечень команд NetBIOS

54\

 

 

 

 

 

 

 

 

 

 

Поле

 

Ввод или вывод

Нужно ли задать

 

neb

command

 

Ввод

Да

 

neb

retcode

 

Вывод

Нет

 

ncbjsn

 

Не обязательно

Нет

 

neb

пит

 

Ввод

Да

 

neb

buffer

 

Ввод

Да

 

nebjength

 

Ввод

Да

 

neb

callname

 

Ввод

Да

 

nebjiame

 

Не обязательно

Нет

 

neb

rto

 

Не обязательно

Нет

 

ncb_sto

 

Не обязательно

Нет

 

ncb_post

-~*

Ввод

Нет

 

neb

lananum

 

Ввод

Да

 

ncbcmdcplt

 

Вывод

Нет

 

neb

event

 

Ввод

Нет

 

КомандаNCBDGSENDBC

Команда отправляет широковещательную дейтаграмму каждому узлу в ло

кальной сети. Только компьютеры с ожидающими выполнения командам! приема дейтаграмм получат сообщение. Если в локальном адаптере ест

отложенная команда приема дейтаграммы, он получит свое собственно» сообщение. Широковещательныедейтаграммы имеют ограничения по раз меру,упомянутыевописанииNCBDGSEND.

Поле

 

Ввод или вывод

Нужно ли задать

ncb_command

 

Ввод

Да

neb

retcode

 

Вывод

Нет

neb

Isn

 

Ввод

Да

nebnum

 

Ввод

Да

neb

buffer

 

Ввод

Да

nebjength

 

Не обязательно

Нет

neb

callname

 

Не обязательно

Нет

neb

name

 

Не обязательно

Нет

neb

rto

 

Не обязательно

Нет

neb

sto

 

Не обязательно

Нет

ncb_post

'

Ввод

Нет

neb

lana пит

l

Ввод

Да

neb

cmd cplt

^

Вывод

Нет

neb

event

 

Ввод

Нет

542

Приложение А Перечень команд NetBIOS

КомандаNCBENUM

Команда нумерует LANA. При этом ncbjouffer должен ссылаться на структуру LANA_ENUM. По возвращении поле length структуры LANA_ENUM будет содержать количество номеров LANA на локальном компьютере. Поле lana из LANA_ENUM заполняется номерами LANA.

Поле

 

Ввод или вывод

 

 

Нужно ли задать

 

 

 

 

 

 

 

 

 

neb

 

command

 

Ввод

 

Да

neb

 

retcode

 

Вывод

 

Нет

ncbjsn

 

He обязательно

 

Нет

neb

пит

 

He обязательно

 

Нет

ncbjouffer

vm¥

Ввод

_

Да

neb

length

 

Ввод

 

Да

ncbcallname

 

He обязательно

 

Нет

neb

 

name

 

He обязательно

 

Нет

ncbrto

 

He обязательно

 

Нет

neb

sto

 

He обязательно

 

Нет

ncbj)ost

 

He обязательно

 

Нет

neb

lana пит

 

Ввод

 

Да

ncb_cmd_cplt

 

Вывод

 

Нет

neb

event

 

Не обязательно

 

Нет

КомандаNCBFINDNAME

Команда находит местоположение (имя компьютера) в сети. После ее выполнения буфер ncbjouffer заполняется структурой EINDJVAME_HEADER, за которой следуют одна или несколько структур FINDJVAMEJ3UFFER. Команда специфична для Microsoft Windows NT и не поддерживается другими платформами Win32.

Поле

Ввод или вывод

 

Нужно ли задать

ncb_command

Ввод

 

Да

 

neb retcode

Вывод

 

Нет

 

neb Isn

Не обязательно

 

Нет

 

nebnum

Не обязательно

„„„

Нет

_

neb buffer

Ввод и вывод

 

Да

 

nebjength

Ввод

 

Да

 

ncb_callname

Ввод

 

Да

 

neb name

Не обязательно

 

Нет

 

neb rto

Не обязательно

 

Нет

 

nebsto

Не обязательно

 

Нет

 

ncb_post

Ввод

 

Нет

 

nebjananum

Ввод

 

Да

 

ncb_cmd_cplt

Вывод

 

Нет

 

neb event

Ввод

 

Нет

 

Приложение А Перечень команд NetBIOS

543

 

КомандаNCBHANGUP

Команда закрывает указанный сеанс. Все отложенные команды приема для сетевого соединения завершаются и возвращается ошибка закрытия сеанса: NRC SCLOSED — ОхОА. Если команды отправки или их цепочка ожидают обработки, то команда завершения сеанса откладывается, пока они не будут выполнены. Эта задержка возникает, если команды передают данные или ожидают, пока удаленная сторона выдаст команду приема. К тому же, если в режиме ожидания находятся несколько командNCBRECVANY, только одна из них вернет код ошибки, когда сеанс будет завершен. Для любой другой команды приема код ошибки возвращает каждая ожидающая команда

Поле

Ввод или вывод

 

Нужно ли задать

ncbcommand

Ввод

 

Да

neb

retcode

Вывод

 

Нет

ncbjsn

Ввод

 

Да

neb

пит

Не обязательно

 

Нет

nebjouffer

Не обязательно

ч ч*т

Нет — — ~

neb

length

Не обязательно

Нет

ncb_callname

Не обязательно

 

Нет

neb

name

Не обязательно

 

Нет

neb

rto

Не обяза гельно

 

Нет

ncb_sto

Не обязательно

 

Нет

ncb_post

Ввод

 

Нет

neb

lana пит

Ввод

 

Да

ncb_cmd_cplt

Вывод

 

Нет

neb

event

Ввод

 

Нет

 

 

 

 

 

КомандаNCBLANSTALERT

Команда специфична для Windows NT и уведомляет пользователя о сбоях в локальной сети, длящихся больше минуты. Впрочем, при тестировании эта команда не реагировала на ряд типичных ошибок ЛВС, например, на разрыв сетевого кабеля.

Поле

Ввод или вывод

Нужно ли задать

ncb_command

Ввод

Да

nebjretcode

Вывод

Нет

ncbjsn

Не обязательно

Нет

nebjnum

Не обязательно

Нет

ncb_buffer

Не обязательно

Нет

ncbjength

Не обязательно

Нет

ncb_callname

Не обязательно

Нет

neb name

Не обязательно

Нет

ncbjrto

Не обязательно

Нет

см.след.стр,

544 Приложение А Перечень команд NetBIOS

продолжение

Поле

 

Ввод или вывод

Нужно ли задать

 

 

 

 

 

 

ncbjto

 

He обязательно

Нет

ncb_post

He обязательно

Нет

neb

lananum

Ввод

Да

neb

cmd_cplt

Вывод

Нет

neb

event

 

Нет

КомандаNCBLISTEN

Команда прослушивает соединения от другого процесса, локального или удаленного. Если первый символ ncb_callname — звездочка ("), соединение устанавливается с любым адаптером сети, выдавшим команду NCBCALL локальному имени. Имя, генерирующееNCBCALL, возвращается в поле neb callname. Если задан таймаут отправки или приема, он применяется во всех запросах в рамках нового сеанса.

Поле

Ввод или вывод

Нужно ли задать

 

nebcommand

Ввод

Да

 

neb

retcode

Вывод

Нет

 

ncbjsn

Вывод

Нет

 

neb

пит

Не обязательно

Нет

 

ncb_buffer

Не обязательно

Нет

 

neb

length

Не обязательно

Нет

 

neb_callname

Ввод и вывод

Да

 

neb

name

Ввод

Да

 

ncbjrto

Ввод

Нет

 

neb

sto

Ввод

Нет

 

ncb_post

Ввод

Нет

")Л

nebjanajnum

Ввод

Да

 

ncb_cmd_cplt

Вывод

Нет

 

neb

event

Ввод

Нет

 

 

 

 

 

 

КомандаNCBRECV

Команда получает данные от сеанса с указанным именем. Если ожидающие обработки данные способны получить несколько команд, они обрабатываются в таком порядке.

1.Прием(NCBRECV).

2.Прием всехдля указанного имени (NCBRECVANY). 3- Прием всехдлялюбого имени (NCBRECVANY).

Все команды с одинаковым приоритетом обрабатываются в порядке поступления. Если буфер обмена не достаточно вместителен, выдается ошиб-

Приложение А Перечень команд NetBIOS

5 45

 

ка NRCJNCOMP (ОхОб). Тогда выдайте еще одну команду приема с более емким буфером. Впрочем, если в команде отправки задан таймаут или она не требует подтверждения, данные будут потеряны. По завершении в поле ncbjength будет храниться объем фактически считанных данных.

Поле

 

Ввод или вывод

 

Нужно ли задать

ncb_command

 

Ввод

 

Да

 

 

 

neb

retcode

 

Вывод

 

Нет

 

 

 

ncbjsn

 

Ввод

 

Да

 

 

 

ncb_num

 

Ввод

 

Да

 

 

 

neb

buffer

^

Ввод

 

Да

 

 

to'.

neb

length

 

Ввод и вывод

Л

 

 

 

 

 

ncb_callname

 

Необязательно

Нет

 

 

 

Ty

Л

 

ft

neb

name

 

Необязательно

Нет

 

 

 

 

1

 

 

 

neb

rto

 

Необязательно

Нет

 

 

 

 

 

 

 

 

 

ncb_sto

 

Необязательно

 

гтСТ

Ж _^

_.

ncb_post

 

Ввод

 

 

 

г \ ffrl' м*к IT F^ 5

 

 

 

 

 

 

 

neb

lana пит

 

Ввод

ildUHJfl

Да

<> )f

 

кд ,

ncbcmdcplt

 

Вывод

 

Нет

.ь,

 

и ,

neb

event

 

Ввод

 

Нет

 

 

 

 

 

 

 

 

 

 

 

 

 

КомандаNCBRECVANY

Команда получает данные от любого сеанса, соответствующего указанном) | имени, может быть использована и для получения данных, предназначенные для любого локального имени. Для этого нужно присвоить полю nebjnun г' значение OxFF. В ином случае присвойте nebjnum номер сети, возвращенный

спри добавлении имени в локальную таблицу имен. Затем любые данные, от

*ложенные для данного имени, будут выбраны этой командой.

Если ожидают обработки несколько команд приема, действует тот ж( ' порядок приоритетов, что и при использовании команды NCBRECV.

f Когда сеанс закрыт командой закрытия локального соединения, коман г дой закрытия соединения на удаленной стороне или командой отмены со * единения, любые ожидающие команды NRCRECVANY идя указанного имеш * будут завершены с ошибкой NRCSCLOSED (ОхОА). В поле ncbjsn из струк г туры NCB хранится номер локального соединения, которое было закрыта <• Если отложенных для указанного имени команд NCBRECVANYнет, для закры

того и какого-либо иного соединения вступает в силу отложенная команд: NCBRECVANY {nebjnum — OxFF). Она будет выполнена с ошибкой NRCJSCLOSED а в поле ncbjsn — записан номер соответствующего сеанса.

Поле

Ввод или вывод

Нужно ли задать

neb

command

Ввод

Да

neb

retcode

Вывод

Нет

neb

Isn

Вывод

Нет

см. след. стр

546 Приложение А Перечень команд NetBIOS

продолжение

Поле

 

Ввод или вывод

Нужно ли задать

 

neb пит

 

Ввод и вывод

Да

 

ncbbuffer

 

Ввод

Да

 

ncbjength

 

Ввод и вывод

Да

1

neb callname

 

Не обязательно

Нет

 

neb name

 

Не обязательно

Нет

 

neb rto

 

Не обязательно

Нет

 

neb sto

M

Не обязательно

Нет

 

ncb_post

 

Ввод

Нет

 

neb lana пит

 

Ввод

Да

 

neb cmd cplt

 

Вывод

Нет

 

ncb_event

 

Ввод

Нет

 

 

 

 

 

 

КомандаNCBRESET

Команда сбрасывает указанный номер LANA и затрагивает определенные ресурсы среды.

ШЕсли поле ncbjsn не равно 0, все ресурсы, связанные с ncbjanajium, освобождаются.

ШЕсли поле ncbjsn равно 0, все ресурсы, связанные с ncbjanajium, освобождаются и выделяются новые. Байт ncb_callname[O] задает максимальное количество сеансов, байт ncb_callname[2] — максимальное количество имен, а байт ncb_callname[3]требует, чтобы приложение использовало имя компьютера (у которого номер имени 1).

Поле

 

 

Ввод или вывод

 

Нужно ли задать

 

 

 

 

 

 

 

nebjzommand

 

Ввод

 

Да

ncb_retcode

Вывод

Нет

ncbjsn

Ввод

Да

nebjnum

 

Ввод

 

Да

nebjouffer

 

He обязательно

 

Нет

ncbjength

 

He обязательно

 

Нет

ncb_callname

 

He обязательно

 

Нет

nebjiame

 

He обязательно

 

Нет

ncbjrto

He обязательно

Нет

ncb_sto

 

He обязательно

 

Нет

ncb_post

 

He обязательно

 

Нет

ncbjanajium

 

Ввод

 

Да

ncbcmdjcplt

Вывод

Нет

neb event

 

He обязательно

 

Нет

Приложение А Перечень команд NetBIOS

547

КомандаNCBSEND

Команда отправляет данные указанному участнику сеанса. Максимальный размер передаваемых данных — 65 536 байт (64 кб). Если удаленная сторона выдает команду завершения связи, все отложенные отправки возвращают ошибку, связанную с закрытием сеанса, —NRCJSCLOSED (0x0А). Отложенные команды отправки обрабатываются в порядке поступления.

Поле

Ввод или вывод

Нужно ли задать

 

 

 

 

ncbcommand

Ввод

Да

neb

retcode

Вывод

Нет

ncbjsn

Ввод

Да

neb

пит

He обязательно

Нет

nebbuffer

Ввод

Да

nebjength

Ввод

Да

ncbcallname

Не обязательно

Нет

neb

name

Не обязательно

Нет

с neb

rto

Не обязательно

Нет

nebsto

Не обязательно

Нет

ncb_post

Ввод

Нет

neb

lana пит

Ввод

Да

ncb_cmd_cplt

Вывод

Нет

neb

event

Ввод

Нет

 

КомандаNCBSENDNA

Команда отправляет данные указанному сеансу и не ожидает подтверждения от партнера. В остальном ведет себя так же, как NCBSEND.

Поле

Ввод или вывод

Нужно ли задать

 

 

 

 

ncb_command

Ввод

Нет

ncb_retcode

Вывод

Нет

ncbjsn

Ввод

Да

nebjium

He обязательно

Нет

nebjbuffer

Ввод

Да

nebjength

Ввод

Да

ncb_callname

Не обязательно

Нет

nebjiame

Не обязательно

Нет

ncbjrto

Не обязательно

Нет

ncb_sto

Не обязательно

Нет

ncb_post

Ввод

Нет

nebjanajnum

Ввод

Да

ncb_cmd_cplt

Вывод

Нет

neb event

Ввод

Нет