C26135
upozornění C26135: chybí poznámka <annotation> ve funkci <func>.
Upozornění: C26135 je vydáno analyzátoru odvodí, že je funkce uzamčení wrapper funkci, která má zámek získání nebo uvolnění vedlejším účinkem zamknout.Pokud kód není určena pro souhrnný funkcí, poté nevrací (Pokud je získán zámek) uzamknout nebo jej vydané nesprávně (pokud uvolnění uzamčení).
Příklad
Následující příklad vytvoří upozornění C26135, protože chybí vhodné stranu účinku poznámky.
typedef struct _DATA
{
CRITICAL_SECTION cs;
} DATA;
void MyEnter(DATA* p)
{
// Warning C26135:
// Missing side effect annotation _Acquires_lock_(&p->cs)
EnterCriticalSection(&p->cs);
}
void MyLeave(DATA* p)
{
// warning C26135:
// Missing side effect annotation _Releases_lock_(&p->cs)
LeaveCriticalSection(&p->cs);
}
C26135 upozornění je vydán také při zjištění uzamčení podmíněné vedlejším účinkem.Opatřit podmíněné efekt, použijte _When_(ConditionExpr, LockAnnotation) poznámku, kde LockAnnotation je buď _Acquires_lock_ nebo _Releases_lock_ a predikátu výraz ConditionExpr je logická podmíněný výraz.Vedlejší účinky jiné poznámky na stejnou funkci dojít pouze při ConditionExpr má hodnotu PRAVDA.Protože ConditionExpr slouží k přenosu stavu zpět volajícímu, ji musí zahrnovat proměnné, které jsou rozpoznány v kontextu volajícího.Zahrnují parametry funkce globální nebo proměnné členů třídy nebo vrácené hodnoty.Zobrazit vrácení hodnoty, použít zvláštní klíčové slovo do pole Poznámka, return, jak ukazuje následující příklad.
typedef struct _DATA
{
CRITICAL_SECTION cs;
int state;
} DATA;
_When_(return != 0, _Acquires_lock_(p->cs))
int TryEnter(DATA* p)
{
if (p->state != 0)
{
EnterCriticalSection(&p->cs);
return p->state;
}
return 0;
}
Pro sdílený nebo výhradní zámek, známé také jako čtecí a zapisovací zámky lze vyjádřit pomocí následující poznámky uzamčení vedlejší účinky:
_Acquires_shared_lock_(LockExpr)
_Releases_shared_lock_(LockExpr)
_Acquires_exclusive_lock_(LockExpr)
_Releases_exclusive_lock_(LockExpr)