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