C26112
警告 C26112: 呼叫端不可以在呼叫 <func> 之前保留任何鎖定。
加上一個呼叫端的附註 _Requires_no_locks_held_ 不可在呼叫函式之前持有任何鎖定的前置條件。 警告 C26112 會在當函式在呼叫另一個函式之前不釋放所有鎖定時發行。
範例
因為 _Requires_no_locks_held_ 的先決條件被對 NoLocksAllowed 的呼叫違反了此鎖定的區段中,下列範例會產生警告 C26112。
typedef struct _DATA
{
CRITICAL_SECTION cs;
} DATA;
_Requires_no_locks_held_
void NoLocksAllowed(DATA* p)
{
// Lock sensitive operations here
}
void LocksHeldFunction(DATA* p)
{
EnterCriticalSection(&p->cs);
NoLocksAllowed(p); // Warning C26112
LeaveCriticalSection(&p->cs);
}