Freigeben über


Warnung C26111

Der Aufrufer hat vor dem Aufrufen der Funktion "func" die Sperre nicht losgelassen.

Die Anmerkung _Requires_lock_not_held_ stellt eine Voraussetzung fest, dass die Sperranzahl für die angegebene Sperre nicht größer als Null sein kann, wenn die Funktion aufgerufen wird. Warnung C26111 wird ausgegeben, wenn eine Funktion die Sperre nicht loslassen kann, bevor sie eine andere Funktion aufruft.

Beispiel

Im folgenden Beispiel wird die Warnung C26111 generiert, da die _Requires_lock_not_held_ Voraussetzung durch den Aufruf DoNotLock innerhalb des gesperrten Abschnitts verletzt wird.

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