Протокол NETBIOS. Шоберг А.Г. - 7 стр.

UptoLike

Составители: 

5
Первое, что следует сделать программе, вызывающей NETBIOS, - прове-
рить наличие в системе интерфейса NETBIOS. Сделать это можно с помощью
прерываний.
С помощью функции getvect() программа получает указатель на обработ-
чик прерывания INT 5Ch. NETBIOS считается отсутствующим, если сегмент
адреса равен нулю или F000h, обработчик прерывания не установлен.
Ниже приведен фрагмент программы проверки присутствия NETBIOS с
использованием прерывание INT 5Ch:
void main(void) {
void interrupt ( *int5C)(...);
printf("Проверяем загружен ли NetBios.\n");
int5C = getvect(0x5c);
if(FP_SEG(int5C) == 0x0000 || FP_SEG(int5C) == 0xF000) {
printf("NetBios не загружен.\n");
}
else printf("NetBios загружен.\n");
}
Другой способ проверки наличия интерфейса NETBIOS заключается в
вызове прерывания INT 2Ah. Для этого нужно загрузить в регистр AH нулевое
значение и вызвать прерывание. Если после возврата из прерывания в регистре
AH попрежнему находится нуль, драйвер NETBIOS не установлен. Ниже при-
веден фрагмент программы проверки присутствия NETBIOS с использованием
прерывание INT 2Ah:
void main(void) {
union REGS regs;
printf("Проверка загружен ли NetBios.\n");
regs.h.ah = 0;
int86(0x2a, &regs, &regs);
if(regs.h.ah == 0) {
printf("NetBios не загружен.\n");
}
else printf("NetBios загружен.\n");
}
7. Вызов команд протокола NETBIOS
Для вызова команд протокола NETBIOS необходимо:
1. подготовить блок NCB;
2. подготовить данные для вызова прерывания;
3. вызвать прерывание.
Для вызова команд из программы, составленной на языке Си, можно вос-
пользоваться средствами вызова программных прерываний, такими, как функ-
ция int86x().
8. Формат блока NCB
Формат блока NCB следующий: