C26112
Ostrzeżenie C26112: obiekt wywołujący nie mogą pomieścić jakichkolwiek Zablokuj przed wywołaniem metody <func>.
Adnotację _Requires_no_locks_held_ nakłada warunek, że obiekt wywołujący musi nie przytrzymaj jakichkolwiek Zablokuj wywołuje funkcję.Ostrzeżenie C26112 wydaje się, gdy funkcja nie można zwolnić wszystkie blokady przed wywołuje innej funkcji.
Przykład
Poniższy przykład generuje ostrzeżenie C26112, ponieważ _Requires_no_locks_held_ warunkiem koniecznym jest naruszona przez wywołanie NoLocksAllowed w obrębie sekcji zablokowane.
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);
}