Поделиться через


Динамическая настройка 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 предоставляет указатель на эту структуру.)