Udostępnij za pośrednictwem


C26110

Ostrzeżenie C26110: wywołujący nie był w stanie zatrzymać blokady <lock> przed wywołaniem funkcji <func>.

Jeśli blokada jest wymagana, należy upewnić się czy sama funkcja, czy wywołujący powinien uzyskać blokadę.Ostrzeżenie C26110 zostało wydane po naruszeniu adnotacji _Requires_lock_held_.

Przykład

W poniższym przykładzie ostrzeżenie C26110 jest generowane, ponieważ adnotacja _Requires_lock_held_ w funkcji LockRequired stwierdza, że wywołujący LockRequired musi uzyskać blokadę przed wywołaniem LockRequired.Bez tej adnotacji LockRequired musi uzyskać blokadę przed uzyskaniem dostępu do wszelkich udostępnionych danych chronionych przez blokadę.

typedef struct _DATA 
{
    CRITICAL_SECTION cs;
    int d;
} DATA;

_Requires_lock_held_(p->cs)

void LockRequired(DATA* p)
{
    p->d = 0;
}

void LockNotHeld(DATA* p) 
{ 
    LockRequired(p); // Warning C26110 
}