Avviso C26111
Il chiamante non riesce a rilasciare il blocco 'lock' prima di chiamare la funzione 'func'.
L'annotazione _Requires_lock_not_held_
impone una precondizione che il conteggio dei blocchi per il blocco specificato non può essere maggiore di zero quando viene chiamata la funzione. L'avviso C26111 viene generato quando una funzione non riesce a rilasciare il blocco prima di chiamare un'altra funzione.
Esempio
L'esempio seguente genera l'avviso C26111 perché la _Requires_lock_not_held_
precondizione viene violata dalla chiamata a DoNotLock
all'interno della sezione bloccata.
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);
}
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per