Condividi tramite


Avviso C26110

Il chiamante non riesce a contenere il blocco 'lock' prima di chiamare la funzione 'func'.

Quando è necessario un blocco, assicurarsi di chiarire se la funzione stessa o il chiamante deve acquisire il blocco. L'avviso C26110 viene generato quando si verifica una violazione dell'annotazione _Requires_lock_held_ o di altre annotazioni correlate al blocco. Per altre informazioni, vedere Annotazione del comportamento di blocco

Esempio

Nell'esempio seguente viene generato l'avviso C26110 perché l'annotazione _Requires_lock_held_ sulla funzione LockRequired indica che il chiamante di deve acquisire il blocco prima di LockRequired chiamare LockRequired. Senza questa annotazione, LockRequired deve acquisire il blocco prima di accedere ai dati condivisi protetti dal blocco.

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
}