Partager via


Configuration dynamique de MSI-X

Windows Vista Service Pack 1 (SP1), Windows Server 2008 et versions ultérieures prennent en charge la modification dynamique des propriétés des messages d’interruption MSI-X. (La spécification PCI 3.0 définie MSI-X.) Le pilote de bus PCI expose l’interface GUID_MSIX_TABLE_CONFIG_INTERFACE pour permettre aux pilotes pour les périphériques PCI de modifier les paramètres de la table d’interruption matérielle du bus.

Les pilotes utilisent l’interface en envoyant une requête IRP_MN_QUERY_INTERFACE au pilote de bus, avec le paramètre InterfaceType égal à GUID_MSIX_TABLE_CONFIG_INTERFACE. Le pilote de bus fournit un pointeur vers une structure PCI_MSIX_TABLE_CONFIG_INTERFACE , qui fournit des pointeurs vers trois routines qui modifient la table d’interruptions :

  • SetTableEntry affecte un ID de message à l’entrée de table matérielle.

  • MaskTableEntry masque l’interruption correspondant à une entrée de table matérielle.

  • UnmaskTableEntry annule l’interruption correspondant à une entrée de table matérielle.

Par défaut, la table d’interruptions est configurée afin que la première entrée ait l’ID de message zéro, la deuxième entrée a l’ID de message 1, et ainsi de suite. Si le nombre d’entrées de table dépasse le nombre de messages, chaque entrée de table supplémentaire est affectée à l’ID de message zéro. (L’ID de message est l’index de l’entrée de l’interruption dans le membre MessageInfo de la structure IO_INTERRUPT_MESSAGE_INFO qui décrit les interruptions signalées par le message du pilote. La routine IoConnectInterruptEx fournit un pointeur vers cette structure.)