调用方在调用函数“func”之前未能保留锁“lock”。
注解
当需要锁时,请确保弄清函数本身还是它的调用方需要锁。 当违反 _Requires_lock_held_ 注释或其他与锁定相关的注释时,将发出警告 C26110。 有关详细信息,请参阅注释锁定行为
示例
在下面示例中会生成警告 C26110,因为函数 _Requires_lock_held_ 的批注 LockRequired 指出 LockRequired 的调用方必须获取锁定,然后才能调用 LockRequired。 若无此批注,LockRequired 必须获取锁,然后才能访问由锁保护的任何共享数据。
typedef struct _DATA
{
CRITICAL_SECTION cs;
int d;
} DATA;
_Requires_lock_held_(p->cs)
void LockRequired(DATA* p)
{
p->d = 0;
}
void LockNotHeld(DATA* p)
{
LockRequired(p); // Warning C26110
}