Compartilhar via


C26110

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

Quando um bloqueio é necessário, verifique se a conta própria função ou o chamador deve adquirir o bloqueio.C26110 de aviso é emitido quando houver uma violação da anotação de _Requires_lock_held_ .

Exemplo

No exemplo a seguir, C26110 de aviso é gerado porque a anotação _Requires_lock_held_ na função LockRequired indica que o chamador de LockRequired deve adquirir o bloqueio antes de chamar LockRequired.Sem essa anotação, LockRequired tenha que adquirir o bloqueio antes de acessar todos os dados compartilhados protegidos pelo bloqueio.

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 
}