C26112

警告 C26112: 调用方不能保留任何锁定,然后才能调用 <func>。

批注_Requires_no_locks_held_会增加调用方不得持有任何锁时,它调用该函数的前提条件。 函数无法释放所有锁定,再调用另一个函数时,会发出警告 C26112。

示例

下面的示例生成警告 C26112,因为_Requires_no_locks_held_前提条件违反的调用NoLocksAllowed中的锁定部分。

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);
}