Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Memetakan MSI atau MSI-X mengganggu perangkat PCI virtual yang ditetapkan dan mengembalikan alamat dan data MSI untuk diprogram ke perangkat.
Syntax
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
Tangani ke partisi yang memiliki perangkat PCI virtual.
LogicalDeviceId
Menentukan ID perangkat logis perangkat PCI virtual, seperti yang ditetapkan saat perangkat dibuat.
Index
Menentukan indeks entri pemetaan interupsi yang akan dibuat. Setiap permintaan pemetaan harus menentukan indeks unik yang tidak digunakan.
MessageCount
Menentukan jumlah pesan yang diminta untuk interupsi. Untuk interupsi MSI multi-pesan, ini adalah kekuatan dua antara 1 dan 32, inklusif. Untuk interupsi MSI-X, atur nilai ini ke 1.
Target
Menentukan penunjuk ke WHV_VPCI_INTERRUPT_TARGET struktur yang memasok vektor target dan prosesor yang ditetapkan untuk interupsi. Ketika MessageCount lebih besar dari 1, setiap pesan diinisialisasi dengan set prosesor target yang sama.
MsiAddress
Menerima alamat MSI yang ditetapkan untuk interupsi. Programkan nilai ini ke dalam kemampuan MSI atau MSI-X perangkat.
MsiData
Menerima payload data MSI yang ditetapkan ke interupsi. Programkan nilai ini ke dalam kemampuan MSI atau MSI-X perangkat.
Mengembalikan Nilai
Jika fungsi berhasil, nilai yang dikembalikan adalah S_OK.
Fungsi mengembalikan E_INVALIDARG ketika Index lebih besar dari 65535, ketika MessageCount adalah 0 atau lebih besar dari 32, ketika Target->Flags menentukan bendera yang tidak ditentukan, ketika Target->ProcessorCount adalah 0 atau melebihi jumlah prosesor virtual dalam partisi, ketika prosesor dalam Target->Processors bukan indeks prosesor virtual yang valid, atau ketika WHvVpciInterruptTargetFlagMulticast diatur bersama dengan prosesor target tunggal. Pada Arm64, fungsi kembali E_INVALIDARG ketika Target->ProcessorCount lebih besar dari 1 atau ketika WHvVpciInterruptTargetFlagMulticast diatur, karena hypervisor menargetkan setiap MSI ke satu prosesor virtual di Arm64.
Remarks
Fungsi ini WHvMapVpciDeviceInterrupt menetapkan pemetaan sehingga gangguan yang dikeluarkan oleh sumber daya fisik yang mendukung perangkat yang ditetapkan dirutekan ke prosesor virtual target partisi yang memiliki perangkat. Setelah pemetaan dibuat, programkan nilai dan MsiData yang dikembalikan MsiAddress ke dalam kemampuan MSI atau MSI-X perangkat.
Ketika perangkat dibuat dengan interupsi logis diaktifkan, pemanggil juga dapat menegaskan interupsi secara langsung dengan meneruskan yang dikembalikan MsiAddress dan MsiData ke WHvRequestVpciDeviceInterrupt.
Saat memetakan gangguan MSI multi-pesan (MessageCount lebih besar dari 1), semua pesan diinisialisasi dengan set prosesor target yang sama. Gunakan WHvRetargetVpciDeviceInterrupt setelah itu untuk menargetkan ulang pesan individual ke set prosesor yang berbeda. Kueri target saat ini dari interupsi yang dipetakan dengan WHvGetVpciDeviceInterruptTarget, dan hapus pemetaan dengan WHvUnmapVpciDeviceInterrupt.
Requirements
| Persyaratan | Nilai |
|---|---|
| Windows minimum yang didukung | Windows 10, versi 20H2 (x64); Windows 11, versi 24H2, build 26100.3915 (Arm64) |
| Header | WinHvPlatform.h |
| Perpustakaan | WinHvPlatform.lib |
| DLL | WinHvPlatform.dll |
| Architecture | x64, Arm64 |
Baca juga
WHvUnmapVpciDeviceInterruptWHvRetargetVpciDeviceInterruptWHvRequestVpciDeviceInterruptWHvGetVpciDeviceInterruptTarget- Jenis Data PCI Virtual
- Definisi API Platform Hypervisor Windows