Динамическая настройка MSI-X
Windows Vista с пакетом обновления 1 (SP1), Windows Server 2008 и более поздних версий поддерживают динамическое изменение свойств сообщений о прерываниях MSI-X. (Спецификация PCI 3.0, определенная MSI-X.) Драйвер шины PCI предоставляет интерфейс GUID_MSIX_TABLE_CONFIG_INTERFACE, чтобы позволить водителям устройств PCI изменять параметры в таблице аппаратных прерываний шины.
Драйверы используют интерфейс , отправляя IRP_MN_QUERY_INTERFACE запрос драйверу шины с параметром InterfaceType , равным GUID_MSIX_TABLE_CONFIG_INTERFACE. Водитель шины предоставляет указатель на структуру PCI_MSIX_TABLE_CONFIG_INTERFACE , которая предоставляет указатели на три процедуры, которые изменяют таблицу прерываний:
SetTableEntry назначает идентификатор сообщения записи таблицы оборудования.
MaskTableEntry маскирует прерывание, соответствующее записи аппаратной таблицы.
UnmaskTableEntry распаковка прерывания, соответствующего записи аппаратной таблицы.
По умолчанию таблица прерываний настроена таким образом, что первая запись имеет нулевой идентификатор сообщения, вторая запись имеет идентификатор сообщения и т. д. Если количество записей таблицы превышает количество сообщений, каждой дополнительной записи таблицы присваивается нулевой идентификатор. (Идентификатор сообщения — это индекс записи прерывания в элементе MessageInfoструктуры IO_INTERRUPT_MESSAGE_INFO , описывающей прерывания, сигнализированные драйвером. Подпрограмма IoConnectInterruptEx предоставляет указатель на эту структуру.)