다음을 통해 공유


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을 변경하는 함수를 수정해야 합니다.