Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Virtual processor register values are all 128 bits in size. Values that do not consume the full 128 bits are zero-extended to fill out the entire 128 bits.
Syntax
Architecture-Neutral Members
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;
x64-Specific Members
On x64 platforms, the union additionally includes:
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;
Member selection
The HV_REGISTER_NAME associated with a register access determines the interpretation of the value.
| Member | Use |
|---|---|
Reg8, Reg16, Reg32, Reg64 |
Scalar registers of the corresponding width. The remaining high-order bits are zero. |
Reg128 |
Registers defined as an opaque or integer 128-bit value. |
ExplicitSuspend, InterceptSuspend, DispatchSuspend |
Structured virtual processor suspension state. |
Fp |
x64 80-bit x87 register value in a 128-bit representation. |
FpControlStatus, XmmControlStatus |
x64 floating-point and SIMD control/status state. |
Segment, Table |
x64 segment or descriptor-table register state. |
InterruptState, PendingInterruption |
x64 interrupt state. |
NpiepConfig |
x64 Non-Privileged Instruction Execution Prevention (NPIEP) configuration for SGDT, SIDT, SLDT, and STR. |
PendingExceptionEvent |
x64 pending exception state. |
PendingVirtualizationFaultEvent |
x64 pending virtualization-fault state. |
InvEptReg, InvVpidReg |
Information for emulated Intel INVEPT and INVVPID instructions. |
Usage requirements
- The union occupies 16 bytes and has 16-byte alignment, including when a scalar member is selected.
- Reserved bits are subject to the requirements of the selected member's type. Software supplying a value to the hypervisor must clear fields defined as reserved-zero.
- A successful register read returns the encoding specified by the requested register name. The numerical value does not determine the encoding.
- Register availability and access permissions, including read-only and write-only restrictions, are defined by
HV_REGISTER_NAME.