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