Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Leképzi egy MSI-t vagy MSI-X megszakítást egy hozzárendelt virtuális PCI-eszközhöz, és visszaadja az MSI-címet és az adatokat, hogy beprogramozza az eszközt.
Szemantika
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
Kezelje a virtuális PCI-eszközt tartalmazó partíciót.
LogicalDeviceId
Megadja a virtuális PCI-eszköz logikai eszközazonosítóját az eszköz létrehozásakor hozzárendelt módon.
Index
Megadja a létrehozandó megszakításleképezési bejegyzés indexét. Minden leképezési kérelemnek egyedi, nem használt indexet kell megadnia.
MessageCount
Megadja a megszakításhoz kért üzenetek számát. Több üzenetből álló MSI-megszakítás esetén ez két, 1 és 32 közötti hatvány, beleértve a többit is. MSI-X megszakítás esetén állítsa ezt az értéket 1 értékre.
Target
A megszakítás célvektorát és processzorkészletét ellátó struktúra mutatóját WHV_VPCI_INTERRUPT_TARGET adja meg. Ha MessageCount 1-nél nagyobb, minden üzenet inicializálása ugyanazzal a célprocesszorkészlettel történik.
MsiAddress
Megkapja a megszakításhoz rendelt MSI-címet. Programozza be ezt az értéket az eszköz MSI- vagy MSI-X képességébe.
MsiData
Megkapja a megszakításhoz rendelt MSI-adatok hasznos adatait. Programozza be ezt az értéket az eszköz MSI- vagy MSI-X képességébe.
Visszaadott érték
Ha a függvény sikeres, a visszatérési érték az S_OK.
A függvény akkor ad vissza értéket E_INVALIDARG , ha Index nagyobb, mint 65535, ha MessageCount 0 vagy nagyobb, mint 32, meghatározatlan Target->Flags jelölőt ad meg, ha Target->ProcessorCount 0 vagy meghaladja a partícióban lévő virtuális processzorok számát, ha egy processzor Target->Processors nem érvényes virtuális processzorindex, vagy ha WHvVpciInterruptTargetFlagMulticast egyetlen célprocesszorsal van beállítva. Az Arm64-ben a függvény akkor ad vissza, E_INVALIDARG ha Target->ProcessorCount nagyobb, mint 1, vagy ha WHvVpciInterruptTargetFlagMulticast be van állítva, mert a hipervizor az egyes MSI-ket egyetlen virtuális processzorra célozza az Arm64-en.
Remarks
A WHvMapVpciDeviceInterrupt függvény létrehoz egy leképezést, hogy a hozzárendelt eszközt háttérbe helyező fizikai erőforrások által kiadott megszakításokat a rendszer az eszköz tulajdonában lévő partíció cél virtuális processzoraihoz irányítsa. A leképezés létrehozása után programozza be a visszaadott MsiAddress és MsiData az értékeket az eszköz MSI- vagy MSI-X képességébe.
Ha az eszköz logikai megszakításokkal lett létrehozva, a hívó közvetlenül is érvényesítheti a megszakítást a visszaadott és MsiDataWHvRequestVpciDeviceInterrupta visszaküldött MsiAddress eszköznek való továbbítással.
Többüzenetes MSI-megszakítás (MessageCount 1-nél nagyobb) leképezésekor minden üzenet inicializálva lesz ugyanazzal a célprocesszorkészlettel. Ezután WHvRetargetVpciDeviceInterrupt az egyes üzeneteket egy másik processzorkészletbe adhatja vissza. Lekérdezheti a megfeleltetett megszakítás WHvGetVpciDeviceInterruptTargetaktuális célját, és eltávolíthatja a leképezést a következővel WHvUnmapVpciDeviceInterrupt: .
Requirements
| Requirement | Érték |
|---|---|
| Minimálisan támogatott Windows | Windows 10, 20H2-es verzió (x64); Windows 11, 24H2-es verzió, 26100.3915-ös build (Arm64) |
| Header | WinHvPlatform.h |
| Könyvtár | WinHvPlatform.lib |
| DLL | WinHvPlatform.dll |
| Architecture | x64, Arm64 |