Warning C26110
Caller failing to hold lock 'lock' before calling function 'func'.
When a lock is required, make sure to clarify whether the function itself, or its caller, should acquire the lock. Warning C26110 is issued when there's a violation of the _Requires_lock_held_
annotation, or other lock-related annotations. For more information, see Annotating Locking Behavior
Example
In the following example, warning C26110 is generated because the annotation _Requires_lock_held_
on function LockRequired
states that the caller of LockRequired
must acquire the lock before it calls LockRequired
. Without this annotation, LockRequired
has to acquire the lock before it accesses any shared data protected by the lock.
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
}