Partilhar via


C26111

Aviso C26111: Chamador falhando ao tentar liberar o bloqueio <lock> antes de chamar a função <fun>.

A anotação _Requires_lock_not_held_ impor um pré-requisito que a contagem de bloqueio do bloqueio especificado não pode ser maior que zero quando a função é chamada.C26111 de aviso é emitido quando uma função não libera o bloqueio antes que chama outra função.

Exemplo

O exemplo a seguir gerenciar C26111 de aviso porque a pré-requisito de _Requires_lock_not_held_ é violada pela chamada a DoNotLock na seção bloqueado.

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);
}