HvCallSetVpRegisters

Der Hypercall HvCallSetVpRegisters schreibt den Zustand eines virtuellen Prozessors.

Schnittstelle

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
   );

Der Zustand wird als eine Reihe von Registerwerten geschrieben, die jeweils einem als Eingabe angegebenen Registernamen entsprechen.

Beim Ändern eines Registerwerts wird eine minimale Fehlerüberprüfung durchgeführt. Insbesondere überprüft der Hypervisor, ob reservierte Bits eines Registers auf 0 festgelegt sind, dass Bits, die architektonisch definiert sind, da sie immer eine Null oder eins enthalten, entsprechend festgelegt sind, und dass angegebene Bits, die über die Architekturgröße des Registers hinausgehen, auf Null gesetzt werden.

Dieser Aufruf kann nicht verwendet werden, um den Wert eines schreibgeschützten Registers zu ändern.

Nebenwirkungen beim Ändern eines Registers werden nicht ausgeführt. Dies umfasst die Generierung von Ausnahmen, Pipelinesynchronisierungen, TLB-Leerungen usw.

Beschränkungen

  • Der Aufrufer muss entweder das übergeordnete Element der durch PartitionId angegebenen Partition sein, oder die angegebene Partition muss "self" sein, und die Partition muss über die Berechtigung AccessVpRegisters verfügen.

Aufrufcode

0x0051 (Rep)

Eingabeparameter

Name Offset Size Informationen bereitgestellt
PartitionId 0 8 Gibt die Partitions-ID an.
VpIndex 8 4 Gibt den Index des virtuellen Prozessors an.
TargetVtl 12 1 gibt die Ziel-VTL an.
RsvdZ 13 3

Eingabeliste-Element

Name Offset Size Informationen bereitgestellt
RegisterName 0 4 Gibt den Namen eines zu ändernden Registers an.
RsvdZ 4 12
RegisterValue 16 16 Gibt den neuen Wert für das angegebene Register an.

Weitere Informationen

HV_REGISTER_NAME

HV_REGISTER_VALUE