Partager via


Suivi du Dispatcheur IRQL

Pour améliorer les performances du système, certaines fonctions NDIS (par exemple, la fonction MiniportSendNetBufferLists) incluent un indicateur de niveau de dispensation qui indique le niveau IRQL actuel. L’utilisation appropriée de l’indicateur de niveau de dispatch peut aider à éviter les tentatives inutiles de définir l'IRQL.

Il existe d’autres indicateurs qui contrôlent d’autres attributs, mais les noms des indicateurs de niveau de distribution sont les suivants :

NDIS_SEND_FLAGS_DISPATCH_LEVEL

NDIS_SEND_COMPLETE_FLAGS_DISPATCH_LEVEL

NDIS_RECEIVE_FLAGS_DISPATCH_LEVEL

NDIS_RETURN_FLAGS_DISPATCH_LEVEL

NDIS_RWL_AT_DISPATCH_LEVEL

L’appelant doit déterminer le paramètre d’indicateur de niveau de distribution à partir du runtime d’intégration actuel connu, et non en testant le runtime d’intégration. Par exemple, vous connaissez l'IRQL car il s'agit d'une caractéristique fixe de la conception du pilote, ou le pilote a enregistré l'IRQL actuel.

Si l'IRQL actuel connu est DISPATCH_LEVEL, l'appelant doit régler cet indicateur. Si l'IRQL actuel est inconnu ou si l'appelant n'exécute pas à DISPATCH_LEVEL, l'appelant doit effacer cet indicateur. Si l’appelant est NDIS, la fonction appelée doit tester cet indicateur pour éviter de modifier le runtime d’intégration.

Les pilotes ne doivent pas tester l’IRQL pour déterminer la valeur de l’indicateur de niveau de distribution. Les tests vaincraient l’objectif du drapeau. Si nécessaire, la fonction appelée peut simplement effectuer le test lui-même. La façon dont un pilote détermine qu’il doit ou ne doit pas définir l’indicateur est laissé à la conception du pilote particulier.