Configurazione dinamica di MSI-X
Windows Vista Service Pack 1 (SP1), Windows Server 2008 e sistemi operativi successivi supportano la modifica dinamica delle proprietà dei messaggi di interruzione MSI-X. (Specifica PCI 3.0 definita MSI-X. Il driver del bus PCI espone l'interfaccia GUID_MSIX_TABLE_CONFIG_INTERFACE per consentire ai driver ai dispositivi PCI di modificare le impostazioni nella tabella di interruzione hardware del bus.
I driver usano l'interfaccia inviando una richiesta di IRP_MN_QUERY_INTERFACE al driver del bus, con il parametro InterfaceType uguale a GUID_MSIX_TABLE_CONFIG_INTERFACE. Il driver del bus fornisce un puntatore a una struttura PCI_MSIX_TABLE_CONFIG_INTERFACE , che fornisce puntatori a tre routine che modificano la tabella di interruzione:
SetTableEntry assegna un ID messaggio alla voce della tabella hardware.
MaskTableEntry maschera l'interruzione corrispondente a una voce della tabella hardware.
UnmaskTableEntry annulla il mascheramento dell'interruzione corrispondente a una voce di tabella hardware.
Per impostazione predefinita, la tabella di interruzione è configurata in modo che la prima voce abbia l'ID messaggio zero, la seconda voce ha l'ID messaggio 1 e così via. Se il numero di voci della tabella supera il numero di messaggi, ogni voce di tabella aggiuntiva viene assegnata con ID messaggio zero. L'ID messaggio è l'indice per la voce dell'interruzione nel membro MessageInfodella struttura IO_INTERRUPT_MESSAGE_INFO che descrive gli interruzioni del messaggio del driver. La routine IoConnectInterruptEx fornisce un puntatore a questa struttura.