HvCallSetVpRegisters
HvCallSetVpRegisters ハイパーコールは、仮想プロセッサの状態を書き込みます。
インターフェイス
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
);
状態は一連のレジスタ値として書き込まれ、それぞれが入力として指定されたレジスタ名に対応します。
レジスタ値が変更されると、最小限のエラー チェックが実行されます。 特に、ハイパーバイザーは、レジスタの予約済みビットが 0 に設定されていること、常に 0 または 1 を含むものとしてアーキテクチャで定義されているビットが適切に設定されていること、およびレジスタのアーキテクチャ サイズを超える指定されたビットがゼロに設定されていることを検証します。
この呼び出しを使用して、読み取り専用レジスタの値を変更することはできません。
レジスタの変更の副作用は実行されません。 これには、例外の生成、パイプライン同期、TLB フラッシュなどが含まれます。
制限
- 呼び出し元は PartitionId で指定されたパーティションの親であるか、指定されたパーティションが "self" であり、パーティションに AccessVpRegisters 特権が必要です。
呼び出しコード
0x0051
(繰り返し)
入力パラメーター
名前 | Offset | サイズ | 情報提供済み |
---|---|---|---|
PartitionId |
0 | 8 | パーティション ID を指定します。 |
VpIndex |
8 | 4 | 仮想プロセッサのインデックスを指定します。 |
TargetVtl |
12 | 1 | はターゲット VTL を指定します。 |
RsvdZ | 13 | 3 |
入力リスト要素
名前 | Offset | サイズ | 情報提供済み |
---|---|---|---|
RegisterName |
0 | 4 | 変更するレジスタの名前を指定します。 |
RsvdZ | 4 | 12 | |
RegisterValue |
16 | 16 | 指定したレジスタの新しい値を指定します。 |