We recommend using Visual Studio 2017

C26112

 

The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.

The latest version of this topic can be found at C26112.

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: