Condividi tramite


C26110

warning C26110: Il chiamante non riesce a mantenere il blocco <lock> prima di chiamare la funzione <func>.

Quando un blocco è richiesto, è necessario chiarire se la funzione stessa o il relativo chiamante deve acquisire il blocco.L'avviso C26110 viene generato quando si verifica una violazione dell'annotazione _Requires_lock_held_.

Esempio

Nell'esempio seguente, l'avviso C26110 viene generato perché l'annotazione _Requires_lock_held_ sugli stati LockRequired della funzione che il chiamante di LockRequired deve acquisire il blocco prima di chiamare LockRequired.Senza questa annotazione, LockRequired deve acquisire il blocco prima di accedere ad ogni dato condiviso coperto 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 
}