次の方法で共有


C26111

警告 C26111: 関数 <func> の呼び出し前に、呼び出し元でロック <ロック> の解放が失敗します

関数が呼び出されると、指定のロックのロック カウントがゼロより大きい場合があり、注釈 _Requires_lock_not_held_ は必須要件を設定します。警告 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);
}