C26111
Aviso C26111: Falha ao liberar bloqueio <lock> do chamador antes de chamar a função <func>.
A anotação _Requires_lock_not_held_ impõe uma pré-condição que a contagem de bloqueio de bloqueio especificado não pode ser maior que zero quando a função é chamada.C26111 de aviso é emitido quando uma função falha liberar o bloqueio antes de chamar outra função.
Exemplo
O exemplo a seguir gera aviso C26111 porque o _Requires_lock_not_held_ pré-condição é violada pela chamada para DoNotLock dentro da seção 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);
}