Compartir a través de


Advertencia C26112

El autor de la llamada no puede contener ningún bloqueo antes de llamar a "func".

La anotación _Requires_no_locks_held_ impone la condición previa de que el autor de la llamada no debe contener ningún bloqueo mientras llama a la función. La advertencia C26112 se emite cuando una función no libera todos los bloqueos antes de llamar a otra función.

Ejemplo

En el ejemplo siguiente se genera la advertencia C26112 porque la condición previa _Requires_no_locks_held_ se infringe en 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);
}