C28144
警告 C28144: キャンセルルーチン内では、終了時点で、Irp->CancelIrqlのIRQLが現在のIRQLである必要があります。
追加情報 |
値は特定の関数によって復元する必要はありませんが、終了する前に復元する必要があります。 PREfast は、必要な値に復元されたかどうかを判断できませんでした。 |
ドライバーのキャンセルルーチンが終了すると、Irp->CancelIrql メンバーの値は現在の IRQL ではなくなります。 通常、このエラーは、ドライバーが IoAcquireCancelSpinLock への最新の呼び出しによって提供された IRQL を使用して IoReleaseCancelSpinLockを呼び出さない場合に発生します。
キャンセルルーチンの詳細については、IRPsのキャンセリングを参照。 この警告に特有の情報については、IRPsをキャンセする際に考慮すべき点を参照してください。
例
次のコード例では、この警告が表示されます。
IoReleaseCancelSpinLock(PASSIVE_LEVEL);
次のコード例では、この警告を回避します。
IoReleaseCancelSpinLock(Irp->CancelIrql);