Kesme Noktası Çıkışlarını Kaydet

Kesilen kayıt erişimi nedeniyle arm64 çıkışı için bağlam verileri.

Note

Bu çıkış nedeni ve bağlam yapısı yalnızca Arm64 bölümleri için geçerlidir.

Sözdizimi

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

Açıklamalar

Kesilen bir sistem kaydına erişen sanal işlemcinin neden olduğu çıkışla ilgili bilgiler yapıda WHV_REGISTER_CONTEXT sağlanır. Çıkış, çıkış nedeni ile WHvMessageTypeRegisterIntercept bildirilir.

Çıkış, konuk sanallaştırma yığınına kilitlenme bildirmek için kullanabileceği yapay konuk kilitlenme yazmaçlarından birini ( WHvRegisterGuestCrashP0 aracılığıyla WHvRegisterGuestCrashP4veya WHvRegisterGuestCrashCtl ) yazdığında oluşturulur.

ÜyeHeader, erişim sırasında program sayacını (Pc) ve kaydedilmiş işlemci durumunu (Cpsr) ve içindeki erişim yönünü (bir değer) bildiren bir WHV_INTERCEPT_MESSAGE_HEADERWHV_MEMORY_ACCESS_TYPE değeridir WHV_INTERCEPT_MESSAGE_HEADER.InterceptAccessType .

Üye RegisterName , WHV_REGISTER_NAME araya girilen yazmaçtır. Üye, AccessInfo yazmaç yazmaç değerini taşır ve yazmaç okuması için hedefi tanımlar:

  • AccessInfo.SourceValue yazmaç WHV_REGISTER_VALUE yazmaç için yazılan değeri taşıyan bir değerdir.
  • AccessInfo.DestinationRegister , WHV_REGISTER_NAME bir yazmaç okuması için hedef yazmaç tanımlayan bir kayıttır.

Bit, IsMemoryOp kesilen erişimin bir bellek işlemi olup olmadığını gösterir.

Ayrıca bakınız