共用方式為


C26111

警告 C26111: 呼叫端在呼叫函式<func> 之前釋放鎖定失敗 <lock> 。

附註 _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);
}