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


C28144

предупреждение C28144: в рамках подпрограммы отмены в точке выхода IRQL в Irp->CancelIrql должен быть текущим IRQL.

Дополнительные сведения

Значение не должно быть восстановлено какой-либо конкретной функцией, но необходимо восстановить перед выходом. PREfast не удалось определить, что он был восстановлен в требуемое значение.

Когда завершается завершение процедуры отмены драйвера, значение элемента Irp->CancelIrql не является текущим элементом IRQL. Как правило, эта ошибка возникает, когда драйвер не вызывает IoReleaseCancelSpinLock с помощью IRQL, предоставленного последним вызовом IoAcquireCancelSpinLock.

Дополнительные сведения о подпрограммах отмены см. в разделе ОтменаIRPs. Сведения, относящиеся к этому предупреждению, см. в разделе точки, которые следует учитывать при отменеIRP.

Пример

Следующий пример кода вызывает это предупреждение.

IoReleaseCancelSpinLock(PASSIVE_LEVEL);

Следующий пример кода избегает этого предупреждения.

IoReleaseCancelSpinLock(Irp->CancelIrql);