Операционная система Microsoft Windows 3.1 для программиста. Дополнительные главы

         

Контекст виртуальной машины


Для каждой виртуальной машины при переключении задачи сохраняется текущее состояние всех ее регистров (контекст виртуальной машины) в стеке нулевого кольца защиты. Адрес области памяти, содержащей контекст виртуальной машины, передается в регистре EBP.

Форматы соответствующих структур определены в файле vmm.inc (структуры Client_Reg_Struc, Client_Word_Reg_Struc, Client_Byte_Reg_Struc). В них определены следующие поля:

Client_EDI Client_SS
Client_ESI Client_ES
Client_EBP Client_DS
Client_EBX Client_FS
Client_EDX Client_GS
Client_ECX Client_Alt_EIP
Client_EAX Client_Alt_CS
Client_Error Client_Alt_ESP
Client_EIP Client_Alt_SS
Client_CS Client_Alt_ES
Client_EFlags Client_Alt_DS
Client_ESP Client_Alt_FS
Client_Alt_EFlags Client_Alt_GS
Client_DI Client_IP
Client_SI Client_Flags
Client_BP Client_SP
Client_BX Client_Alt_IP
Client_DX Client_Alt_Flags
Client_CX Client_Alt_SP
Client_AX  
Client_BL Client_CL
Client_BH Client_CH
Client_DL Client_AL
Client_DH Client_AH

Обращение к этим полям не вызывает никаких проблем:

movzx eax, [ebp.Client_AX]

Функция драйвера, вызванная из виртуальной машины, может изменить контекст этой виртуальной машины, изменив содержимое полей перечисленных выше структур данных.

Конкретные примеры процедур, работающих с контекстом виртуальной машины, мы приведем при описании исходного текста виртуального драйвера VXDSRV.



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