Интегрированные сети ISDN


Структура переменных rd_stat - часть 8


Форма реализации запроса аналогична приведенному для driver_info:

Int

if_class; AL

; класс интерфейса

Int

if_type; BX

; тип интерфейса

Int

if_number; DL

; номер интерфейса

Char

far *type; DS:SI

 

Unsigned

typelen; CX

 

Int

(far *receiver); ES:DI

 


access:

mov ah, 2

 

 

mov al, ch

; установка класса; здесь предполагается, что содержимое регистров соответствует тому, что получено в результате обращения к driver_info

 

mov bx, dx

; устанавливаем параметр type

 

mov dl, cl

; устанавливаем параметр number, при одном интерфейсе number=0

 

xor cx, cx

; длина type равна нулю

 

push cs

; устанавливаем сегментный регистр receiver

 

pop es

 

 

mov di, offset RECEIVER

; вызов подпрограммы receiver

 

call int_pkt

; обращение к пакетному драйверу

В случае ошибки флаг carry=1, а в регистр DH заносится код ошибки. Возможные ошибки:

2

NO_CLASS не найдено интерфейса указанного класса;

3

NO_TYPE не найдено интерфейса указанного типа;

4

NO_NUMBER не найдено интерфейса с указанным номером;

5

BAD_TYPE специфицирован неправильный тип пакета;

9

NO_SPACE недостаточно места в памяти;

10

TYPE_INUSE было обращение к данному типу и он пока занят.

При успешном выполнении запроса флаг carry=0, а в регистр AX занесен указатель (handle).

Обращение к приемнику (receiver):

(*receiver)(handle, flag, len [, buffer])

int handle;

BX

; указатель

int flag;

AX

; флаг вызова(0/1)

unsigned len;

CX

; целое без знака - длина пакета

if AX == 1,

char far *buffer;

DS:SI

; адрес буфера

Если параметр typelen равен нулю, прикладной процесс готов получать все пакеты. Очень важно, чтобы при первом обращении к receiver (AX==0) CX (длина пакета) была указана правильно, что позволит выделить нужное место в памяти. CX должна включать в себя длину MAC-заголовка и размер самого сообщения без контрольной суммы (CRC). Повторный вызов (AX==1) программы receiver указывает на то,что пакет записан в буфер и прикладная программа может с ним работать.


Начало  Назад  Вперед



Книжный магазин