Rejestrowanie zakończenia przechwytywania

Dane kontekstowe wyjścia arm64 spowodowane przechwyconym dostępem do rejestru.

Note

Ta przyczyna zakończenia i jego struktura kontekstu mają zastosowanie tylko do partycji Arm64.

Składnia

//
// 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

Informacje o wyjściu spowodowane przez procesor wirtualny, który uzyskuje dostęp do przechwyconego rejestru systemu, są dostępne w WHV_REGISTER_CONTEXT strukturze. Wyjście jest zgłaszane z WHvMessageTypeRegisterIntercept powodu wyjścia.

Wyjście jest generowane, gdy gość zapisuje jeden z syntetycznych rejestrów awarii gościa — WHvRegisterGuestCrashP0 za pośrednictwem WHvRegisterGuestCrashP4, lub WHvRegisterGuestCrashCtl — których gość może użyć do zgłaszania awarii do stosu wirtualizacji.

Element Header członkowski jest elementem WHV_INTERCEPT_MESSAGE_HEADER, który raportuje licznik programu (Pc) i zapisany stan procesora (Cpsr) w momencie dostępu wraz z kierunkiem WHV_MEMORY_ACCESS_TYPE dostępu w WHV_INTERCEPT_MESSAGE_HEADER.InterceptAccessType (wartość).

Element RegisterName członkowski jest WHV_REGISTER_NAME przechwyconym rejestrem. Element AccessInfo członkowski zawiera wartość zapisu rejestru i identyfikuje element docelowy dla odczytu rejestru:

  • AccessInfo.SourceValue jest elementem WHV_REGISTER_VALUE , który niesie wartość zapisaną dla zapisu rejestru.
  • AccessInfo.DestinationRegister jest elementem identyfikującym WHV_REGISTER_NAME docelowy rejestr dla odczytu rejestru.

Bit IsMemoryOp wskazuje, czy przechwycony dostęp jest operacją pamięci.

Zobacz także