HvCallStartVirtualProcessor
HvCallStartVirtualProcessor 是启动虚拟处理器的一种启用方法。 它在功能上等效于传统的基于 INIT 的方法,只不过 VP 可以从所需的寄存器状态开始。
这是在非零 VTL 中启动 VP 的唯一方法。
接口
HV_STATUS
HvCallStartVirtualProcessor(
_In_ HV_PARTITION_ID PartitionId,
_In_ HV_VP_INDEX VpIndex,
_In_ HV_VTL TargetVtl,
_In_ HV_INITIAL_VP_CONTEXT VpContext
);
调用代码
0x0099
(简单)
输入参数
名称 | Offset | 大小 | 提供的信息 |
---|---|---|---|
PartitionId |
0 | 8 | 分区 |
VpIndex |
8 | 4 | 要启动的 VP 索引。 若要从 APIC ID 获取 VP 索引,请使用 HvGetVpIndexFromApicId。 |
TargetVtl |
12 | 1 | 目标 VTL |
VpContext |
16 | 224 | 指定应在其中启动 VP 的初始上下文。 |
返回值
状态代码 | 错误条件 |
---|---|
HV_STATUS_ACCESS_DENIED |
访问被拒绝 |
HV_STATUS_INVALID_PARTITION_ID |
指定的分区 ID 无效。 |
HV_STATUS_INVALID_VP_INDEX |
由 HV_VP_INDEX 指定的虚拟处理器无效。 |
HV_STATUS_INVALID_REGISTER_VALUE |
提供的注册表值无效。 |
HV_STATUS_INVALID_VP_STATE |
虚拟处理器状态错误,指示的操作无法正常运行。 |
HV_STATUS_INVALID_PARTITION_STATE |
指定的分区未处于“活动”状态。 |
HV_STATUS_INVALID_VTL_STATE |
VTL 状态与请求的操作冲突。 |