Intel Pentium processor - технический обзор
Технический обзор
Главная -
Далее мы подробно раскажем о каждом поле.
Далее мы подробно раскажем о каждом поле.
NCB_COMMAND
Когда прикладная программа выдает NETBIOS команды, она мо-
жет сделать выбор: либо ждать, пока они будут завершены, либо
прерваться по их завершению. Программа может установить величину
1 для ожидания, либо величину 0 для прерывания. Если выбрана
операция ожидания, управление передается следущей команде, толь-
ко когда NETBIOS завершит данную команду. Вызывающая подпрограм-
ма должна затем проверить регистр AL или поле NCB_RETCODE на
состояние завершенной команды. Предпочтительней выбрать, однако,
другую опцию - прерывание (неожидание), потому что NETBIOS рабо-
тает как фоновая задача, таким образом, что может выстраиваться
очередь нескольких команд. Управление возвращается следующей ко-
манде прикладной программы, с кодом возврата в AL.
Возможными кодами возврата будут: 00H - успешное завершение
команды; 03H - неверная команда; 21H - интерфейс занят; 22H -
слишком много команд находимтся в очереди; 23H - неверное поле
NCB_LANA_NUM; 24H - команда завершена в то время как произошла
отмена; 26H - команда не может быть отменена; 4XH - неверное ус-
ловие сети; 50-FEH - сбой в адаптере. Величины кода возврата
40H - 4FH являются уникальными для реализации NETBIOS в ЭКС
Token-Ring.
Прикладная программа может выбрать также следующее: быть
прерванной по коду возврата 00H (OK), либо опросить поле
NCB_CMD_CPLT (первоначально установленное во время выполнения
команды на FFH). Если выбрана опция прерывания, тогда поле
NCB_POST@ должно быть установлено как ненулевое (non-zero). Если
программа прерывается, она может проверить AL или NCB_RETCODE на
конечный код возврата от NETBIOS.
NCB_RETCODE
NETBIOS отражает код возврата в регистре AL. Возможные ве-
личины кода возврата даны выше. Если код возврата не равет 00H,
тогда прикладная программа должна предпринять соответствующее
действие по восстановлению при ошибках.
NCB_LSN
После выполнения командв CALL или LISTEN это поле будет по-
казывать номер, присвоенный местному сеансу. Это поле должно
быть установлено при выдаче команды SEND или RECEIVE для данного
сеанса. NETBIOS присваивает номер последовательно, начиная с 254
до 1 (255 или FFH и 0 никогда не используются).
NCB_NUM
Номер, ассоциированный с именем. NETBIOS возвращает его
после запроса прикладной программы ADD NAME или ADD GROUP NAME.
Также, как и в случае с полем NCB_LSN, NETBIOS присваивает этот
номер последовательно, начиная с 254 до 1. Этот номер должен
использоваться при отправлении дейтаграмм и для команды
RECEIVE ANY.
NCB_BUFFER@
Если этого требует команда, (такая как SEND), NCB_BUFFER@
представляет собой 4-байтовый указатель, который обозначает ад-
рес смещения:сегмента того буфера, который использует команда.
NCB_LENGTH
Длина (в байтах) буфера, на который указывает NCB_BUFFER.
Для команды SEND, это фактическое количество посылаемых байт.
Для команды RECEIVE, NETBIOS устанавливает его к фактическому
количеству принимаемых байт.
NCB_CALLNAME
16-байтовое имя сеанса, с которым осуществляется обмен дан-
ными. Когда выполняется отправка ообщения по цепочке, первые 2
байта определяют длину, а следующие 4 байта - адрес буфера, в
том же формате, что и NCB_BUFFER@.
NCB_NAME
16-байтовое имя станции пользователя. Если используется
постоянный адрес узла, тогда первые 10 байт устанавливаются как
0, за которыми следует 48-битовый (6-байтовый) адрес узла.
NCB_RTO
Определяет тайм-аут получения сообщения в шагах, равных 500
мсек, перед истечением времени ожидания команды RECEIVE. Величи-
на 0 означает отсутствие тайм-аута. NCB-RTO устанавливается, ес-
ли устанавливается сеанс.
NCB_STO
То же, что и для поля NCB_RTO, на данное поле относится к
команде SEND.
NCB_POST@
Адрес смещение:сегмент подпрограммы, которая выполняется
после того, как NETBIOS завершит команду прерывания (неожида-
ния). Прикладная программа должна установить подпрограмму POST,
а подпрограмма POST - регистр DS. Стандартная команда возврата
прерывания, IRET, исполдьзуется по завершении выполнения прог-
раммы POST. Если величина поля NCB_POST@ равна 0, тогда NETBIOS
не вызовет подпрограмму POST, и прикладной программе придется
управлять полем NCB_CMD_CPLT.
NCB_LANA_NUM
Используется для обозначения того, какому адаптеру предназ-
начена команда. Величина 00H - для первого адаптера, величина
01H - для второго адаптера.
NCB_CMD_CPLT
Величина FFH показывает, что команда еще не выполнена. Ве-
личина 00H показывает, что команда завершена. Как было отмечено
выше, ненулевая величина указывает на ошибку.
NCB_RESERVE
14-байтовая зарезервированная область, частично используе-
мая реализацией NETBIOS в ЭКС Token-Ring.
20.05.2012