Dela via


Varning C26111

Påringaren misslyckades med att släppa låset innan funktionen anropades.

Anmärkningar

_Requires_lock_not_held_ Anteckningen medför en förutsättning för att antalet lås för det angivna låset inte får vara större än noll när funktionen anropas. Varning C26111 utfärdas när en funktion inte kan frigöra låset innan den anropar en annan funktion.

Example

I följande exempel genereras varning C26111 eftersom förhandsvillkoret _Requires_lock_not_held_ överträds av anropet till DoNotLock i det låsta avsnittet.

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