ВУЗ:
Составители:
41
буфер, а затем отвести большой буфер, используя сервисную функцию
_PageAllocate. Как правило, используют функцию _HeapAllocate для
отведения небольших областей и _PageAllocate для отведения больших
областей. Границей между большой и маленькой областью является
значение 4Кб.
В то время, как служебная информация о каждом устройстве хорошо
знакома разработчикам драйверов устройств, служебная информация о
каждой виртуальной машине, или о каждой паре устройство/виртуальная
машина менее знакома разработчикам. К счастью VxD может попросить,
чтобы менеджер виртуальных машин (VMM) хранил данные виртуальной
машины от имени VxD. Менеджер виртуальных машин (VMM) сам
отводит и использует управляющий блок для каждой виртуальной
машины. VxD может использовать сервис VMM резервирования его
собственной области данных о виртуальной
машине в пределах
управляющего блока виртуальной машины VM.
Для резервирования этого места в управляющем блоке, VxD
запрашивает сервисную функцию VMM _AlIocate_Device_CB_Area во
время инициализации, запрашивая блок соответствующего размера.
Менеджер виртуальных машин (VMM) возвращает смещение отведенного
блока в пределах всего управляющего блока. Как только VxD запросил эту
область, менеджер виртуальных машин (VMM) будет резервировать ее по
одному и
тому же смещению в управляющем блоке каждой виртуальной
машины (VM). Поскольку VxD всегда будет иметь доступ к обработчику
текущей виртуальной машины, а обработчик виртуальной машины (VM)
фактически является стартовым адресом управляющего блока VM, VxD
будет иметь доступ к данным этого управляющего блока. На рис. 3.1
показано, как данные управляющего блока (CBD) могут использоваться
для сохранения информации о
состоянии виртуальной машины.
41 буфер, а затем отвести большой буфер, используя сервисную функцию _PageAllocate. Как правило, используют функцию _HeapAllocate для отведения небольших областей и _PageAllocate для отведения больших областей. Границей между большой и маленькой областью является значение 4Кб. В то время, как служебная информация о каждом устройстве хорошо знакома разработчикам драйверов устройств, служебная информация о каждой виртуальной машине, или о каждой паре устройство/виртуальная машина менее знакома разработчикам. К счастью VxD может попросить, чтобы менеджер виртуальных машин (VMM) хранил данные виртуальной машины от имени VxD. Менеджер виртуальных машин (VMM) сам отводит и использует управляющий блок для каждой виртуальной машины. VxD может использовать сервис VMM резервирования его собственной области данных о виртуальной машине в пределах управляющего блока виртуальной машины VM. Для резервирования этого места в управляющем блоке, VxD запрашивает сервисную функцию VMM _AlIocate_Device_CB_Area во время инициализации, запрашивая блок соответствующего размера. Менеджер виртуальных машин (VMM) возвращает смещение отведенного блока в пределах всего управляющего блока. Как только VxD запросил эту область, менеджер виртуальных машин (VMM) будет резервировать ее по одному и тому же смещению в управляющем блоке каждой виртуальной машины (VM). Поскольку VxD всегда будет иметь доступ к обработчику текущей виртуальной машины, а обработчик виртуальной машины (VM) фактически является стартовым адресом управляющего блока VM, VxD будет иметь доступ к данным этого управляющего блока. На рис. 3.1 показано, как данные управляющего блока (CBD) могут использоваться для сохранения информации о состоянии виртуальной машины.
Страницы
- « первая
- ‹ предыдущая
- …
- 39
- 40
- 41
- 42
- 43
- …
- следующая ›
- последняя »