Avertissement C26111
L’appelant n’a pas réussi à libérer le verrou « lock » avant d’appeler la fonction « func ».
L’annotation _Requires_lock_not_held_
impose une condition préalable selon laquelle le nombre de verrous pour le verrou spécifié ne peut pas être supérieur à zéro lorsque la fonction est appelée. Avertissement C26111 est émis lorsqu’une fonction ne parvient pas à libérer le verrou avant d’appeler une autre fonction.
Exemple
L’exemple suivant génère l’avertissement C26111, car la _Requires_lock_not_held_
condition préalable est violée par l’appel à DoNotLock
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);
}