Gestione di un interruzione del servizio gestito
NDIS chiama la funzione MiniportMessageInterrupt quando una scheda di interfaccia di rete (NIC) genera un interruzione. Il parametro MessageId in questa funzione identifica il messaggio MSI-X.
MiniportMessageInterrupt deve sempre restituire TRUE dopo l'elaborazione dell'interruzione perché gli interruzioni del messaggio non sono condivisi.
Un driver miniport deve fare il meno possibile nella sua funzione MiniportMessageInterrupt . Il driver deve rinviare le operazioni di I/O alla funzione MiniportMessageInterruptDpc , che chiama NDIS per completare l'elaborazione posticipata di un interruzione.
Per accodare chiamate di routine posticipate aggiuntive dopo il ritorno di MiniportMessageInterrupt , il driver miniport imposta i bit del parametro TargetProcessors della funzione MiniportMessageInterrupt . Per richiedere dati DPC aggiuntivi da MiniportMessageInterrupt o MiniportMessageInterruptDPC, il driver miniport può chiamare la funzione NdisMQueueDpc .
Il driver miniport può chiamare NdisMQueueDpc per richiedere schede DPC aggiuntive per altri processori.
NDIS 6.1 e versioni successive garantisce che i controller di dominio per messaggi diversi pianificati per la stessa CPU vengano accodati separatamente. Ad esempio, se un driver miniport pianifica due controller di rete contemporaneamente sulla CPU 1 (un DPC per il messaggio 0 e l'altro DPC per il messaggio 1), due CONTROLLER di dominio vengono accodati per CPU 1 (uno DPC con messaggio 0 e l'altro DPC con messaggio 1).
NDIS garantisce inoltre che i controller di dominio per lo stesso messaggio pianificato in CPU diversi vengano accodati separatamente. Ad esempio, se un driver miniport pianifica due DPC (una DPC sulla CPU 0 per il messaggio 0 e una DPC sulla CPU 1 per il messaggio 0), due DPC separati vengono accodati sulla CPU 0 e sulla CPU 1, entrambi per il messaggio 0.