Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Atanan bir sanal PCI cihazı için MSI veya MSI-X kesmesini eşler ve MSI adresini ve verileri cihaza programlayarak döndürür.
Sözdizimi
typedef enum WHV_VPCI_INTERRUPT_TARGET_FLAGS
{
WHvVpciInterruptTargetFlagNone = 0x00000000,
WHvVpciInterruptTargetFlagMulticast = 0x00000001,
} WHV_VPCI_INTERRUPT_TARGET_FLAGS;
// Enables bitwise operators on the WHV_VPCI_INTERRUPT_TARGET_FLAGS enumeration.
DEFINE_ENUM_FLAG_OPERATORS(WHV_VPCI_INTERRUPT_TARGET_FLAGS);
typedef struct WHV_VPCI_INTERRUPT_TARGET
{
UINT32 Vector;
WHV_VPCI_INTERRUPT_TARGET_FLAGS Flags;
UINT32 ProcessorCount;
UINT32 Processors[ANYSIZE_ARRAY];
} WHV_VPCI_INTERRUPT_TARGET;
HRESULT
WINAPI
WHvMapVpciDeviceInterrupt(
_In_ WHV_PARTITION_HANDLE Partition,
_In_ UINT64 LogicalDeviceId,
_In_ UINT32 Index,
_In_ UINT32 MessageCount,
_In_ const WHV_VPCI_INTERRUPT_TARGET* Target,
_Out_ UINT64* MsiAddress,
_Out_ UINT32* MsiData
);
Parameters
Partition
Sanal PCI cihazının sahibi olan bölümün işleyicisi.
LogicalDeviceId
Cihaz oluşturulduğunda atanan sanal PCI cihazının mantıksal cihaz kimliğini belirtir.
Index
Oluşturulacak kesme eşleme girdisinin dizinini belirtir. Her eşleme isteğinin benzersiz, kullanılmayan bir dizin belirtmesi gerekir.
MessageCount
Kesme için istenen ileti sayısını belirtir. Çok iletili MSI kesintisi için bu, 1 ile 32 (dahil) arasında iki güç sağlar. MSI-X kesme için bu değeri 1 olarak ayarlayın.
Target
Kesme için hedef vektör ve işlemci kümesini sağlayan bir yapıya yönelik bir WHV_VPCI_INTERRUPT_TARGET işaretçi belirtir. 1'den büyük olduğunda MessageCount , her ileti aynı hedef işlemci kümesiyle başlatılır.
MsiAddress
Kesmeye atanan MSI adresini alır. Bu değeri cihazın MSI veya MSI-X özelliğinde programla.
MsiData
Kesmeye atanan MSI veri yükünü alır. Bu değeri cihazın MSI veya MSI-X özelliğinde programla.
Dönüş Değeri
İşlev başarılı olursa, dönüş değeri olur S_OK.
İşlev, 65535'ten büyük olduğundaIndex, 0 veya 32'den büyük olduğunda Target->FlagsMessageCount, tanımsız bir bayrak belirttiğinde, Target->ProcessorCount 0 olduğunda veya bölümdeki sanal işlemci sayısını aştığında, içindeki Target->Processors bir işlemci geçerli bir sanal işlemci dizini olmadığında veya WHvVpciInterruptTargetFlagMulticast tek bir hedef işlemciyle birlikte ayarlandığında döndürürE_INVALIDARG. Arm64'te, hiper yönetici her MSI'yi Arm64'te tek bir sanal işlemciye hedeflediğinden işlev 1'den büyük olduğunda WHvVpciInterruptTargetFlagMulticast veya ayarlandığında döndürür.E_INVALIDARGTarget->ProcessorCount
Açıklamalar
İşlev, WHvMapVpciDeviceInterrupt atanan cihazı destekleyen fiziksel kaynaklar tarafından verilen kesintilerin cihazın sahibi olan bölümün hedef sanal işlemcilerine yönlendirilmesi için bir eşleme oluşturur. Eşleme oluşturulduktan sonra döndürülen MsiAddress ve MsiData değerleri cihazın MSI veya MSI-X özelliğine program edin.
Cihaz mantıksal kesmeler etkinleştirilerek oluşturulduğunda, çağıran da döndürülen MsiAddress ve MsiDataWHvRequestVpciDeviceInterruptgeçirerek kesmeyi doğrudan onaylayabilir.
Çok iletili MSI kesmesi eşlenirken (MessageCount 1'den büyük), tüm iletiler aynı hedef işlemci kümesiyle başlatılır. Daha sonra tek tek iletileri farklı bir işlemci kümesine yeniden hedeflemek için kullanın WHvRetargetVpciDeviceInterrupt . ile WHvGetVpciDeviceInterruptTargeteşlenmiş kesmenin geçerli hedefini sorgulayıp ile WHvUnmapVpciDeviceInterrupteşlemeyi kaldırın.
Requirements
| Requirement | Değer |
|---|---|
| Desteklenen en düşük Windows | Windows 10, sürüm 20H2 (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 |