Compartilhar via


C28104

warning C28104: Recurso que deveria ter sido adquirido antes da saída da função não foi adquirido

Uma função cuja intenção é adquirir um recurso antes de sair, saiu sem adquirir o recurso.Este aviso indica que a função está anotada com __drv_acquiresResource mas não retorna tendo realmente adquirido o recurso.Se essa função é uma função de envoltório, um caminho da função não alcançou a função envolvida.Se a falha de atingir a função envolvida é porque a função retornou um erro e não adquiriu realmente o recurso, talvez você precise usar uma anotação condicional (__drv_when).

Se esta função realmente implementa a aquisição de recurso, talvez não seja possível para PFD detectar que o recurso é adquirido.Nesse caso, use #pragma para suprimir o erro.Você provavelmente pode colocar #pragma na linha antes do { que inicia o corpo da função.Funções de chamada ainda precisam da anotação, mas a ferramenta de análise de código não poderá detectar que o recurso foi adquirido.

Exemplo

__drv_acquireResourceGlobal(HWLock, lockid)
void GetHardwareLock(lockid)
#pragma warning (suppress: 28104)
{
   // code to implement a hardware lock (which the Code Analysis tool can't recognize)
}