Freigeben über


Dynamisches Konfigurieren von MSI-X

Windows Vista Service Pack 1 (SP1), Windows Server 2008 und höher unterstützen die dynamische Änderung der Eigenschaften von MSI-X-Interruptnachrichten. (Die PCI 3.0-Spezifikation hat MSI-X definiert.) Der PCI-Bustreiber macht die GUID_MSIX_TABLE_CONFIG_INTERFACE-Schnittstelle verfügbar, damit Treiber für PCI-Geräte die Einstellungen in der Bushardwareunterbrechungstabelle ändern können.

Treiber verwenden die Schnittstelle, indem sie eine IRP_MN_QUERY_INTERFACE-Anforderung an den Bustreiber senden, wobei der Parameter InterfaceType gleich GUID_MSIX_TABLE_CONFIG_INTERFACE ist. Der Bustreiber stellt einen Zeiger auf eine PCI_MSIX_TABLE_CONFIG_INTERFACE-Struktur bereit, die Zeiger auf drei Routinen bereitstellt, die die Interrupttabelle ändern:

  • SetTableEntry weist dem Hardwaretabelleneintrag eine Nachrichten-ID zu.

  • MaskTableEntry maskiert den Interrupt, der einem Hardwaretabelleneintrag entspricht.

  • EntmaskTableEntry hebt dieMassierung des Interrupts auf, der einem Hardwaretabelleneintrag entspricht.

Standardmäßig ist die Interrupttabelle so konfiguriert, dass der erste Eintrag die Meldungs-ID Null, der zweite Eintrag die Nachrichten-ID 1 usw. aufweist. Wenn die Anzahl der Tabelleneinträge die Anzahl der Nachrichten überschreitet, wird jedem zusätzlichen Tabelleneintrag die Meldungs-ID 0 zugewiesen. (Die Nachrichten-ID ist der Index für den Eintrag des Interrupts im MessageInfo-Member der IO_INTERRUPT_MESSAGE_INFO-Struktur , die die nachrichtensignalierten Interrupts des Treibers beschreibt. Die IoConnectInterruptEx-Routine stellt einen Zeiger auf diese Struktur bereit.)