ВУЗ:
Составители:
52
(Эта последовательность не совпадает с последовательностью завершения,
инициированной неудачей VM_Create.) Заключительная стадия создания –
VM_Init. В это время VM уже создана, и в ней становятся доступными для
вызова программные прерывания Simulate_Int и Exec_Int.
Уничтожение VM также совершается в три фазы, снова с
обработчиком VM в EBX. Существующая VM изящно завершается
сообщением VM_Terminate, которым VM сообщает, что "собирается
умирать". (Неправильное завершение сначала произведет Query_Destroy, о
чем будет сказано далее.) Здесь VxD должен выполнить действия,
связанные с Simulate_Int или Exec_Int, пока виртуальная машина еще
существует. Следующая фаза – VM_Not_Executeable – выполняется и при
нормальном и при ненормальном выходе. Регистр EDX содержит значения
флагов, которые указывают на фактическую причину завершения.
Эти значения флагов приведены в
табл. 3.3. Поскольку VM уже
закрыта, Simulate_Int и Exec_Int недоступны. Последняя фаза обозначена
Destroy_VM. Если VxD заботит истинная причина завершения работы
VM, и ему не надо использовать Simulate_Int или Exec_Int, он может
отвечать только на это заключительное сообщение.
Прежде, чем SHELL VxD ненормально закроет VM (например, в
ответ на запрос пользователя), он пошлет сообщение Query_Destroy. VxD
может ответить
на это сообщение с установленным флагом переноса,
чтобы указать, что SHELL не должен уничтожать VM. В этом случае, VxD
должен также сообщить пользователю о возникновении проблемы,
используя сервисные сообщения SHELL.
В дополнение к событиям запуска и закрытия VM, VxD также
уведомляется относительно планирования событий, которые изменяют
выполняемую в настоящее время VM. Сообщения VM_Suspend и
52 (Эта последовательность не совпадает с последовательностью завершения, инициированной неудачей VM_Create.) Заключительная стадия создания – VM_Init. В это время VM уже создана, и в ней становятся доступными для вызова программные прерывания Simulate_Int и Exec_Int. Уничтожение VM также совершается в три фазы, снова с обработчиком VM в EBX. Существующая VM изящно завершается сообщением VM_Terminate, которым VM сообщает, что "собирается умирать". (Неправильное завершение сначала произведет Query_Destroy, о чем будет сказано далее.) Здесь VxD должен выполнить действия, связанные с Simulate_Int или Exec_Int, пока виртуальная машина еще существует. Следующая фаза – VM_Not_Executeable – выполняется и при нормальном и при ненормальном выходе. Регистр EDX содержит значения флагов, которые указывают на фактическую причину завершения. Эти значения флагов приведены в табл. 3.3. Поскольку VM уже закрыта, Simulate_Int и Exec_Int недоступны. Последняя фаза обозначена Destroy_VM. Если VxD заботит истинная причина завершения работы VM, и ему не надо использовать Simulate_Int или Exec_Int, он может отвечать только на это заключительное сообщение. Прежде, чем SHELL VxD ненормально закроет VM (например, в ответ на запрос пользователя), он пошлет сообщение Query_Destroy. VxD может ответить на это сообщение с установленным флагом переноса, чтобы указать, что SHELL не должен уничтожать VM. В этом случае, VxD должен также сообщить пользователю о возникновении проблемы, используя сервисные сообщения SHELL. В дополнение к событиям запуска и закрытия VM, VxD также уведомляется относительно планирования событий, которые изменяют выполняемую в настоящее время VM. Сообщения VM_Suspend и
Страницы
- « первая
- ‹ предыдущая
- …
- 50
- 51
- 52
- 53
- 54
- …
- следующая ›
- последняя »