Share via


IrQL-Nachverfolgung senden

Um die Systemleistung zu verbessern, enthalten einige NDIS-Funktionen (z. B. die MiniportSendNetBufferLists-Funktion ) ein Flag auf Versandebene, das den aktuellen IRQL angibt. Die ordnungsgemäße Verwendung des Flags für die Verteilerebene kann dazu beitragen, unnötige Versuche zum Festlegen des IRQL zu vermeiden.

Es gibt andere Flags, die andere Attribute steuern, aber die Namen für die Flags der Verteilerebene sind:

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

Der Aufrufer muss die Einstellung des Flags für die Verteilerebene aus dem bekannten aktuellen IRQL bestimmen, nicht durch Testen des IRQL. Sie kennen beispielsweise den IRQL, weil es sich um ein festes Merkmal des Treiberentwurfs handelt, oder weil der Treiber den aktuellen IRQL gespeichert hat.

Wenn die bekannte aktuelle IRQL DISPATCH_LEVEL ist, sollte der Aufrufer dieses Flag festlegen. Wenn die aktuelle IRQL unbekannt ist oder der Aufrufer nicht DISPATCH_LEVEL ausgeführt wird, sollte der Aufrufer dieses Flag löschen. Wenn der Aufrufer NDIS ist, sollte die aufgerufene Funktion dieses Flag testen, um eine Änderung des IRQL zu vermeiden.

Treiber sollten nicht testen, ob der IRQL den Wert für das Flag der Verteilerebene bestimmt. Tests würden den Zweck des Flags verfehlen. Bei Bedarf kann die aufgerufene Funktion den Test einfach selbst durchführen. Wie ein Treiber feststellt, dass er das Flag festlegen soll oder nicht, bleibt dem Design des jeweiligen Treibers überlassen.