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

UptoLike

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

51
аккуратно освобождать любые ресурсы, которые он занимал. Это касается
освобождения портов ввода-вывода, выгрузки обработчиков аппаратных
прерываний, и освобождения сервисных функций. Кроме того,
динамический VxD должен отменить все незавершенные тайм-ауты и
события, возникшие во время Sys_Dynamic_Device_Exit, иначе VMM
закончит тем, что будет вызывать код, который уже выгружен, и система,
вероятно, потерпит крах
.
Статические сегменты кода и данных могут использоваться для
решения некоторых проблем, с которыми может сталкиваться
динамический VxD при освобождении ресурсов. Например, иногда VMM
не обеспечивает сервиса "освобождения" для какого-то ресурса, и
освобождение может быть неудачным. В этих случаях код, использующий
этот ресурс, должен находиться в статическом кодовом сегменте и не
должен
выполнять никаких действий, если остальная часть VxD не
загружена. При последующей загрузке VxD должен повторно использовать
уже занятый ресурс, вместо того, чтобы занимать ресурс снова.
3.8. Сообщения об изменении состояния VM
Здесь имеет место другой набор сообщений о жизненном пути
виртуальной машины (VM). Создание новой VM также происходит в три
фазы, каждая со своим собственным
сообщением: Create_VM,
VM_Critical_Init и VM_Init. Обработчик VM для каждого из сообщений
находится в EBX.
Когда VxD получает первое сообщение, Create_VM, он должен
инициализировать данные, связанные с VM. VM_Critical_Init отмечает
следующую фазу. Реакция с ошибкой на сообщение VM_Critical_Init
(возвращается установленный флаг переноса) инициирует
последовательность завершения, начинающуюся с VM_Not_Executable.
                                     51



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

        3.8. Сообщения об изменении состояния VM

        Здесь имеет место другой набор сообщений о жизненном пути
виртуальной машины (VM). Создание новой VM также происходит в три
фазы,     каждая    со   своим   собственным     сообщением:    Create_VM,
VM_Critical_Init и VM_Init. Обработчик VM для каждого из сообщений
находится в EBX.
        Когда VxD получает первое сообщение, Create_VM, он должен
инициализировать данные, связанные с VM. VM_Critical_Init отмечает
следующую фазу. Реакция с ошибкой на сообщение VM_Critical_Init
(возвращается       установленный         флаг   переноса)      инициирует
последовательность завершения, начинающуюся с VM_Not_Executable.