Advertencia C26110

El autor de la llamada no puede contener el bloqueo "lock" antes de llamar a la función "func".

Cuando se requiera un bloqueo, asegúrese de aclarar si la propia función o su autor de llamada deben adquirir el bloqueo. Advertencia C26110 se emite cuando hay una infracción de la _Requires_lock_held_ anotación u otras anotaciones relacionadas con el bloqueo. Para más información, consulte Anotación del comportamiento de bloqueo.

Ejemplo

En el ejemplo siguiente, se genera la advertencia C26110 porque la anotación _Requires_lock_held_ en la función LockRequired indica que el autor de la llamada de LockRequired debe adquirir el bloqueo antes de llamar a LockRequired. Sin esta anotación, LockRequired debe adquirir el bloqueo antes de acceder a los 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
}