Condividi tramite


Dispatch IRQL Tracking

Per migliorare le prestazioni di sistema, alcune funzioni NDIS (ad esempio, la funzione MiniportSendNetBufferLists ) includono un flag di livello di invio che indica l'IRQL corrente. L'uso corretto del flag del livello di invio può aiutare a evitare tentativi non necessari di impostare IRQL.

Esistono altri flag che controllano altri attributi, ma i nomi per i flag del livello di invio sono:

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

Il chiamante deve determinare l'impostazione del flag del livello di invio dall'IRQL corrente nota, non eseguendo il test di IRQL. Ad esempio, l'utente conosce l'IRQL in quanto è una caratteristica immutabile della progettazione del driver, o perché il driver ha salvato l'IRQL corrente.

Se l'IRQL attuale noto è DISPATCH_LEVEL, il chiamante deve impostare questo flag. Se l'IRQL attuale è sconosciuto, o il chiamante non è in esecuzione al livello DISPATCH, il chiamante deve cancellare questo flag. Se il chiamante è NDIS, la funzione chiamata deve testare questo flag per evitare di modificare IRQL.

I driver non devono verificare l'IRQL per determinare il valore per il flag del livello di dispatch. Il collaudo vanificherebbe lo scopo dell'indicatore. Se necessario, la funzione chiamata può semplicemente eseguire il test stesso. Il modo in cui un driver determina che deve o non deve impostare il flag viene lasciato alla progettazione del driver specifico.