Уроки Iczelion'а

Обработка прерываний


Прерывания защищенного режима сгруппированы в Interruрt Descriрtor Table (IDT). VMM управляет IDT виртуальных машин с помощью VxD. Как правило, VMM обрабатывает практически все элементы IDT'ов. Она предоставляет обработчики прерываний первого уровня, которые сохраняют состояние прерванной программы в стеке и передают управление обработчикам прерываний второго уровня, которые могут быть предоставлены различными VxD для собственно обработки прерывания. Когда обработчик второго уровня заканчивает свою работу, он передает управление специальной процедуре, восстанавливающей состояние прерванной программы и продолжает выполнение в месте, где прервалось выполнение.

Вышеприведенное описание сильно упрощено. Восстановление может не быть немедленным, потому что порция времени, выделенная прерванной виртуальной машине, может истечь. VxD могут устанавливать обработчики прерываний с помощью сервисов VMM, таких как Set_PM_Int или Hook_V86_Int_Chain. VxD не должны модифицировать элементы IDT напрямую (но вы можете это делать, если вы знаете, что вы делаете).



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