|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
NCB
The NCB structure describes a network control block. A pointer to this structure is passed to the Netbios function.
typedef struct _NCB { // ncb UCHAR ncb_command; UCHAR ncb_retcode; UCHAR ncb_lsn; UCHAR ncb_num; PUCHAR ncb_buffer; WORD ncb_length; UCHAR ncb_callname[NCBNAMSZ]; UCHAR ncb_name[NCBNAMSZ]; UCHAR ncb_rto; UCHAR ncb_sto; void (*ncb_post) (struct _NCB *); UCHAR ncb_lana_num; UCHAR ncb_cmd_cplt; UCHAR ncb_reserve[10]; HANDLE ncb_event; } NCB;
Members
ncb_command
Specifies the command code and a flag that indicates whether the NCB structure is processed asynchronously. The most significant bit contains the flag. If the ASYNCH constant is combined with a command code (by using the OR operator), the NCB structure is processed asynchronously. The following command codes are supported:
Code Meaning NCBACTION Enables extensions to the transport interface. NCBACTION commands are mapped to TdiAction. When this code is specified, the ncb_buffer member points to a buffer to be filled with an ACTION_HEADER structure, which is optionally followed by data. NCBACTION commands cannot be canceled by using NCBCANCEL. NCBADDGRNAME Adds a group name to the local name table. NCBADDNAME Adds a unique name to the local name table. NCBASTAT Retrieves the status of the adapter. When this code is specified, the ncb_buffer member points to a buffer to be filled with an ADAPTER_STATUS structure, followed by an array of NAME_BUFFER structures. NCBCALL Opens a session with another name. NCBCANCEL Cancels a previous command. NCBCHAINSEND Sends the contents of two data buffers to the specified session partner. NCBCHAINSENDNA Sends the contents of two data buffers to the specified session partner and does not wait for acknowledgment. NCBDELNAME Deletes a name from the local name table. NCBDGRECV Receives a datagram from any name. NCBDGRECVBC Receives broadcast datagram from any host. NCBDGSEND Sends datagram to a specified name. NCBDGSENDBC Sends a broadcast datagram to every host on the local area network (LAN). NCBENUM Enumerates LAN adapter (LANA) numbers. When this code is specified, the ncb_buffer member points to a buffer to be filled with a LANA_ENUM structure. NCBFINDNAME Determines the location of a name on the network. When this code is specified, the ncb_buffer member points to a buffer to be filled with a FIND_NAME_HEADER structure followed by one or more FIND_NAME_BUFFER structures. NCBHANGUP Closes a specified session. NCBLANSTALERT Notifies the user of LAN failures that last for more than one minute. NCBLISTEN Enables a session to be opened with another name. NCBRECV Receives data from the specified session partner. NCBRECVANY Receives data from any session corresponding to a specified name. NCBRESET Resets a LAN adapter. An adapter must be reset before any other NCB command that specifies the same number in the ncb_lana_num member will be accepted. The IBM NetBIOS 3.0 specification documents several NCB_RESET NCB's. Win32 implements the NCB.RESET using the dynamic link routine interface. Particular values can be passed in specific bytes of the NCB, more specifically: · If ncb_lsn is not 0x00, all resources associated with ncb_lana_num are to be freed. · If ncb_lsn is 0x00, all resources associated with ncb_lana_num are to be freed, and new resources are to be allocated. The ncb_callname[0] byte specifies the maximum number of sessions, and the ncb_callname[2] byte specifies the maximum number of names. A nonzero value for the ncb_callname[3] byte requests that the application use NAME_NUMBER_1. NCBSEND Sends data to the specified session partner. NCBSENDNA Sends data to specified session partner and does not wait for an acknowledgment. NCBSSTAT Retrieves the status of the session. When this value is specified, the ncb_buffer member points to a buffer to be filled with a SESSION_HEADER structure, followed by one or more SESSION_BUFFER structures. NCBTRACE Activates or deactivates NCB tracing. Support for this command in the system is optional and system-specific. NCBUNLINK Unlinks the adapter.
ncb_retcode
Specifies the return code. This value is set to NRC_PENDING while an asynchronous operation is in progress. One of the following return code values can be specified:
Value Meaning NRC_GOODRET The operation succeeded. NRC_BUFLEN An illegal buffer length was supplied. NRC_ILLCMD An illegal command was supplied. NRC_CMDTMO The command was timed out. NRC_INCOMP The message was incomplete. The application is to issue another command. NRC_BADDR The buffer address was illegal. NRC_SNUMOUT The session number was out of range. NRC_NORES No resource was available. NRC_SCLOSED The session was closed. NRC_CMDCAN The command was canceled. NRC_DUPNAME A duplicate name existed in the local name table. NRC_NAMTFUL The name table was full. NRC_ACTSES The command finished; the name has active sessions and is no longer registered. NRC_LOCTFUL The local session table was full. NRC_REMTFUL The remote session table was full. The request to open a session was rejected. NRC_ILLNN An illegal name number was specified. NRC_NOCALL The system did not find the name that was called. NRC_NOWILD Wildcards are not permitted in the ncb_name member. NRC_INUSE The name was already in use on the remote adapter. NRC_NAMERR The name was deleted. NRC_SABORT The session ended abnormally. NRC_NAMCONF A name conflict was detected. NRC_IFBUSY The interface was busy. NRC_TOOMANY Too many commands were outstanding; the application can retry the command later. NRC_BRIDGE The ncb_lana_num member did not specify a valid network number. NRC_CANOCCR The command finished while a cancel operation was occurring. NRC_CANCEL The NCBCANCEL command was not valid; the command was not canceled. NRC_DUPENV The name was defined by another local process. NRC_ENVNOTDEF The environment was not defined. A reset command must be issued. NRC_OSRESNOTAV Operating system resources were exhausted. The application can retry the command later. NRC_MAXAPPS The maximum number of applications was exceeded. NRC_NOSAPS No service access points (SAPs) were available for NetBIOS. NRC_NORESOURCES The requested resources were not available. NRC_INVADDRESS The NCB address was not valid. This return code is not part of the IBM NetBIOS 3.0 specification and is not returned in the NCB structure. Instead, it is returned by the Netbios function. NRC_INVDDID The NCB DDID was invalid. NRC_LOCKFAIL The attempt to lock the user area failed. NRC_OPENERR An error occurred during an open operation being performed by the device driver. This return code is not part of the IBM NetBIOS 3.0 specification. NRC_SYSTEM A system error occurred. NRC_PENDING An asynchronous operation is not yet finished.
ncb_lsn
Specifies the local session number. This number uniquely identifies a session within an environment.
ncb_num
Specifies the number for the local network name. This number is returned by Netbios after a successful NCBADDNAME or NCBADDGRNAME command. This number, not the name, must be used with all datagram commands and for NCBRECVANY commands.
The number for NAME_NUMBER_1 (see NCBRESET) is always 0x01. Netbios assigns values in the range 0x02 to 0xFE for the remaining names.
ncb_buffer
Points to the message buffer.
ncb_length
Specifies the size, in bytes, of the message buffer.
ncb_callname
Specifies the string that contains the remote name. Trailing space characters should be supplied to make the length of the string equal to NCBNAMSZ.
ncb_name
Specifies the string that contains the local name. Trailing space characters should be supplied to make the length of the string equal to NCBNAMSZ.
ncb_rto
Specifies the receive time-out period, in 500-millisecond units, for the session. A value of zero implies no time-out. Specified with the NCBCALL or NCBLISTEN command. Affects subsequent NCBRECV commands.
ncb_sto
Specifies the send time-out period, in 500-millisecond units, for the session. A value of zero implies no time-out. Specified with the NCBCALL or NCBLISTEN command. Affects subsequent NCBSEND and NCBCHAINSEND commands.
ncb_post
Specifies the address of the routine to call when the asynchronous NCB finishes. The completion routine is passed a pointer to the completed network control block.
ncb_lana_num
Specifies the LAN adapter number. This zero-based number corresponds to a particular transport provider using a particular LAN adapter board.
ncb_cmd_cplt
Specifies the command complete flag. This value is the same as the ncb_retcode member.
ncb_reserve
Reserved; must be zero.
ncb_event
Specifies a handle to a Windows event that is set to the signaled state when the asynchronous network control block finishes. The event is signaled if the Netbios function returns a nonzero value.
The ncb_event member must be zero if the ncb_command member does not have the ASYNCH value set or if ncb_post is nonzero. Otherwise, NRC_ILLCMD is returned. The event specified by ncb_event is set to the nonsignaled state by the system when an asynchronous NetBIOS command is accepted, and it is set to the signaled state when the asynchronous NetBIOS command finishes. Using ncb_event to submit asynchronous requests requires fewer system resources than using ncb_post. Also, when ncb_event is nonzero, the pending request is canceled if the thread terminates before the request is processed. This is not true for requests sent by using ncb_post.
Only manual reset events should be used with Netbios. A given event should not be associated with more than one active asynchronous NetBIOS command.
See Also
ACTION_HEADER, ADAPTER_STATUS, FIND_NAME_BUFFER, FIND_NAME_HEADER, LANA_ENUM, NAME_BUFFER, Netbios, SESSION_BUFFER, SESSION_HEADER
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
NCB
Структура NCB описывает сетевого управляющего блока. Указатель в эту структуру пройден в функцию Netbios.
typedef struct _NCB { // ncb_command ncb UCHAR; ncb_retcode UCHAR; ncb_lsn UCHAR; ncb_num UCHAR; ncb_buffer PUCHAR; СЛОВО ncb_length; UCHAR ncb_callname[NCBNAMSZ]; UCHAR ncb_name[NCBNAMSZ]; ncb_rto UCHAR; ncb_sto UCHAR; пустота (*ncb_post) (struct _NCB *); ncb_lana_num UCHAR; ncb_cmd_cplt UCHAR; UCHAR ncb_reserve[10]; РУЧКА ncb_event; } NCB;
Участники
ncb_command
Определяет командный код и флаг, которые указывают обрабатывается структура NCB асинхронно. Наиболее значимый бит содержит флаг. Если константа ASYNCH объединена командным кодом (используя ИЛИ оператор), структура NCB обрабатывается асинхронно. Следующие командные коды поддерживаны:
Кодовое Значение NCBACTION ПРИСПОСАБЛИВАЕТСЯ расширения на интерфейс транспорта. КОМАНДЫ NCBACTION отображены на TdiAction. Когда этот код определен, ncb_buffer элемент указывает на буфер, который нужно заполнять структурой ACTION_HEADER, которая дополнительно сопровождена данными. NCBACTION ПРИКАЗЫВАЕТ не мочь быть отменено использованием NCBCANCEL. NCBADDGRNAME ДОБАВЛЯЕТ групповое имя к локальной таблице имени. NCBADDNAME ДОБАВЛЯЕТ уникальное имя к локальной таблице имени. NCBASTAT ИЗВЛЕКАЕТ статус адаптера. Когда этот код определен, ncb_buffer элемент указывает на буфер, который нужно заполнять структурой ADAPTER_STATUS, сопровождался массивом структур NAME_BUFFER. NCBCALL ОТКРЫВАЕТ сеанс с другим именем. NCBCANCEL ОТМЕНЯЕТ предшествующую команду. NCBCHAINSEND ПОСЫЛАЕТ содержание двух буферов данных определенному сеансовому партнеру. NCBCHAINSENDNA ПОСЫЛАЕТ содержание двух буферов данных определенному сеансовому партнеру и не ждет признание. NCBDELNAME УДАЛЯЕТ имя из локальной таблицы имени. NCBDGRECV ПОЛУЧАЕТ дейтаграмму из любого имени. NCBDGRECVBC ПОЛУЧАЕТ широковещательную дейтаграмму из любого хозяина. NCBDGSEND ПОСЫЛАЕТ дейтаграмму в определенное имя. NCBDGSENDBC ПОСЫЛАЕТ широковещательную дейтаграмму каждому хозяину в локальной сети области (LAN). NCBENUM ПЕРЕЧИСЛЯЕТ адаптер LAN (LANA) числа. Когда этот код определен, ncb_buffer элемент указывает на буфер, который нужно заполнять структурой LANA_ENUM. NCBFINDNAME ОПРЕДЕЛЯЕТ позицию имени в сети. Когда этот код определен, ncb_buffer элемент указывает на буфер, который нужно заполнять структурой FIND_NAME_HEADER сопровожденной одной или более структурами FIND_NAME_BUFFER. NCBHANGUP ЗАКРЫВАЕТ определенный сеанс. NCBLANSTALERT УВЕДОМЛЯЕТ пользователь о неудачах LAN, что последний раз для более, чем одной минуты. NCBLISTEN ПРИСПОСАБЛИВАЕТСЯ сеанс, который нужно открываться с другим именем. NCBRECV ПОЛУЧАЕТ данные из определенного сеансового партнера. NCBRECVANY ПОЛУЧАЕТ данные с любого сеанса, соответствуемого в определенное имя. NCBRESET СБРАСЫВАЕТ адаптер LAN. Адаптер должен быть восстановлен прежде, чем любое другое NCB скомандует, что определяет то же число в ncb_lana_num элементе будет принят. Спецификация IBM NetBIOS 3.0 подтверждает несколько NCB_RESET NCB's. Win32 осуществляет NCB.RESET, использовавшее обычный интерфейс динамической связи. Конкретные величины могут быть пройдены в специфические байты NCB, точнее говоря,: Если ncb_lsn - не 0x00, все ресурсы связанные ncb_lana_num должны быть освобождены. Если ncb_lsn - 0x00, все ресурсы связанные ncb_lana_num должны быть освобождены, и новые ресурсы должны быть распределены. ncb_callname[0] Байт определяет максимальное количество сеансов, и ncb_callname[2] байт определяет максимальное количество имен. Ненулевая величина для ncb_callname[3] байта запрашивается, что прикладное использование NAME_NUMBER_1. NCBSEND ПОСЫЛАЕТ данные определенному сеансовому партнеру. NCBSENDNA ПОСЫЛАЕТ данные на определившее сеансового партнера и не ждет признание. NCBSSTAT ИЗВЛЕКАЕТ статус сеанса. Когда эта величина определена, ncb_buffer элемент указывает на буфер, который нужно заполнять структурой SESSION_HEADER, сопровождался одной или более структурами SESSION_BUFFER. NCBTRACE АКТИВИЗИРУЕТ или деактивизирует трассировку NCB. Поддержка для этой команды в системе - дополнительная и системная-специфическая. NCBUNLINK РАЗЪЕДИНЯЕТ адаптер.
ncb_retcode
Определяет обратный код. Эта величина установлена на NRC_PENDING пока асинхронная операция осуществляется. Одна из обратных кодовых величин следующего могут быть определены:
Значение Величины NRC_GOODRET операция добивалась успеха. NRC_BUFLEN незаконная буферная длина была поставлена. NRC_ILLCMD незаконная команда была поставлена. NRC_CMDTMO команда была синхронизированной. NRC_INCOMP сообщение было неполным. Приложение должно выпускать другую команду. NRC_BADDR буферный адрес был незаконным. NRC_SNUMOUT сеансовое число было из дипазона. No ресурс NRC_NORES был доступен. NRC_SCLOSED сеанс был закрыт. NRC_CMDCAN команда была отменена. NRC_DUPNAME двойное имя существовало в локальной таблице имени. NRC_NAMTFUL таблица имени была полной. NRC_ACTSES команда завершалась; имя имеет активные сеансы и больше не зарегистрирован. NRC_LOCTFUL локальная сеансовая таблица была полной. NRC_REMTFUL дистанционная сеансовая таблица была полной. Запрос, чтобы открывать сеанс был отвергнут. NRC_ILLNN незаконный номер имени был определен. NRC_NOCALL система не находила имя, которое было вызвано. Шаблоны NRC_NOWILD не разрешены в ncb_name элементе. NRC_INUSE имя было уже в использовании на дистанционном адаптере. NRC_NAMERR имя было удалено. NRC_SABORT сеанс заканчивался ненормально. NRC_NAMCONF конфликт имени был обнаружен. NRC_IFBUSY интерфейс был занятым. NRC_TOOMANY Слишком много команд были выдающимися; приложение может сделать новую попытку командой позже. NRC_BRIDGE ncb_lana_num элемент не определял правильный сетевой номер. NRC_CANOCCR команда завершала пока операция отмены происходила. NRC_CANCEL команда NCBCANCEL была недействительна; команда не была отменена. NRC_DUPENV имя было определено другим локальным процессом. NRC_ENVNOTDEF среда не была определена. Команда сброса должна быть выпущена. ресурсы Операционной системы NRC_OSRESNOTAV были исчерпаны. Приложение может сделать новую попытку командой позже. NRC_MAXAPPS максимальное количество приложений было превышено. доступ No услуги NRC_NOSAPS указывает (ПОДТАЧИВАЕТ), были доступны для NetBIOS. NRC_NORESOURCES запрошенные ресурсы были не доступны. NRC_INVADDRESS адрес NCB был недействителен. Этот обратный код не является частью спецификации IBM NetBIOS 3.0 и не возвращан в структуру NCB. Взамен, возвращано функцией Netbios. NRC_INVDDID NCB DDID был недействителен. NRC_LOCKFAIL попытка, чтобы запирать неудачную область пользователя. NRC_OPENERR ошибка происходила в течение работы без ограничений, выполнянной драйвером устройства. Этот обратный код не является частью спецификации IBM NetBIOS 3.0. NRC_SYSTEM системная ошибка происходила. NRC_PENDING асинхронная операция еще не завершена.
ncb_lsn
Определяет локальный сеансовый номер. Это число однозначно идентифицирует сеанс в пределах среды.
ncb_num
Определяет число для локального сетевого имени. Это число возвращано Netbios после успешный NCBADDNAME или команда NCBADDGRNAME. Это число, не имя, должно быть использовано всеми командами дейтаграммы и для команд NCBRECVANY.
Число для NAME_NUMBER_1 (смотри NCBRESET), - всегда 0x01. Netbios Назначает величины в дипазон 0x02 на 0xFE для остального имен.
ncb_buffer
Точки на буфер сообщения.
ncb_length
Определяет размер, в байтах, буфера сообщения.
ncb_callname
Определяет строку, которая содержит дистанционное имя. Конечные космические символы должны быть поставлены, чтобы делать длиной строки равняться NCBNAMSZ.
ncb_name
Определяет строку, которая содержит локальное имя. Конечные космические символы должны быть поставлены, чтобы делать длиной строки равняться NCBNAMSZ.
ncb_rto
Определяет период задержки приемника, в течение устройств 500- миллисекунды, в течение сеанса. Величина нуля не подразумевает никакую задержку. Определенное NCBCALL или команда NCBLISTEN. Влияет на последующие команды NCBRECV.
ncb_sto
Определяет посылать период задержки, в течение устройств 500- миллисекунды, в течение сеанса. Величина нуля не подразумевает никакую задержку. Определенное NCBCALL или команда NCBLISTEN. Влияет на последующие NCBSEND и команды NCBCHAINSEND.
ncb_post
Определяет адрес программы, чтобы вызываться когда асинхронные концы NCB. Программа завершения пройдена указатель завершенному сетевому управляющему блоку.
ncb_lana_num
Определяет адаптерный номер LAN. Этот базирующийся нулевой номер переписывается конкретному поставщику транспорта, использовавшему конкретную адаптерную плату LAN.
ncb_cmd_cplt
Определяет командный полный флаг. Эта величина такая же как и ncb_retcode элемент.
ncb_reserve
Зарезервированное; должно - нулевым.
ncb_event
Определяет ручку в событие Windows, которое установлено в сигнальное состояние когда асинхронный сетевой управляющий блок завершается. Событие сигнализировано если функциональный возврат Netbios ненулевая величина.
ncb_event Элемент должен быть нулем если ncb_command элемент нет имеет величину ASYNCH был установлен или если ncb_post ненулевое. В противном случае, NRC_ILLCMD возвращан. Событие определенное ncb_event установлено в nonsignaled состояние системой когда асинхронная команда NetBIOS принята, и установлено в сигнальное состояние когда асинхронные командные концы NetBIOS. Используя ncb_event, чтобы представлять асинхронные запросы требует меньшие системные ресурсы чем использование ncb_post. Также, когда ncb_event ненулевое, незаконченный запрос отменен если резьба завершается прежде, чем запрос будет обработан. Это - не истина для запросов посланных использованием ncb_post.
Только руководство восстановившее события должно быть использовано Netbios. Данное событие не должно связывано более чем с одной активной асинхронной командой NetBIOS.
Смотри Также
ACTION_HEADER, ADAPTER_STATUS, FIND_NAME_BUFFER, FIND_NAME_HEADER, LANA_ENUM, NAME_BUFFER, Netbios, SESSION_BUFFER, SESSION_HEADER
|
|
|
|
| |