Invio del rilevamento IRQL
Per migliorare le prestazioni del sistema, alcune funzioni NDIS( ad esempio, la funzione MiniportSendNetBufferLists ) includono un flag a livello di invio che indica l'oggetto IRQL corrente. L'uso appropriato del flag a livello di invio può aiutare a evitare tentativi non necessari per impostare IRQL.
Esistono altri flag che controllano altri attributi, ma i nomi per i flag a 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 a livello di invio dal noto IRQL, non testando irQL. Ad esempio, si conosce irQL perché è una caratteristica fissa della progettazione del driver o il driver ha salvato l'IRQL corrente.
Se il irQL corrente noto è DISPATCH_LEVEL, il chiamante deve impostare questo flag. Se irQL corrente è sconosciuto o il chiamante non è in esecuzione in DISPATCH_LEVEL, il chiamante deve cancellare questo flag. Se il chiamante è NDIS, la funzione denominata deve testare questo flag per evitare di modificare irQL.
I driver non devono testare per irQL per determinare il valore per il flag a livello di invio. Il test avrebbe sconfitto lo scopo del flag. Se necessario, la funzione chiamata può semplicemente eseguire il test stesso. Come un driver determina che deve o non impostare il flag viene lasciato alla progettazione del driver specifico.