共用方式為


HvCallSetVpRegisters

HvCallSetVpRegisters hypercall 會寫入虛擬處理器的狀態。

介面

HV_STATUS
HvCallSetVpRegisters(
   _In_ HV_PARTITION_ID PartitionId,
   _In_ HV_VP_INDEX VpIndex,
   _In_ HV_INPUT_VTL InputVtl,
   _Inout_ PUINT32 RegisterCount,
   _In_reads(RegisterCount) PCHV_REGISTER_NAME RegisterNameList,
   _In_reads(RegisterCount) PCHV_REGISTER_VALUE RegisterValueList
   );

狀態會寫入為一系列的暫存器值,每個值都對應至提供作為輸入的暫存器名稱。

修改暫存器值時,會執行最少的錯誤檢查。 特別是,Hypervisor 會驗證暫存器的保留位設定為零、架構上定義為一律包含零或適當設定的位,以及超出暫存器架構大小的指定位會以零為零。

此呼叫無法用來修改唯讀暫存器的值。

不會執行修改暫存器的副作用。 這包括產生例外狀況、管線同步處理、TLB 排清等等。

限制

  • 呼叫端必須是 PartitionId 所指定之資料分割的父系,或指定的分割區必須是 「self」,而且分割區必須具有 AccessVpRegisters 許可權。

呼叫程式碼

0x0051 (Rep)

輸入參數

名稱 Offset 大小 提供的資訊
PartitionId 0 8 指定分割區識別碼。
VpIndex 8 4 指定虛擬處理器的索引。
TargetVtl 12 1 指定目標 VTL。
RsvdZ 13 3

輸入清單元素

名稱 Offset 大小 提供的資訊
RegisterName 0 4 指定要修改之暫存器的名稱。
RsvdZ 4 12
RegisterValue 16 16 指定指定暫存器的新值。

另請參閱

HV_REGISTER_NAME

HV_REGISTER_VALUE