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

UptoLike

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

54
созданием нового потока, VMM не посылает сообщения Create_Thread (но
посылает при этом сообщение Create_VM.)
Так же, как и виртуальные машины, потоки создаются и
разрушаются поэтапно. Первое сообщениеCreate_Thread, посылается в
начале процесса создания потока. EDI содержит обработчик (THCB)
создаваемого потока (который не является выполняемым в настоящее
время потоком). VxD может возвращать установленный флаг переноса, и
VMM не будет создавать поток. Обычно здесь VxD размещает и
инициализирует потоко-ориентированные данные. Этап внешнего
отведения памяти необходим, если 4-х байтов данных на поток в THCB
(отведенных в процессе инициализации VxD) недостаточно. В этом случае,
структура данных потока размещается на этапе Create_Thread, и данные
потока в THCB используются для того, чтобы хранить указатель
на эту
вновь отведенную структуру.
Как только поток полностью создан, VMM посылает сообщение
Thread_Init. EDI опять содержит обработчик вновь созданного потока, но
теперь новый поток также является потоком, выполняемым в настоящее
время. VxD должен задержать любую инициализацию, которая требует
выполнения нового потока, пока он не получит этого сообщения.
Разрушение потока также влечет за собой
многократные сообщения:
Terminate_Thread, Thread_Not_Executeable, и Destroy_Thread. Когда
первое сообщение, Terminate_Thread, послано, поток "собирается быть
завершенным", но все еще способен выполняться. Обычно VxD отвечает
на это сообщение, освобождая любые ресурсы, связанные с потоком.
Следующее сообщение, Thread_Not_Executeable, посылается, когда поток
больше не может выполняться. Последнее сообщение Destroy_Thread
выдается после того, как поток фактически
был разрушен и дает VxD
последний шанс для освобождения потоко-ориентированных ресурсов.
                                  54



созданием нового потока, VMM не посылает сообщения Create_Thread (но
посылает при этом сообщение Create_VM.)
     Так же, как и виртуальные машины, потоки создаются и
разрушаются поэтапно. Первое сообщение – Create_Thread, посылается в
начале процесса создания потока. EDI содержит обработчик (THCB)
создаваемого потока (который не является выполняемым в настоящее
время потоком). VxD может возвращать установленный флаг переноса, и
VMM не будет создавать поток. Обычно здесь VxD размещает и
инициализирует   потоко-ориентированные     данные.   Этап      внешнего
отведения памяти необходим, если 4-х байтов данных на поток в THCB
(отведенных в процессе инициализации VxD) недостаточно. В этом случае,
структура данных потока размещается на этапе Create_Thread, и данные
потока в THCB используются для того, чтобы хранить указатель на эту
вновь отведенную структуру.
     Как только поток полностью создан, VMM посылает сообщение
Thread_Init. EDI опять содержит обработчик вновь созданного потока, но
теперь новый поток также является потоком, выполняемым в настоящее
время. VxD должен задержать любую инициализацию, которая требует
выполнения нового потока, пока он не получит этого сообщения.
     Разрушение потока также влечет за собой многократные сообщения:
Terminate_Thread, Thread_Not_Executeable, и Destroy_Thread. Когда
первое сообщение, Terminate_Thread, послано, поток "собирается быть
завершенным", но все еще способен выполняться. Обычно VxD отвечает
на это сообщение,   освобождая любые ресурсы, связанные с потоком.
Следующее сообщение, Thread_Not_Executeable, посылается, когда поток
больше не может выполняться. Последнее сообщение Destroy_Thread
выдается после того, как поток фактически был разрушен и дает VxD
последний шанс для освобождения потоко-ориентированных ресурсов.