Partager via


C26111

avertissement C26111 : L'appellant n'as pas réussi à garder le vérou <lock> avant l'appel de la fonction <func>.

L'annotation _Requires_lock_not_held_ applique une condition préalable qui le nombre de verrous du verrou spécifié ne peut pas être supérieur à zéro lorsque la fonction est appelée.C26111 avertissement est émis lorsque la fonction ne libère pas tous les verrous avant qu'elle appelle une autre fonction.

Exemple

L'exemple suivant génère C26111 d'avertissement parce que la condition préalable de _Requires_lock_not_held_ est violée par l'appel à DoNotLock dans la section verrouillée.

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