WHvRegisterPartitionDoorbellEvent

Bir konuk belirtilen konuk fiziksel adresine yazdığında işaretlenecek olayı kaydeder.

Important

WHvRegisterPartitionDoorbellEvent kullanım dışı bırakıldı. Bunun yerine türünde WHvNotificationPortTypeDoorbell bir bildirim bağlantı noktasıyla kullanınWHvCreateNotificationPort.

Sözdizimi

// Guest physical address
typedef UINT64 WHV_GUEST_PHYSICAL_ADDRESS;

typedef struct WHV_DOORBELL_MATCH_DATA
{
    WHV_GUEST_PHYSICAL_ADDRESS GuestAddress;
    UINT64 Value;
    UINT32 Length;
    UINT32 MatchOnValue:1;
    UINT32 MatchOnLength:1;
    UINT32 Reserved:30;
} WHV_DOORBELL_MATCH_DATA;

HRESULT
WINAPI
WHvRegisterPartitionDoorbellEvent(
    _In_ WHV_PARTITION_HANDLE Partition,
    _In_ const WHV_DOORBELL_MATCH_DATA* MatchData,
    _In_ HANDLE EventHandle
    );

Parameters

Partition

Bölüm nesnesi için tanıtıcı.

MatchData

Konuk fiziksel adresini ve konuk yazma işleminin olayı işaret etmek için karşılaması gereken isteğe bağlı değer ve uzunluk kısıtlamalarını belirtir. Alan semantiği ve desteklenen eşleşme modları için bkz. Doorbell Veri Türleri .

EventHandle

tarafından CreateEventdöndürülürken işaretlenmek üzere olayın tanıtıcısını belirtir. Eşleşen bir yazma gerçekleştiğinde hiper yönetici olayı çağrılmış gibi SetEvent ayarlar.

Dönüş Değeri

İşlev başarılı olursa, dönüş değeri olur S_OK.

İşlev, eşleşme verilerinin yanlış biçimlendirilmiş olması durumunda döndürür: ayrılmış bit ayarlandığında; ayarlandığında ancak Length 1, 2, 4 veya 8'in birinde değilken; net olduğunda MatchOnLength ancak Length sıfır olmayan veya ayarlı olduğunda; ya da MatchOnValueMatchOnValue net olduğunda ancak Value sıfır olmayan olduğunda döndürürE_INVALIDARG.MatchOnLength

İşlev, istenen kayıt aynı GuestAddressanda kaydedilmiş bir kapı zili ile çakıştırırsa döndürürERROR_HV_INVALID_PARAMETER. Birden çok kapı zili, her biri aynı Lengtholandan farklı Value bir adresle eşleştiğinde tek bir konuk fiziksel adresine kaydedilebilir. Aynı kapı zili zaten kayıtlı olduğunda, yeni kayıt bu adreste var olan bir kapı zilinden farklı Length bir değer belirttiğinde veya bu adreste yeni kayıt veya mevcut bir kapı zili herhangi bir değerle eşleştiğinde (yani, MatchOnValue açıktır) çakışma oluşur.

Açıklamalar

Bir sanal işlemci eşleşen bir yazma işlemi gerçekleştirdiğinde, olaya işaret edilir ve sanal işlemci ile WHvRunVpExitReasonMemoryAccessçıkış yapmaz. Hiper yönetici yalnızca belirli depo yönergelerini tetikleme yazma için tanır; konuk tanınmayan bir yönerge kullanarak yazma işlemi gerçekleştirirse, olay sinyallenmez ve sanal işlemci ile WHvRunVpExitReasonMemoryAccessçıkar. Desteklenen yönergeler kümesi Windows sürümler arasında değişebilir, bu nedenle arayanlar sanal işlemci çıkış yolunun belirtilen konuk adresi için doğru şekilde davrandığından emin olmalıdır.

Eşleşen konuk adresi daha önce ile WHvMapGpaRangeeşlenmiş bir sayfanın içindeyse, doorbell'in kaydedilmesi kaydın ömrü boyunca bu sayfayı etkili bir şekilde eşler. Sayfaya eşleşmeyen yazma işlemleri, sanal işlemcinin sayfa eşlenmemiş gibi çıkışına WHvRunVpExitReasonMemoryAccess neden olur. Çağrıldığında WHvUnregisterPartitionDoorbellEvent sayfa eşlenmiş durumuna geri döner.

Kayıtlı yazma işlemi bir sayfa sınırına karışmamalıdır; başka hizalama gereksinimi yoktur.

Olay, aynı eşleşme verilerine WHvUnregisterPartitionDoorbellEvent sahip bir çağrısı tarafından kaldırılır ve bölüm silindiğinde kalan tüm doorbell olayları otomatik olarak kaydedilir.

Requirements

Requirement Değer
Desteklenen en düşük Windows Windows 10, sürüm 2004 (x64); Windows 11, sürüm 24H2, derleme 26100.3915 (Arm64)
Header WinHvPlatform.h
Kütüphane WinHvPlatform.lib
DLL WinHvPlatform.dll
Architecture x64, Arm64

Ayrıca bakınız