Condividi tramite


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. (La specifica PCI 3.0 ha definito MSI-X.) Il driver del bus PCI espone l'interfaccia GUID_MSIX_TABLE_CONFIG_INTERFACE per consentire ai driver dei dispositivi PCI di modificare le impostazioni nella tabella degli interrupt dell'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 degli interrupt:

  • SetTableEntry assegna un ID messaggio alla voce della tabella hardware.

  • MaskTableEntry maschera l'interrupt associato a una voce della tabella hardware.

  • UnmaskTableEntry rimuove la maschera dell'interrupt corrispondente a una voce di tabella hardware.

Per impostazione predefinita, la tabella interrupt è configurata in modo che la prima voce abbia l'ID messaggio zero, la seconda ha l'ID messaggio 1 e così via. Se il numero di voci di tabella supera il numero di messaggi, a ogni voce di tabella aggiuntiva viene assegnato l'ID messaggio zero. L'ID del messaggio è l'indice dell'entry dell'interrupt nel membro MessageInfo della struttura IO_INTERRUPT_MESSAGE_INFO che descrive gli interrupt a segnalazione di messaggio del driver. La routine IoConnectInterruptEx fornisce un puntatore a questa struttura.