次の方法で共有


C26110

警告 C26110: 関数 <func> の呼び出し前に、呼び出し元でロック <ロック> の保持が失敗します

ロックが必要な場合は、関数自体または呼び出し元がロックを取得する必要があるかどうかを明確になっていることを確認します。警告 C26110 は _Requires_lock_held_ で違反がある場合に発生します。

使用例

次の例では、警告 C26110 は LockRequiredを呼び出す前に LockRequired の呼び出し元は、ロックを取得する必要があることを LockRequired 関数の注釈 _Requires_lock_held_ では生成されます。この注釈を指定せずに、LockRequired はロックによって保護されている共有データにアクセスする前にロックを取得する必要があります。

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 
}