C26111
Warnung C26111: Fehler des Aufrufers beim Lösen der Sperre <Sperre>, bevor die Funktion <func> aufgerufen wird.
Die Anmerkung _Requires_lock_not_held_ erzwingt eine Vorbedingung auf, die die Sperrenanzahl für die angegebene Sperre nicht größer null sein kann, wenn die Funktion aufgerufen wird.Warnung C26111 wird ausgegeben, wenn eine Funktion nicht die Sperre aufheben kann, bevor eine andere Funktion aufruft.
Beispiel
Im folgenden Beispiel wird die Warnung C26111, da die _Requires_lock_not_held_ Vorbedingung durch den Aufruf von DoNotLock im gesperrten Abschnitts verstoßen 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);
}