I/O 端口访问导致的退出的上下文数据。
Note
此退出原因及其上下文结构仅适用于 x64 分区。
Syntax
//
// Context data for an exit caused by an I/O port access (WHvRunVpExitReasonX64IOPortAccess)
//
typedef union WHV_X64_IO_PORT_ACCESS_INFO
{
struct
{
UINT32 IsWrite : 1;
UINT32 AccessSize: 3;
UINT32 StringOp : 1;
UINT32 RepPrefix : 1;
UINT32 Reserved : 26;
};
UINT32 AsUINT32;
} WHV_X64_IO_PORT_ACCESS_INFO;
typedef struct WHV_X64_IO_PORT_ACCESS_CONTEXT
{
// Context of the virtual processor
UINT8 InstructionByteCount;
UINT8 Reserved[3];
UINT8 InstructionBytes[16];
// I/O port access info
WHV_X64_IO_PORT_ACCESS_INFO AccessInfo;
UINT16 PortNumber;
UINT16 Reserved2[3];
UINT64 Rax;
UINT64 Rcx;
UINT64 Rsi;
UINT64 Rdi;
WHV_X64_SEGMENT_REGISTER Ds;
WHV_X64_SEGMENT_REGISTER Es;
} WHV_X64_IO_PORT_ACCESS_CONTEXT;
Remarks
结构中 WHV_X64_IO_PORT_ACCESS_CONTEXT 提供了有关执行 I/O 端口指令(IN、OUT、INS 和 OUTS)的虚拟处理器导致的退出的信息。 上下文信息包括 I/O 端口地址,它允许虚拟化堆栈将退出转发到使用虚拟处理器访问的 I/O 端口的设备模拟逻辑。