Freigeben über


C26111

Warnung C26111: Anrufer nicht Sperre <lock> vor dem Aufruf der Funktion <func>.

Die Anmerkung _Requires_lock_not_held_ erlegt eine Voraussetzung, dass die Sperrenanzahl für die angegebene Sperre größer als Null sein kann, wenn die Funktion aufgerufen wird.C26111 Warnung wird ausgegeben, wenn eine Funktion fehlschlägt, um die Sperre aufzuheben, bevor sie eine andere Funktion aufruft.

Beispiel

Im folgende Beispiel wird C26111 Warnung generiert, da die _Requires_lock_not_held_ Voraussetzung verletzt, indem Sie den Aufruf von DoNotLock in dem gesperrten Abschnitt.

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