Compartir a través de


C28104

advertencia C28104: El recurso que debería haberse adquirido antes de salir de la función no se ha adquirido

Una función que está diseñada para adquirir un recurso antes de salir ha salido sin la adquisición del recurso.Esta advertencia indica que la función está anotada con __drv_acquiresResource pero no devuelve el hecho de haber adquirido realmente el recurso.Si ésta es una función contenedora, una ruta a través de la función no alcanzó la función encapsulada.Si el error para alcanzar la función contenedora se debe a que la función devolvió un error y no adquirió realmente el recurso, quizá sea necesario utilizar una anotación condicional (__drv_when).

Si esta función implementa realmente la adquisición de recursos, PFD podría no detectar que el recurso fue adquirido.En ese caso, utilice una advertencia #pragma para eliminar el error.Probablemente se pueda colocar la #pragma en la línea anterior al { que inicia el cuerpo de la función.Las funciones de llamada aún necesitan anotación, pero la herramienta de análisis de código no podrá detectar que el recurso fue adquirido.

Ejemplo

__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)
}