Abfangen beenden

Kontextdaten für einen Arm64-Exit, der durch einen abgefangenen Registerzugriff verursacht wurde.

Note

Dieser Ausgangsgrund und seine Kontextstruktur gelten nur für Arm64-Partitionen.

Syntax

//
// Context data for an exit caused by an intercepted register access
// (WHvMessageTypeRegisterIntercept)
//

//
// Define register intercept message structure.
//
typedef union WHV_REGISTER_ACCESS_INFO
{
    WHV_REGISTER_VALUE SourceValue;
    WHV_REGISTER_NAME DestinationRegister;
} WHV_REGISTER_ACCESS_INFO;

typedef struct WHV_REGISTER_CONTEXT
{
    WHV_INTERCEPT_MESSAGE_HEADER Header;
    struct
    {
        UINT8 IsMemoryOp:1;
        UINT8 Reserved:7;
    };
    UINT8 Reserved8;
    UINT16 Reserved16;
    WHV_REGISTER_NAME RegisterName;
    WHV_REGISTER_ACCESS_INFO AccessInfo;
} WHV_REGISTER_CONTEXT;

Remarks

Informationen zum Beenden durch den virtuellen Prozessor, der auf ein abgefangenes Systemregister zugreift, werden in der WHV_REGISTER_CONTEXT Struktur bereitgestellt. Der Ausgang wird mit dem WHvMessageTypeRegisterIntercept Ausgangsgrund gemeldet.

Das Beenden wird generiert, wenn der Gast eins der synthetischen Gastabsturzregister schreibt – WHvRegisterGuestCrashP0 über WHvRegisterGuestCrashP4oder WHvRegisterGuestCrashCtl – die ein Gast verwenden kann, um einen Absturz an den Virtualisierungsstapel zu melden.

Das Header Mitglied ist ein WHV_INTERCEPT_MESSAGE_HEADER, der den Programmzähler (Pc) und den gespeicherten Prozessorzustand (Cpsr) zum Zeitpunkt des Zugriffs meldet, zusammen mit der Zugriffsrichtung in WHV_INTERCEPT_MESSAGE_HEADER.InterceptAccessType (einem WHV_MEMORY_ACCESS_TYPE Wert).

Das RegisterName Element ist das WHV_REGISTER_NAME abgefangene Register. Das AccessInfo Element trägt den Wert für einen Registerschreibvorgang und identifiziert das Ziel für ein Registerlesevorgang:

  • AccessInfo.SourceValue ist ein WHV_REGISTER_VALUE Wert, der für einen Registerschreibwert geschrieben wird.
  • AccessInfo.DestinationRegister ist eine WHV_REGISTER_NAME , die das Zielregister für ein Register mit Lesezugriff identifiziert.

Das IsMemoryOp Bit gibt an, ob der abgefangene Zugriff ein Speichervorgang ist.

Siehe auch