Partilhar via


C26112

Aviso C26112: chamador não pode conter qualquer bloqueio antes de chamar <func>.

A anotação _Requires_no_locks_held_ impõe uma pré-condição que o chamador não deve conter qualquer bloqueio enquanto chama a função.C26112 de aviso é emitido quando uma função falha liberar todos os bloqueios antes de chamar outra função.

Exemplo

O exemplo a seguir gera aviso C26112 porque o _Requires_no_locks_held_ pré-condição é violada pela chamada para NoLocksAllowed dentro da seção bloqueada.

typedef struct _DATA 
{
    CRITICAL_SECTION cs;
} DATA;

_Requires_no_locks_held_ 

void NoLocksAllowed(DATA* p)
{
     // Lock sensitive operations here
}

void LocksHeldFunction(DATA* p) 
{ 
    EnterCriticalSection(&p->cs); 
    NoLocksAllowed(p); // Warning C26112
    LeaveCriticalSection(&p->cs);
}