Avertissement C26112

L’appelant ne peut pas contenir de verrou avant d’appeler « func ».

L’annotation _Requires_no_locks_held_ impose une condition préalable que l’appelant ne doit contenir aucun verrou pendant qu’il appelle la fonction. Avertissement C26112 est émis lorsqu’une fonction ne parvient pas à libérer tous les verrous avant d’appeler une autre fonction.

Exemple

L’exemple suivant génère l’avertissement C26112, car la _Requires_no_locks_held_ condition préalable est violée par l’appel à NoLocksAllowed la section verrouillée.

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