Организация ввода-вывода. Часть 1. Виртуальные драйверы и виртуальное окружение WINDOWS. Рощин А.В. - 49 стр.

UptoLike

Составители: 

49
услуги сразу после того, как экспортирующий VxD обработает это
сообщение. Если VxD виртуализует адаптер, размещенный в памяти,
используемый приложениями DOS, то он должен здесь зарезервировать
страницы в адресном пространстве V86. (Например, виртуальный адаптер
дисплея резервирует страницы для видеобуфера в адресном пространстве
каждой виртуальной машины, обычно по адресам AOOOOh-COOOOh.)
Все VxD должны отложить любые другие действия до
следующей
стадии. Обратите внимание на то, что функции типа Simulate_Int или
Exec_Int, которые выполняют код в VM, недоступны в это время, потому
что никакое виртуальные машины еще созданы. (Объяснение роли
функций Simulate_Int и Exec_Int будет дано в ниже.)
Следующее сообщение, Device_Init, уведомляет VxD о фазе
инициализации, которая выполняется после того, как менеджер
виртуальных машин VMM создал системную VM. Большая часть
установки VxD выполняется в этой фазе. В это время VxD должен
разместить контекст устройства и блока управления памятью, перехватить
порты ввода-вывода и прерывания.
Init_Complete отмечает последнюю фазу инициализации системы.
Обычно только VxD, которые отводят страницы в адресном пространстве
V86, должны отвечать на это сообщение.
Завершение работы Windows также
происходит в три фазы. Когда
система нормально завершает работу (то есть, не наступает крах системы),
сначала завершает работу системная VM, выдавая сообщение
Sys_VM_Terminate. Так как системная VM не была разрушена, сервисные
функции Simulate_Int и Exec_Int все еще доступны, если VxD надо
выполнять код в системной VM. Следующее сообщение в
последовательности закрытияSystem_Exit, которое выдается и
при
нормальном и при ненормальном завершении. В это время прерывания
                                    49



услуги сразу после того, как экспортирующий VxD обработает это
сообщение. Если VxD виртуализует адаптер, размещенный в памяти,
используемый приложениями DOS, то он должен здесь зарезервировать
страницы в адресном пространстве V86. (Например, виртуальный адаптер
дисплея резервирует страницы для видеобуфера в адресном пространстве
каждой виртуальной машины, обычно по адресам AOOOOh-COOOOh.)
     Все VxD должны отложить любые другие действия до следующей
стадии. Обратите внимание на то, что функции типа Simulate_Int или
Exec_Int, которые выполняют код в VM, недоступны в это время, потому
что никакое виртуальные машины еще созданы. (Объяснение роли
функций Simulate_Int и Exec_Int будет дано в ниже.)
     Следующее сообщение, Device_Init, уведомляет VxD о фазе
инициализации,     которая   выполняется     после   того,   как   менеджер
виртуальных машин VMM создал системную VM. Большая часть
установки VxD выполняется в этой фазе. В это время VxD должен
разместить контекст устройства и блока управления памятью, перехватить
порты ввода-вывода и прерывания.
     Init_Complete отмечает последнюю фазу инициализации системы.
Обычно только VxD, которые отводят страницы в адресном пространстве
V86, должны отвечать на это сообщение.
     Завершение работы Windows также происходит в три фазы. Когда
система нормально завершает работу (то есть, не наступает крах системы),
сначала   завершает     работу   системная    VM,     выдавая      сообщение
Sys_VM_Terminate. Так как системная VM не была разрушена, сервисные
функции Simulate_Int и Exec_Int все еще доступны, если VxD надо
выполнять    код    в   системной    VM.      Следующее      сообщение     в
последовательности закрытия – System_Exit, которое выдается и при
нормальном и при ненормальном завершении. В это время прерывания