Команда 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Команда закрывает указанный сеанс. Все отложенные команды приема для се- тевого соединения завершаются и возвращается ошибка закрытия сеанса:
NRCSCLOSED — ОхОА. Если команды отправки или их цепочка ожидают обработ- ки, то команда завершения сеанса откладывается, пока они не будут выпол- нены. Эта задержка возникает, если команды передают данные или ожида- ют, пока удаленная сторона выдаст команду приема. К тому же, если в режи- ме ожидания находятся несколько команд
NCBRECVANY, только одна из них вернет код ошибки, когда сеанс будет завершен. Для любой другой команды приема код ошибки возвращает каждая ожидающая команда
Полеncbcommandneb retcodencbjsnneb питnebjoufferneb lengthncb_callnameneb nameneb rtoncb_stoncb_postneb lana питncb_cmd_cpltneb eventВвод или выводВвод
Вывод
Ввод
Не обязательно
Не обязательно ч
ч*тНе обязательно —
Не обязательно
Не обязательно
Не обяза гельно
Не обязательно
Ввод
Ввод
Вывод
Ввод
Нужно ли задатьДаНет
ДаНет
Нет
— — Нет
Нет
Нет
Нет
Нет
Нет
ДаНет
НетКоманда NCBLANSTALERTКоманда специфична для Windows NT и уведомляет пользователя о сбоях в локальной сети, длящихся больше минуты. Впрочем, при тестировании эта команда не
реагировала на ряд типичных ошибок ЛВС, например, на разрыв сетевого кабеля.
Полеncb_commandnebjretcodencbjsnnebjnumncb_bufferncbjengthncb_callnameneb namencbjrtoВвод или выводВводВыводНе обязательноНе обязательноНе обязательноНе обязательноНе
обязательноНе обязательноНе обязательноНужно ли задатьДаНетНетНетНетНетНетНетНетсм. след. стр, 5 4 4
Приложение А Перечень команд NetBIOS
продолжениеПоле Ввод или вывод Нужно ли задатьncbjtoncb_postneb lananumneb cmd_cpltneb eventHe обязательно
He обязательно
Ввод
Вывод
Нет
Нет
Да
Нет
Нет
Команда NCBLISTENКоманда прослушивает соединения от другого процесса, локального или удаленного. Если первый символ
ncb_callname — звездочка ("), соединение устанавливается с любым адаптером сети, выдавшим команду
NCBCALL ло- кальному имени. Имя, генерирующее
NCBCALL, возвращается в поле
neb call-name. Если задан таймаут отправки или приема, он применяется во всех за- просах в рамках нового сеанса.
Полеnebcommandneb retcodencbjsnneb питncb_bufferneb lengthneb_callnameneb namencbjrtoneb stoncb_postnebjanajnumncb_cmd_cpltneb eventВвод или вывод
Ввод
Вывод
Вывод
Не обязательно
Не обязательно
Не обязательно
Ввод и вывод
Ввод
Ввод
Ввод
Ввод
Ввод
Вывод
Ввод
Нужно ли задать
Да
Нет
Нет
Нет
Нет
Нет
Да
Да
Нет
Нет
Нет
")ЛДа
Нет
Нет
Команда NCBRECVКоманда получает данные от сеанса с указанным именем. Если ожидающие обработки данные способны получить несколько команд, они обрабатыва- ются в таком порядке.
1. Прием
(NCBRECV).2. Прием всех для указанного имени
(NCBRECVANY).3- Прием всех для любого имени
(NCBRECVANY).Все команды с одинаковым приоритетом обрабатываются в порядке по- ступления.
Если буфер обмена не достаточно вместителен, выдается ошиб-
Приложение А Перечень команд NetBIOS
5 4 5
ка
NRCJNCOMP (ОхОб). Тогда выдайте еще одну команду приема с более ем- ким буфером. Впрочем, если в команде отправки задан таймаут или она не требует подтверждения, данные будут потеряны. По завершении в поле
ncbjength будет храниться объем фактически считанных данных.
Полеncb_commandneb retcodencbjsnncb_numneb buffer ^
neb lengthncb_callname Tyneb nameneb rtoncb_stoncb_postneb lana питncbcmdcpltneb eventВвод или выводВвод
Вывод
Ввод
Ввод
Ввод
Ввод и вывод
Не обязательно
Не обязательно
Не обязательно
Не обязательно
Ввод
Ввод
Вывод
Ввод
ЛЛ1—
ildUHJfl
Нужно ли задатьДаНет
ДаДаДа to'.Нет
ftНет
Нет гтСТ
Ж _^ _.
г
\ ffrl'
м*к IT F^ 5
Да <> )f кд ,Нет
.ь, и,Нет
Команда NCBRECVANYКоманда получает данные от любого сеанса, соответствующего указанном)
| имени, может быть использована и для получения данных, предназначенные для любого локального имени. Для этого нужно присвоить полю
nebjnunг' значение OxFF. В ином случае присвойте
nebjnum номер сети, возвращенный с при добавлении имени в локальную таблицу имен. Затем любые данные, от
* ложенные для данного имени, будут выбраны этой командой.
Если ожидают обработки несколько команд приема, действует тот ж(
'
порядок приоритетов, что и при использовании команды
NCBRECV.f Когда сеанс закрыт командой закрытия локального соединения, коман
г дой закрытия соединения на удаленной стороне или командой отмены со
* единения, любые ожидающие команды
NRCRECVANY идя указанного имеш
* будут завершены с ошибкой
NRCSCLOSED (ОхОА). В поле
ncbjsn из струк
г туры
NCB хранится номер локального соединения, которое было закрыта
<• Если отложенных для указанного имени команд
NCBRECVANY нет, для закры того и какого-либо иного соединения вступает в силу отложенная команд:
NCBRECVANY {nebjnum — OxFF). Она будет выполнена с ошибкой
NRCJSCLOSEDа в поле
ncbjsn — записан номер соответствующего сеанса.
Полеneb commandneb retcodeneb IsnВвод или выводВвод
Вывод
Вывод
Нужно ли задатьДа
Нет
Нет
см. след. стр 546 Приложение А Перечень команд NetBIOS
продолжениеПоле
neb питncbbufferncbjengthneb callnameneb nameneb rtoneb sto Mncb_postneb lana питneb cmd cpltncb_eventВвод или вывод
Ввод и вывод
Ввод
Ввод и вывод
Не обязательно
Не обязательно
Не обязательно
Не обязательно
Ввод
Ввод
Вывод
Ввод
Нужно ли задать
Да
Да
Да
1Нет
Нет
Нет
Нет
Нет
Да
Нет
Нет
Команда 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 пит
nebbuffer
nebjength
ncbcallname
neb name
с neb rto
nebsto
ncb_post
neb lana пит
ncb_cmd_cplt
neb event
Ввод
Вывод
Ввод
He обязательно
Ввод
Ввод
Не обязательно
Не обязательно
Не обязательно
Не обязательно
Ввод
Ввод
Вывод
Ввод
Да
Нет
Да
Нет
Да
Да
Нет
Нет
Нет
Нет
Нет
Да
Нет
Нет
Команда NCBSENDNA
Команда отправляет данные указанному сеансу и не ожидает подтверждения от партнера. В остальном ведет себя так же, как NCBSEND.
Поле
Ввод или вывод
Нужно ли задать
ncb_command
ncb_retcode
ncbjsn
nebjium
nebjbuffer
nebjength
ncb_callname
nebjiame
ncbjrto
ncb_sto
ncb_post
nebjanajnum
ncb_cmd_cplt
neb event
Ввод
Вывод
Ввод
He обязательно
Ввод
Ввод
Не обязательно
Не обязательно
Не обязательно
Не обязательно
Ввод
Ввод
Вывод
Ввод
Нет
Нет
Да
Нет
Да
Да
Нет
Нет
Нет
Нет
Нет
Да
Нет
Нет
548 Приложение А Перечень команд NetBIOS
Команда NCBSSTATКоманда получает сведения о состоянии сеанса. При вызове этой команды
ncb_buffer ссылается на область памяти, которая будет заполнена структурой
SESSION'_ HEADER, далее следуют одна или более структур
SESSION_BUFFER.Если первый байт
ncbjname — звездочка ('),
команда выясняет состояние для всех сеансов, связанных со всеми именами в таблице локальных имен. Если предоставленный буфер слишком мал, выдается ошибка
NRCJNCOMP (0x06).
Если длина буфера меньше 4 байт — ошибка
NRCJBUFLEN (0x01).
Полеncbjzommandneb retcodencbjsnneb питneb buffernebjengthneb callnamencbjnameneb rtonebjstonebjdostnebjana питncb_cmdjcpltneb eventВвод или выводВвод
Вывод
Не обязательно
Вывод
Ввод
Ввод
Не обязательно
Ввод
Не обязательно
Не обязательно
Ввод
Ввод
Вывод
Ввод
Нужно ли задатьДаНет
Нет
кНет
_„ кДаДаНет
ДаНет
,Нет
Нет
ДаНет
Нет
Команда NCBUNLINKКоманда отменяет привязку к адаптеру. Предусмотрена для совместимости с ранними версиями NetBIOS и на платформах Win32 не оказывает эффекта.
П Р И Л О Ж Е Н И ЕВспомогательные функции IP
iВ этом приложении мы опишем некоторые новые API-функции для получе- ния информации и настройки параметров протокола IP. Эти функции позво- ляют программно использовать возможности следующих стандартных IP- уТИЛИТ:
•
Ipconfig.exe (или Winipcfg.exe в Microsoft Windows 95) — выводит ин- формацию о конфигурации IP и позволяет освобождать и обновлять IP- адреса, выделенные DHCP;
•
Netstat.exe — выводит таблицу TCP-соединений, таблицу прослушивае- мых портов UDP и статистику протокола IP;
•
Route.exe — выводит и редактирует таблицы маршрутизации;
Ш Агр.ехе — выводит и редактирует используемые
протоколом разреше-ния адресов (address resolution protocol, ARP) таблицы трансляции IP-ад- ресов в физические.
Функции, описанные в этом приложении, доступны в основном в Windows
98 и Windows 2000, некоторые — и в Windows NT 4 с Service Pack 4 (или бо- лее поздним), но ни одна не доступна в Windows 95. При обсуждении каждой функции будет указываться соответствующая платформа. Прототипы для всех функций, описанных в приложении, определены в файле Iphlpapi.h. При ком- поновке приложения необходимо подключать библиотеку Iphlpapi.lib.
Возможности утилиты IpconfigУтилита Ipconfig поставляет два блока информации: о конфигурации IP и о параметрах IP для каждого сетевого адаптера, установленного на данном компьютере. Чтобы получить информацию о конфигурации IP, воспользуй- тесь функцией
GetNetworkParams:DWORD GetNetworkParams(PFIXED_INFO pFixedlnfo,PULONG pOutBufLen);Параметр
pFixedlnfo — указатель на буфер, куда будет помещена структу- ра
FIXED JNFO с информацией о конфигурации IP. Параметр
pOutBufLen —указатель на переменную, задающую размер буфера, который передается че- рез первый параметр.
Если этого размера окажется не достаточно, функция
550 Приложение В Вспомогательные функции IP
GetNetworkParams вернет значение ERROR_BUFFER OVERFLOW и определит значение параметра pOutBuJLen, равным необходимому размеру буфера.
Структура FIXED JNFO имеет следующий вид:
s typedef struct
{
char HostName[MAX_HOSTNAHE_LEN + 4] ;
char
t
DomainName[MAX_DOMAIN_NAME_LEN + 4 ] ;
PIP_ADDR_STRING CurrentDnsServer;
IP_ADDR_STRING DnsServerList;
UINT NodeType;
char ScopeId[MAX_SCOPE_ID_LEN + 4];
UINT EnableRouting;
UINT EnableProxy;
UINT EnableDns;
} FIXEO_INFO, *PFIXED_INFO;
Она содержит следующие поля.
• HostName — имя данного компьютера, определенное системой DNS.
Ш DomainName — домен DNS, к которому относится компьютер. #
Ш CurrentDnsServei— IP-адрес текущего DNS-сервера.
• DnsServerList — связанный список, содержащий используемые данным компьютером DNS-серверы.
II NodeType — способ, которым система распознает имена NetBIOS в сети с IP. Вот список его возможных значений:
Ш BROADCASTNODETYPE — разрешение имен NetBIOS типа Ь-узел;
система использует IP-широковещание для регистрации и разрешения имен NetBIOS;
И PEER_TO_PEER_NODETYPE — разрешение имен NetBIOS типа р-узел;
система использует соединение «точка-точка» с сервером имен Net-
BIOS (например, WINS) для регистрации и разрешения имен компью- теров в IP-адреса;
К MIXEDNODETYPE — разрешение имен NetBIOS типа m-узел (mixed node, узел смешанного типа), при котором система использует оба описанных выше способа: сначала метод b-узла, если он не срабаты- вает, то метод р-узла;
• HYBRIDNODETYPE — разрешение имен NetBIOS типа h-узел (hybrid node, гибридный узел); система также использует оба способа, но сна- чала — метод р-узла, а если он не срабатывает, то метод Ь-узла.
• Scopeld — задает строку, добавляемую к имени NetBIOS для логического объединения двух и более компьютеров. Это необходимо для соединения
NetBIOS по протоколу TCP/IP.
Я EnableRouting — указывает, будет ли данная система осуществлять мар- шрутизацию IP-пакетов между сетями, к которым подключена.
Ш EnableProxy — указывает, будет ли система работать в сети как прокси- агент системы WINS. Этот агент отвечает на широковещательные запро-
Приложение В Вспомогательные функции IP 551
Я сы по именам, распознанными WINS, и позволяет сетям из компьютеров b-узлов соединяться с серверами в других подсетях, зарегистрированных в WINS.
•
EnableDns — указывает, будет ли NetBIOS обращаться к DNS с именами,
которые не разрешаются с помощью WINS, рассылки или файла
LMHOSTSПоле
DnsServerList структуры
FIXED JNFO — это структура
IP_ADDR STRING,представляющая начало связанного списка IP-адресов:
ВПКtypedef s t r u c t _IP_ADDR_STRING
struct _IP_ADDR_STRING« Next;* IP_ADDRESS_STRING IpAddress; i, Q^E IP_MASK_STRING IpMask;DWORD Context; 4*' ^\_41 '} IP_ADDR_STRING, *PIP_ADDR_STRING; fry,