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
}