HV_REGISTER_VALUE

Os valores dos registos do processador virtual têm todos 128 bits de tamanho. Os valores que não consomem os 128 bits completos são estendidos a zero para preencher os 128 bits completos.

Sintaxe

Architecture-Neutral Membros

typedef union
{
    UINT128 Reg128;
    UINT64 Reg64;
    UINT32 Reg32;
    UINT16 Reg16;
    UINT8 Reg8;

    HV_EXPLICIT_SUSPEND_REGISTER ExplicitSuspend;
    HV_INTERCEPT_SUSPEND_REGISTER InterceptSuspend;
    HV_DISPATCH_SUSPEND_REGISTER DispatchSuspend;
} HV_REGISTER_VALUE;

Membros específicos x64

Nas plataformas x64, a união inclui adicionalmente:

typedef union
{
    // ... architecture-neutral members ...
    HV_X64_FP_REGISTER Fp;
    HV_X64_FP_CONTROL_STATUS_REGISTER FpControlStatus;
    HV_X64_XMM_CONTROL_STATUS_REGISTER XmmControlStatus;
    HV_X64_SEGMENT_REGISTER Segment;
    HV_X64_TABLE_REGISTER Table;
    HV_X64_INTERRUPT_STATE_REGISTER InterruptState;
    HV_X64_PENDING_INTERRUPTION_REGISTER PendingInterruption;
    HV_X64_MSR_NPIEP_CONFIG_CONTENTS NpiepConfig;
    HV_X64_PENDING_EXCEPTION_EVENT PendingExceptionEvent;
    HV_X64_PENDING_VIRTUALIZATION_FAULT_EVENT PendingVirtualizationFaultEvent;
    HV_X64_INTEL_INVEPT_REG InvEptReg;
    HV_X64_INTEL_INVVPID_REG InvVpidReg;
} HV_REGISTER_VALUE;

Seleção de membros

O HV_REGISTER_NAME acesso associado a um registo determina a interpretação do valor.

Membro Utilizar
Reg8, Reg16, Reg32, Reg64 Registos escalares da largura correspondente. Os bits de ordem alta restantes são zero.
Reg128 Registos definidos como um valor opaco ou inteiro de 128 bits.
ExplicitSuspend, InterceptSuspend, DispatchSuspend Estado estruturado de suspensão do processador virtual.
Fp valor de registo x64 de 80 bits numa representação de 128 bits.
FpControlStatus, XmmControlStatus estado de controlo/estado de ponto flutuante x64 e SIMD.
Segment, Table estado de registo segmento ou descritor-tabela x64.
InterruptState, PendingInterruption Estado de interrupção x64.
NpiepConfig Configuração de Prevenção de Execução de Instruções Não Privilegiadas (NPIEP) x64 para SGDT, SIDT, SLDT e STR.
PendingExceptionEvent X64 em estado de exceção pendente.
PendingVirtualizationFaultEvent X64 em suspensão - estado de falha de virtualização.
InvEptReg, InvVpidReg Informação para instruções Intel INVEPT e INVVPID emuladas.

Requisitos de utilização

  • A união ocupa 16 bytes e tem alinhamento de 16 bytes, incluindo quando um elemento escalar é selecionado.
  • Os bits reservados estão sujeitos aos requisitos do tipo do membro selecionado. O software que fornece um valor ao hipervisor deve limpar campos definidos como reservado-zero.
  • Uma leitura bem-sucedida do registo devolve a codificação especificada pelo nome do registo solicitado. O valor numérico não determina a codificação.
  • A disponibilidade de registos e permissões de acesso, incluindo restrições de apenas leitura e só escrita, são definidas por HV_REGISTER_NAME.

Ver também