Защищенный режим процессоров Intel

       

Перехват передачи управления программе реального режима


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

Например, драйвер мыши выполняет вызов процедуры реального режима при перемещении мыши. Программа может сама задавать адрес реальной процедуры, которая будет получать управление при перемещении мыши или при нажатии на её кнопки. С помощью данной функции программы защищённого режима могут перехватить передачу управления этой процедуры и заменить её на другую процедуру, работающую в защищённом режиме.

Регистры на входе AX 0303h DS:(E)SI Адрес процедуры в формате защищённого режима, которая будет вызвана вместо перехваченной. ES:(E)DI Адрес управляющей структуры для вызова процедуры реального режима (в формате защищённого режима). Регистры на выходе: CARRY 0, если функция выполнилась без ошибки, 1, если произошла ошибка. ES:(E)DI Адрес модифицированной (в результате выполнения процедуры реального режима) управляющей структуры в формате защищённого режима. CX:DX Адрес вызова перехватываемой программы в формате реального режима.

Процедура защищённого режима, перехватывающая управление, вызывается с запрещёнными прерываниями и получает следующие параметры:

DS:(E)SI Адрес стека реального режима в формате <селектор:смещение>.
ES:(E)DI Адрес управляющей структуры в формате <селектор:смещение>.
SS:(E)SP Стек защищённого режима.

Остальные регистры остаются в неопределённом состоянии.

Для выполнения возврата из процедуры перехвата необходимо выполнить команду IRET, предварительно загрузив регистры следующим образом:

ES:(E)DI Адрес управляющей структуры в формате <селектор:смещение>.

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