次の方法で共有


警告 C26112

呼び出し元は、'func' を呼び出す前にロックを保持できません。

注釈 _Requires_no_locks_held_ は、関数の呼び出し中、呼び出し元でロックを保持できないことを前提条件としています。 警告 C26112 は、関数が別の関数を呼び出す前にすべてのロックを解除できなかった場合に発行されます。

次の例では、ロックされたセクション内の NoLocksAllowed の呼び出しが _Requires_no_locks_held_ 前提条件に違反するため、警告 C26112 が生成されます。

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