警告 C26112:调用方无法持有任何锁(在调用 <func> 函数前)。
注释 _Requires_no_locks_held_ 施加前提条件调用方不能容纳任何锁,当它调用函数时。发出 C26112 警告时,在它调用另一个函数之前不会释放所有锁。
示例
因为 _Requires_no_locks_held_ 前置条件由对 NoLocksAllowed 的调用在违反锁定节中,下面的示例生成警告 C26112。
typedef struct _DATA
{
CRITICAL_SECTION cs;
} DATA;
_Requires_no_locks_held_
void NoLocksAllowed(DATA* p)
{
// Lock sensitive operations here
}
void LocksHeldFunction(DATA* p)
{
EnterCriticalSection(&p->cs);
NoLocksAllowed(p); // Warning C26112
LeaveCriticalSection(&p->cs);
}