C26111
Предупреждение C26111: Вызывающей стороне не удается освободить блокировку <блокировка> до вызова функции <функция>.
Примечание _Requires_lock_not_held_ налагает предварительное условие о том, что при вызове функции количество блокировок для указанной блокировки не может быть больше нуля.Предупреждение C26111 выдается, если функция не может освободить блокировку, прежде чем будет вызвана другая функция.
Пример
В следующем примере возникает предупреждение C26111, поскольку предварительное условие _Requires_lock_not_held_ нарушено вызовом DoNotLock в заблокированном разделе.
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);
}