C28167
Warnung C28167: Die Funktion ändert den IRQL und stellt den IRQL nicht wieder her, bevor er beendet wird. Es sollte kommentiert werden, um die Änderung widerzuspiegeln, oder der IRQL sollte wiederhergestellt werden.
Diese Warnung gibt an, dass die folgenden Bedingungen erfüllt sind:
Die Funktion ändert den IRQL, an dem der Treiber ausgeführt wird.
Es gibt mindestens einen Pfad durch eine Funktion, die den IRQL nicht durch Funktionsausgang auf die ursprüngliche IRQL wiederherstellt, die der Treiber beim Funktionseintrag ausgeführt hat.
Diese Warnung tritt auf, wenn eine IRQL-Anmerkung für eine Funktion erforderlich ist, aber keine vorhanden ist.
Um diese Warnung zu vermeiden, muss der Treiber den anfänglichen IRQL-Wert ordnungsgemäß speichern und denselben IRQL-Wert beim Beenden der Funktion wiederherstellen, wenn er nicht beabsichtigt, den IRQL zu ändern.
Funktionen, die den IRQL absichtlich in einen Wert ändern, der sich von dem IRQL unterscheidet, bei dem der Treiber beim Funktionseintrag ausgeführt wurde, sollten kommentiert werden, um dieses Verhalten anzugeben. Sie können beispielsweise die _IRQL_raises_(irql)-Anmerkung verwenden, um anzugeben, dass die Funktion den IRQL von dem IRQL ändert, bei dem die Funktion aufgerufen wurde. Sie können auch den IRQL-Wert speichern und wiederherstellen und die entsprechenden Anmerkungen (_IRQL_saves_, _IRQL_restores_) anwenden. Die Anmerkung unterdrückt diese Warnung. Weitere Informationen finden Sie unter IRQL-Anmerkungen für Treiber. Funktionen, die den IRQL versehentlich ändern, sollten behoben werden.