C28167

предупреждение C28167: функция изменяет IRQL и не восстанавливает IRQL перед выходом. Оно должно быть аннотировано, чтобы отразить изменение или IRQL необходимо восстановить.

Это предупреждение указывает на то, что следующие условия имеют значение true:

  • Функция изменяет IRQL, в которой выполняется драйвер.

  • Существует по крайней мере один путь через функцию, которая не выполняется, путем выхода функции, восстановите IRQL до исходного IRQL, который драйвер выполнялся при записи функции.

Это предупреждение возникает, когда требуется заметка IRQL для функции, но она не существует.

Чтобы избежать этого предупреждения, драйвер должен правильно сохранить начальное значение IRQL и восстановить то же значение IRQL при выходе функции, если он не намеревался изменить IRQL.

Функции, которые намеренно изменяют IRQL на значение, отличное от IRQL, при котором драйвер работал в записи функции, должен быть заметен, чтобы указать это поведение. Например, можно использовать заметку _IRQL_raises_(irql), чтобы указать, что функция изменяет IRQL из IRQL, в которой была вызвана функция. Можно также сохранить и восстановить значение IRQL и применить соответствующие заметки (_IRQL_saves_, _IRQL_restores_). Заметка будет подавлять это предупреждение. Дополнительные сведения см. в заметках IRQL для драйверов. Функции, изменяющие IRQL по ошибке, должны быть исправлены.