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.
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
}