Compartir a través de


C26112

advertencia C26112: El llamador no puede contener ningún bloqueo antes de llamar a <func>.

La anotación _Requires_no_locks_held_ impone una precondición de que el llamador no debe contener ningún bloqueo mientras llama a la función.Advertencia C26112 emitida cuando una función no puede liberar todos los bloqueos antes de llamar a otra función.

Ejemplo

El ejemplo siguiente genera la advertencia C26112 porque la condición previa de _Requires_no_locks_held_ es infringida mediante la llamada a NoLocksAllowed dentro de la sección bloqueada.

typedef struct _DATA 
{
    CRITICAL_SECTION cs;
} DATA;

_Requires_no_locks_held_ 

void NoLocksAllowed(DATA* p)
{
     // Lock sensitive operations here
}

void LocksHeldFunction(DATA* p) 
{ 
    EnterCriticalSection(&p->cs); 
    NoLocksAllowed(p); // Warning C26112
    LeaveCriticalSection(&p->cs);
}