Модемы и факс-модемы. Программирование для MS-DOS и Windows

Удалить FOSSIL-драйвер из памяти


Данную подфункцию можно использовать для удаления FOSSIL-драйвера из оперативной памяти компьютера. При этом драйвер освобождает телефонную линию, восстанавливает все перехваченные им векторы прерываний и возвращает адрес своего блока MCB. Далее вы можете воспользоваться функцией 49h прерывания INT21h для освобождения этого MCB.

На входе:  AH = 0E0h;

     

AL = 05h.

На выходе:     BX = адрес MCB или 0 в случае ошибки.

Приведем пример программы UNINST, удаляющей FOSSIL-драйвер из памяти. Исходный текст этой программы представлен в листинге 6.16.

Листинг 6.16. Файл UNINST.C

int uninstall(void);

//********************************************************

// Функция main

//********************************************************

void main(void) {

     

int  ok;

     

ok = uninstall();



     

printf("Удаление FOSSIL-драйвера из памяти %s.",

                  

(ok) ? "прошло успешно" : "невозможно" );

}

//********************************************************

// Функция uninstall

//********************************************************

int uninstall(void) {

     

int  ok = 0;

     

asm {

            

// Определяем адрес MCB блока драйвера

            

mov     ax,0E005h

            

int  14h

            

// В случае ошибки возвращаем управление

            

cmp     bx,0

            

je          no_uninstall

            

// es = bx

            

push    bx

            

pop      es

            

// Освобождаем MCB блок, используемый драйвером

            

mov     ah,49h

            

int  21h

            

mov     ok,1

     

}

     

no_uninstall:

     

return(ok);

}



Содержание раздела