HV_X64_SEGMENT_REGISTER
O estado de registro do segmento é codificado da seguinte maneira:
Sintaxe
typedef struct
{
UINT64 Base;
UINT32 Limit;
UINT16 Selector;
union
{
struct
{
UINT16 SegmentType:4;
UINT16 NonSystemSegment:1;
UINT16 DescriptorPrivilegeLevel:2;
UINT16 Present:1;
UINT16 Reserved:4;
UINT16 Available:1;
UINT16 Long:1;
UINT16 Default:1;
UINT16 Granularity:1;
};
UINT16 Attributes;
};
} HV_X64_SEGMENT_REGISTER;
O limite é codificado como um valor de 32 bits. Para segmentos de modo longo X64, o limite é ignorado. Para segmentos x86 herdados, o limite deve ser expressível dentro dos limites da arquitetura do processador x64. Por exemplo, se o bit "G" (granularidade) for definido dentro dos atributos de um código ou segmento de dados, os 12 bits de ordem baixa do limite deverão ser 1s.
O bit "Present" controla se o segmento age como um segmento nulo (ou seja, se um acesso à memória executado por meio desse segmento gera uma falha de #GP).
Os IA32_FS_BASE e IA32_GS_BASE msrs não são definidos na lista de registros, pois são aliases para o elemento base da estrutura de registro de segmento. Use HvX64RegisterFs e HvX64RegisterGs e a estrutura acima.
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários