--- description: "Learn more about: Warning C26165" title: Warning C26165 ms.date: 11/04/2016 f1_keywords: ["C26165"] helpviewer_keywords: ["C26165"] ms.assetid: a1d89bd6-08f3-4215-8a0c-b8ecfeb0cffc --- # Warning C26165 > Possibly failing to release lock '*lock*' in function '*func*'. Warning C26165 resembles warning [C26115](../code-quality/c26115.md) except that the confidence level is lower. For example, the function may contain annotation errors. ## Examples The following code generates warning C26165. ```cpp _Create_lock_level_(LockLevelOne); _Create_lock_level_(LockLevelTwo); struct LockLevelledStruct { _Has_lock_level_(LockLevelOne) CRITICAL_SECTION a; _Has_lock_level_(LockLevelTwo) CRITICAL_SECTION b; }; _Lock_level_order_(LockLevelOne, LockLevelTwo); _Acquires_lock_(s->b) void GetLockFunc(LockLevelledStruct* s) { EnterCriticalSection(&s->b); } void testLockLevelledStruct(LockLevelledStruct* s) // Warning C26165 { EnterCriticalSection(&s->a); GetLockFunc(s); LeaveCriticalSection(&s->a); } ``` To correct this warning, change the previous example to the following. ```cpp _Create_lock_level_(LockLevelOne); _Create_lock_level_(LockLevelTwo); struct LockLevelledStruct { _Has_lock_level_(LockLevelOne) CRITICAL_SECTION a; _Has_lock_level_(LockLevelTwo) CRITICAL_SECTION b; }; _Lock_level_order_(LockLevelOne, LockLevelTwo); _Acquires_lock_(s->b) void GetLockFunc(LockLevelledStruct* s) { EnterCriticalSection(&s->b); } _Releases_lock_(s->b) void ReleaseLockFunc(LockLevelledStruct* s) { LeaveCriticalSection(&s->b); } void testLockLevelledStruct(LockLevelledStruct* s) // OK { EnterCriticalSection(&s->a); GetLockFunc(s); ReleaseLockFunc(s); LeaveCriticalSection(&s->a); } ```