ВУЗ:
Составители:
42
Кроме данных о виртуальной машине, некоторым VxD необходимы
также данные о потоках. Причина заключается в том, что Windows 95
управляет потоками, а не виртуальными машинами, а системная
виртуальная машина может иметь более одного потока. Механизм
хранения данных о потоке похож на тот, который используется для
хранения данных о виртуальной машине. VxD отводит место для хранения
данных о потоке в процессе своей инициализации, вызывая сервисную
функцию _AllocateThreadDataSlot. Эта функция возвращает смещение
слота данных потока относительно структуры данных, называемой
управляющим блоком потока или Thread Control Block (THCB). Менеджер
виртуальных машин (VMM) обеспечивает THCB текущего выполняемого
потока, когда вызывается управляющая процедура устройства VxD с
сообщениями, связанными с потоком. VxD может получить также
управляющий блок текущего
выполняемого потока THCB путем вызова
сервисной функции VMM Get_Cur_Thread_Handle.
В отличие от _Allocate_Device_CB_Area, которая может
резервировать области данных различного размера,
_AllocateThreadDataSlot всегда отводит 4 байта для сохранения данных о
потоке. Если потоковые данные вашего VxD не помещаются в 4 байтах,
используйте эти 4 байта для хранения указателя на структуру большего
размера. Ваш VxD должен отводить структуру большего размера
, когда
поток уже создан (рис. 3.2).
Чтобы просматривать или изменять состояние виртуальной машины,
VxD просматривает или изменяет поля в другой важной структуре данных
– структуре регистра клиента. Эта структура содержит текущие регистры и
флаги виртуальной машины.
42 Кроме данных о виртуальной машине, некоторым VxD необходимы также данные о потоках. Причина заключается в том, что Windows 95 управляет потоками, а не виртуальными машинами, а системная виртуальная машина может иметь более одного потока. Механизм хранения данных о потоке похож на тот, который используется для хранения данных о виртуальной машине. VxD отводит место для хранения данных о потоке в процессе своей инициализации, вызывая сервисную функцию _AllocateThreadDataSlot. Эта функция возвращает смещение слота данных потока относительно структуры данных, называемой управляющим блоком потока или Thread Control Block (THCB). Менеджер виртуальных машин (VMM) обеспечивает THCB текущего выполняемого потока, когда вызывается управляющая процедура устройства VxD с сообщениями, связанными с потоком. VxD может получить также управляющий блок текущего выполняемого потока THCB путем вызова сервисной функции VMM Get_Cur_Thread_Handle. В отличие от _Allocate_Device_CB_Area, которая может резервировать области данных различного размера, _AllocateThreadDataSlot всегда отводит 4 байта для сохранения данных о потоке. Если потоковые данные вашего VxD не помещаются в 4 байтах, используйте эти 4 байта для хранения указателя на структуру большего размера. Ваш VxD должен отводить структуру большего размера, когда поток уже создан (рис. 3.2). Чтобы просматривать или изменять состояние виртуальной машины, VxD просматривает или изменяет поля в другой важной структуре данных – структуре регистра клиента. Эта структура содержит текущие регистры и флаги виртуальной машины.
Страницы
- « первая
- ‹ предыдущая
- …
- 40
- 41
- 42
- 43
- 44
- …
- следующая ›
- последняя »