Compartir a través de


C26110

Advertencia C26110: llamador que no mantiene el bloqueo de <lock> antes de llamar a la función <func>.

Cuando se requiere un bloqueo, asegúrese de clarificar si la propia función o su llamador adquiere el bloqueo.La advertencia C26110 se emite cuando hay una infracción de anotación de _Requires_lock_held_.

Ejemplo

En el ejemplo siguiente, se genera la advertencia C26110 porque la anotación _Requires_lock_held_ en la función LockRequired establece que el llamador LockRequired debe adquirir el bloqueo antes de llamar a LockRequired.Sin esta anotación, LockRequired debe adquirir el bloqueo antes de tener acceso a datos compartidos protegidos por el bloqueo.

typedef struct _DATA 
{
    CRITICAL_SECTION cs;
    int d;
} DATA;

_Requires_lock_held_(p->cs)

void LockRequired(DATA* p)
{
    p->d = 0;
}

void LockNotHeld(DATA* p) 
{ 
    LockRequired(p); // Warning C26110 
}