次の方法で共有


C26111

C26111 の警告: <lock> のロック解除に失敗した呼び出し 関数 <func> を呼び出す前にします。

コメント_Requires_lock_not_held_関数が呼び出されたときに指定されたロックのロック カウント 0 より大きくすることはできませんな前提条件が課されます。関数が別の関数を呼び出す前に、ロックを解除するが失敗すると C26111 の警告が発行されます。

使用例

次の使用例は、C26111 の警告が生成されます、 _Requires_lock_not_held_が前提条件違反の呼び出しによってDoNotLock内のロックされたセクション。

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);
}