C26111
警告 C26111:调用方未能解除锁 <lock>(在调用函数 <func> 前)。
注释 _Requires_lock_not_held_ 施加指定的锁的锁计数大于零不能大于的一个前置条件,在函数调用时。发出 C26111 警告时,函数不会释放锁,则会调用另一个函数。
示例
因为 _Requires_lock_not_held_ 前置条件由对 DoNotLock 的调用在违反锁定节中,下面的示例生成警告 C26111。
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);
}