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