這是因 I/O 埠存取而導致的退出上下文資料。
Note
這個退出原因及其上下文結構僅適用於 x64 分割區。
語法
//
// 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 埠的裝置模擬邏輯。