Partilhar via


C28144

aviso C28144: dentro de uma rotina de cancelamento, no ponto de saída, o IRQL em Irp-CancelIrql> deve ser o IRQL atual.

Informações adicionais

O valor não precisa ser restaurado por nenhuma função específica, mas deve ser restaurado antes da saída. O PREfast não pôde determinar se foi restaurado para o valor necessário.

Quando a rotina Cancelar do driver é encerrada, o valor do membro Irp-CancelIrql> não é o IRQL atual. Normalmente, esse erro ocorre quando o driver não chama IoReleaseCancelSpinLock com o IRQL que foi fornecido pela chamada mais recente para IoAcquireCancelSpinLock.

Para obter mais informações sobre Cancelar rotinas, consulte Cancelando IRPs. Para obter informações específicas a esse aviso, consulte Pontos a serem considerados ao cancelar IRPs.

Exemplo

O exemplo de código a seguir gera esse aviso.

IoReleaseCancelSpinLock(PASSIVE_LEVEL);

O exemplo de código a seguir evita esse aviso.

IoReleaseCancelSpinLock(Irp->CancelIrql);