C26111
Advertencia C26111: Error del llamador al desbloquear <bloqueo> antes de llamar a la función <función>.
La anotación _Requires_lock_not_held_ impone la condición previa de que el recuento de bloqueo para el bloqueo especificado no puede ser mayor que cero cuando se llama a la función.Se produce la advertencia C26111 cuando una función no libera el bloqueo antes de llamar a otra función.
Ejemplo
El ejemplo siguiente genera la advertencia C26111 porque se infringe la condición previa _Requires_lock_not_held_ mediante la llamada a DoNotLock dentro de la sección bloqueada.
typedef struct _DATA
{
CRITICAL_SECTION cs;
int d;
} DATA;
_Requires_lock_not_held_(p->cs)
void DoNotLock(DATA* p)
{
EnterCriticalSection(&p->cs);
p->d = 0;
LeaveCriticalSection(&p->cs);
}
void LockedFunction(DATA* p)
{
EnterCriticalSection(&p->cs);
DoNotLock(p); // Warning C26111
LeaveCriticalSection(&p->cs);
}