Condividi tramite


Avviso C26112

Il chiamante non può contenere alcun blocco prima di chiamare 'func'.

L'annotazione _Requires_no_locks_held_ impone una precondizione che il chiamante non deve contenere alcun blocco mentre chiama la funzione. L'avviso C26112 viene generato quando una funzione non riesce a rilasciare tutti i blocchi prima di chiamare un'altra funzione.

Esempio

L'esempio seguente genera l'avviso C26112 perché la _Requires_no_locks_held_ precondizione viene violata dalla chiamata a NoLocksAllowed all'interno della sezione bloccata.

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);
}