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

UptoLike

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

69
Остановимся более подробно на реальных функциональных
возможностях SKELETON.VXD, содержащихся в SKELETON.C.
SKELETON.C (листинг 4.1) содержит обработчики сообщений для
SKELETON.VXD. SKELETON.VXD обрабатывает шесть сообщений,
касающихся создания и разрушения виртуальных машин и потоков:
Sys_VM_Init, Sys_VM_Terminate, Create_VM, Destroy_VM, Create_Thread
и Destroy_Thread. Каждый раз при создании VM всем VxD посылается
одно из двух сообщений: Sys_VM_Init для системной VM или Create_VM
для несистемных VM. Создание
VM завершается созданием начального
потока, но в этом случае не посылается никакого сообщения.
Последующие (не начальные) потоки, созданные в VM, кончаются
сообщением Create_Thread. Как уже говорилось ранее, каждая
несистемная VM ограничивается единственным сообщением, поэтому все
сообщения Create_Thread связаны с системной VM.
SKELETON демонстрирует это поведение при печати из обоих
обработчиков VM и значений обработчиков потоков для
этих шести
сообщений. Обработчики сообщений VM (OnSysVmInit, OnCreateVm,
OnDestroyVm, и OnSysVmTerminate) используют сервисную функцию
VMM Get_Initial_Thread_Handle, чтобы получить обработчик начального
сообщения, созданного вместе с VM. (Это сервисная функция не
поддерживается библиотекой VXDWRAPS .CLB DDK, так что ее оболочка
должна находиться в WRAPPERS.CLB). Обработчики сообщений потоков
Create_Thread и Destroy_Thread извлекаются виртуальной машиной
(VM), связанной с потоком, из обработчика
потока, который указывает на
реальный блок управления потока. Одно из полей в блоке управления
потокаобработчик VM, связанной с потоком.
Каждая функция обработчика сообщения отправляет сообщения
обработчика потока в отладчик и в файл. Функции используют
                                          69



     Остановимся       более   подробно          на   реальных     функциональных
возможностях SKELETON.VXD, содержащихся в SKELETON.C.
     SKELETON.C (листинг 4.1) содержит обработчики сообщений для
SKELETON.VXD. SKELETON.VXD обрабатывает шесть сообщений,
касающихся создания и разрушения виртуальных машин и потоков:
Sys_VM_Init, Sys_VM_Terminate, Create_VM, Destroy_VM, Create_Thread
и Destroy_Thread. Каждый раз при создании VM всем VxD посылается
одно из двух сообщений: Sys_VM_Init для системной VM или Create_VM
для несистемных VM. Создание VM завершается созданием начального
потока,   но    в   этом   случае    не        посылается   никакого    сообщения.
Последующие (не начальные) потоки, созданные в VM, кончаются
сообщением      Create_Thread.      Как        уже    говорилось    ранее,   каждая
несистемная VM ограничивается единственным сообщением, поэтому все
сообщения Create_Thread связаны с системной VM.
     SKELETON демонстрирует это поведение при печати из обоих
обработчиков VM и значений обработчиков потоков для этих шести
сообщений. Обработчики сообщений VM (OnSysVmInit, OnCreateVm,
OnDestroyVm, и OnSysVmTerminate) используют сервисную функцию
VMM Get_Initial_Thread_Handle, чтобы получить обработчик начального
сообщения, созданного вместе с VM. (Это сервисная функция не
поддерживается библиотекой VXDWRAPS .CLB DDK, так что ее оболочка
должна находиться в WRAPPERS.CLB). Обработчики сообщений потоков
Create_Thread       и Destroy_Thread       извлекаются виртуальной машиной
(VM), связанной с потоком, из обработчика потока, который указывает на
реальный блок управления потока. Одно из полей в блоке управления
потока – обработчик VM, связанной с потоком.
     Каждая функция обработчика сообщения отправляет сообщения
обработчика потока в отладчик и в файл. Функции используют