C26112
advertencia C26112: El llamador no puede contener ningún bloqueo antes de llamar a <func>.
La anotación _Requires_no_locks_held_ impone una precondición de que el llamador no debe contener ningún bloqueo mientras llama a la función.Advertencia C26112 emitida cuando una función no puede liberar todos los bloqueos antes de llamar a otra función.
Ejemplo
El ejemplo siguiente genera la advertencia C26112 porque la condición previa de _Requires_no_locks_held_ es infringida mediante la llamada a NoLocksAllowed dentro de la sección bloqueada.
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);
}