C26112

 

For the latest documentation on Visual Studio 2017, see Visual Studio 2017 Documentation.

For the latest documentation on Visual Studio 2017, see C26112 on docs.microsoft.com. warning C26112: Caller cannot hold any lock before calling <func>.

The annotation _Requires_no_locks_held_ imposes a precondition that the caller must not hold any lock while it calls the function. Warning C26112 is issued when a function fails to release all locks before it calls another function.

The following example generates warning C26112 because the _Requires_no_locks_held_ precondition is violated by the call to NoLocksAllowed within the locked section.

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

Show: