다음을 통해 공유


경고 C26111

호출자가 함수 'func'를 호출하기 전에 잠금 'lock'을 해제하지 못했습니다.

주석 _Requires_lock_not_held_ 은 함수가 호출될 때 지정된 잠금의 잠금 수가 0보다 클 수 없다는 전제 조건을 적용합니다. 다른 함수를 호출하기 전에 함수가 잠금을 해제하지 못할 경우 경고 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);
}