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


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


Адрес буфера будет указан в регистрах DS:SI.

3. Завершение доступа пакетов данного типа release_type

int release_type(handle) AH == 3;

код запроса int handle;

BX ; указатель определяет тип пакетов

_release_type proc near

 

push bp

; спасение регистров

 

push ds

 

 

push es

 

 

mov ah, 3

; задаем код запроса

 

mov bx, _param.handle

; заносим указатель

 

pushf

 

 

cli

 

 

call _param.handler

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

 

mov _param.er_CODE, dx

; занесение кода ошибки

 

pop es

; восстановление регистров

 

pop ds

 

 

pop bp

 

 

ret

 

 

_release_type

endp

В случае ошибки флаг carry=1, а в регистр DH заносится код ошибки. Возможная ошибка: BAD_HANDLE (не верный указатель). При успешном выполнении запроса флаг carry=0. Эта операция прерывает доступ пакетов, соответствующих указателю, полученному с помощью запроса access_type. Старый указатель после выполнения этого запроса не действителен.

4. Процедура посылки пакета send_packet(buffer, length)

AH == 4 (код запроса)

char far *buffer; DS:SI (адрес буфера)

unsigned length; CX (длина пакета в байтах)

В случае ошибки флаг carry=1, а в регистр DH заносится код ошибки 12 CANT_SEND. send_packet отправляет пакет с числом байт, равным CX. Пакет должен в исходный момент лежать, начиная с адреса DS:SI. Прикладная программа должна сформировать все необходимые заголовки. Информация, нужная для осуществления демультиплексирования пакетов (MAC или LLC), также должна быть записана в пакет, так как при этом запросе не сообщается значение указателя (handle).

5. Завершение работы драйвера terminate(handle)

AH == 5 (код запроса)

int handle; BX (указатель)

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

1 BAD_HANDLE;

7 CANT_TERMINATE.

Завершает работу драйвера, соответствующего указателю, который приведен в качестве параметра запроса.


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



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