Драйверы устройств в системе Windows

         

События, управляющие устройством


     По  мере  того,  как  система  Windows  в  своей  работе проходит различные  стадии,  начиная  со  стадии  инициализации  самой системы, через  инициализацию  виртуальной  машины  VM  и  так  далее,   каждый установленный драйвер VxD вызывается  неоднократно, а именно один  раз на  каждую  стадию.  В  таблице,  приведенной ниже, перечисляются фазы системы  Windows  и  главные  события,  для  которых вызывается каждый драйвер VxD.

                                                     Таблица

            Управляющие сообщения драйвера VxD

-------------------+--------------------------------------------------

Sys_Critical_Init  | Первое    управляющее    событие;      прерывания

                   | отключаются.  Драйвер VxD  определяет  готовность

                   | устройства.

-------------------+--------------------------------------------------

Device_Init        | Прерывания разрешаются; драйвер VxD инициализиру-

                   | ет устройство;  могут быть  вызваны   программы и

                   | драйверы системы DOS.

-------------------+--------------------------------------------------

Init_Complete      | Указывает,  что  все  драйверы VxD  прошли стадию

                   | Device_Init.

-------------------+--------------------------------------------------

System_Exit        | Указывает,  что  система   Windows   готовится  к



                   | закрытию  и возврату  в систему  DOS. Память  для

                   | системы DOS  восстановлена  в состояние,  которое

                   | было до работы системы Windows.

-------------------+--------------------------------------------------

Sys_Critical_Exit  | Последнее   управляющее    событие;    прерывания

                   | отключаются.

-------------------+--------------------------------------------------

Create_VM          | Вызывается  перед  моментом  создания виртуальной

                   | машины  VM;  драйвер  VxD указывает,  доступны ли

                   | ресурсы для создания виртуальной машины VM.




-------------------+--------------------------------------------------
VM_Critical_Init   | Вторая фаза создания виртуальной машины VM.
-------------------+--------------------------------------------------
VM_Init            | Третья  фаза  создания   виртуальной  машины  VM.
Sys_VM_Init        | Драйвер  VxD  может  аварийно   завершить  работу
                   | виртуальной машины VM.
-------------------+--------------------------------------------------
Query_Destroy      | Позволяет драйверу VxD предупредить  пользователя
                   | о затруднениях при разрушении виртуальной  машины
                   | VM.
-------------------+--------------------------------------------------
VM_Terminate       | Первая  стадия  успешного  завершения виртуальной
Sys_VM_Terminate   | машины VM.  Если   это   системная    виртуальная
                   | машина VM,   то   сообщение   указывает,      что
                   | производится нормальное, вызванное пользователем,
                   | завершение системы Windows.
-------------------+--------------------------------------------------
VM_Not_Executeable | Виртуальная машина VM  закрывается. Первая стадия
                   | аварийного завершения виртуальной машины VM.
-------------------+--------------------------------------------------
     Драйвер   VxD   примера   выполняет   управление   только   фазой Device_Init.  На  этой  стадии  устанавливается  связь с портом ввода-вывода   и   уровнем   прерывания   11,   а   также   производится  их виртуализация. Обычно драйвер VxD виртуализирует порты ввода-вывода  и прерывание в соответствии с физическим аппаратным оборудованием. Но  в данном  случае  драйвер  VxD  может  виртуализировать  и  делает это с портом и прерыванием, которые не имеют соответствующего  подключенного аппаратного оборудования.
     Код   Install_IO_Handler   вызывается,   чтобы   виртуализировать единственный   порт    ввода-вывода.   Затем    всякий   раз,    когда осуществляется доступ к  описанному порту ввода-вывода  из виртуальной машины VM,  программа управления  виртуальной машиной  системы Windows (Virtual  Machine  Manager  -  VMM)  вызывает  обратно драйвер VxD для того, чтобы разрешить ему имитировать операции ввода-вывода.
     Код  VPICD_Virtualize_IRQ   вызывается,  чтобы   виртуализировать уровень  прерывания.  Выполняя   его,  можно  имитировать   прерывание аппаратного оборудования (в частности IRQ 11) в виртуальной машине.

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