Поделиться через


C28167

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

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

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

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

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

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

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