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 状态与请求的操作冲突。

请参阅

HV_INITIAL_VP_CONTEXT