C28104C28104

Advertencia C28104: recurso que debería haber adquirido antes de salir de la función no se ha adquiridowarning C28104: Resource that should have been acquired before function exit was not acquired

Se cerró una función que está diseñada para adquirir un recurso antes de salir sin adquirir el recurso.A function that is intended to acquire a resource before it exits has exited without acquiring the resource. Esta advertencia indica que la función está anotada con __drv_acquiresResource pero no devuelve realmente adquirir el recurso.This warning indicates that the function is annotated with __drv_acquiresResource but does not return having actually acquired the resource. Si esta función es una función de contenedor, una ruta de acceso a través de la función no ha llegado a la función encapsulada.If this function is a wrapper function, a path through the function did not reach the wrapped function. Si no se ha podido alcanzar la función ajustada es porque la función devuelve un error y no lo adquirió realmente el recurso, tendrá que utilizar una anotación condicional (__drv_when).If the failure to reach the wrapped function is because the function returned an error and did not actually acquire the resource, you might need to use a conditional annotation (__drv_when).

Si esta función implementa realmente la adquisición del recurso, no sería posible para PFD detectar que se adquiere el recurso.If this function actually implements the acquisition of the resource, it might not be possible for PFD to detect that the resource is acquired. En ese caso, use un #pragma advertencia para suprimir el error.In that case, use a #pragma warning to suppress the error. Probablemente se puede colocar el #pragma en la línea anterior el { que comienza el cuerpo de la función.You can probably place the #pragma on the line preceding the { that begins the function body. Las funciones de llamada sigue necesitan la anotación, pero no será capaz de detectar que se ha adquirido el recurso de la herramienta de análisis de código.The calling functions still need the annotation, but the Code Analysis tool will not be able to detect that the resource was acquired.

EjemploExample

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