Inscrire la sortie de l’intercept

Données de contexte pour une sortie Arm64 provoquée par un accès d’inscription intercepté.

Note

Cette raison de sortie et sa structure de contexte s’appliquent uniquement aux partitions Arm64.

Syntaxe

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

Des informations sur une sortie provoquée par le processeur virtuel accédant à un registre système intercepté sont fournies dans la WHV_REGISTER_CONTEXT structure. La sortie est signalée avec la raison de WHvMessageTypeRegisterIntercept sortie.

La sortie est générée lorsque l’invité écrit l’un des registres d’incidents invités synthétiques ( WHvRegisterGuestCrashP0 via WHvRegisterGuestCrashP4ou WHvRegisterGuestCrashCtl ) qu’un invité peut utiliser pour signaler un incident à la pile de virtualisation.

Le Header membre est un WHV_INTERCEPT_MESSAGE_HEADER, qui signale le compteur de programme (Pc) et l’état du processeur enregistré (Cpsr) au moment de l’accès, ainsi que le sens d’accès dans WHV_INTERCEPT_MESSAGE_HEADER.InterceptAccessType (une WHV_MEMORY_ACCESS_TYPE valeur).

Le RegisterName membre est le WHV_REGISTER_NAME registre intercepté. Le AccessInfo membre porte la valeur d’un registre d’écriture et identifie la cible d’un registre lu :

  • AccessInfo.SourceValue est une WHV_REGISTER_VALUE valeur qui porte la valeur écrite pour un registre d’écriture.
  • AccessInfo.DestinationRegister est un WHV_REGISTER_NAME qui identifie le registre cible pour une lecture de registre.

Le IsMemoryOp bit indique si l’accès intercepté est une opération de mémoire.

Voir aussi