C26110
Предупреждение C26110: Вызывающей стороне не удается удержать блокировку <блокировка> до вызова функции <функция>.
Если необходима блокировка, нужно определить, сама функция должна захватить блокировку или это должна сделать вызывающая функция.Предупреждение C26110 показывается, когда происходит нарушение аннотации _Requires_lock_held_.
Пример
В следующем примере выводится предупреждение 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
}