ZuboLom.ru

Блок управления сетью протокола Netbios

Для работы с NetBios программа должна создать NetWorkControlBlock (NCB), который содержит все необходимое для выполнения операций. Сам NCB не передается. Фактически это набор данных на основе которых формируется команда.


Структура NCB:

Код команды1 байт
Немедленно возвращаемый код1 байт
Номер локальной сессии1 байт
Номер имени1 байт
Адрес буфера данных4 (far pointer) байт
Длина буфера данных2 байт
Имя удаленного компьютера16 байт
Имя вашего компьютера16 байт
Тайм-аут получения1 байт
Тайм-аут посылки1 байт
Адрес POST-процедуры4 (far pointer) байт
Номер адаптера1 байт
Окончательный возвращаемый код1 байт
Зарезервировано14 байт


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

Код возврата содержит код ошибки возвращаемой NetBios до начала выполняемой картины. Это позволяет не выполнять неизвестные и неправильно сформированные команды.

Номер локальной сессии содержит номер сессии после выполнения команд Listen и Call.

Номер имени записывается после выполнения команд AddName и AddGroupName.

Адрес буфера данных содержит указатель на буфер данных для передачи и приема данных.

Длина буфера данных содержит размер буфера данных.

Тайм-аут получения и тайм-аут посылки содержит интервал времени кратный 0.5 секунд, в течение которых ожидается завершение команд приема или передачи.

Адрес POST-процедуры содержит указатель на процедуру, которая будет выполнена после завершения команды без ожидания.

Окончательно возвращаемый код во время выполнения команды содержит FFh, после выполнения сюда заносится значение кода ошибки. Если нет ошибки заносится 00.


Структура NCB на C:

Struct_ NCB
{
unsigned char Cmd;
unsigned char Ccode;
unsigned char LocalSessionNumber;
unsigned char NetworkNameNumber;
void far *Buffer;
unsigned int Size;
char CallName[16];
char OurName[16];
unsigned char RecieveTimeout;
unsigned char SendTimeout;
void interrupt (*PostRoutine)(void);
unsigned char AdapterNumber;
unsigned char FinalCode;
unsigned char Reserve[14];
}ncb;