共用方式為


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 (簡單)

輸入參數

x64 佈局

名稱 Offset 大小 提供的資訊
PartitionId 0 8 Partition
VpIndex 8 4 VP 索引開始。 要從APIC ID獲取VP索引,請使用HvCallGetVpIndexFromApicId。
TargetVtl 12 1 目標 VTL
VpContext 16 224 指定 VP 應啟動的初始環境定義。

ARM64 佈局

名稱 Offset 大小 提供的資訊
PartitionId 0 8 Partition
VpIndex 8 4 VP 索引開始。 要從 MPIDR 值取得 VP 索引,請使用 HvCallGetVpIndexFromApicId。
TargetVtl 12 1 目標 VTL
VpContext 16 72 指定 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