次の方法で共有


C28193

警告 C28193: 変数は検証が必要な値を保持しています

この警告は、呼び出し元の関数によって提供された、指定した変数の値を確認していないことを示します。戻り値は _Check_return_ の注釈が指定されますが、呼び出し元の関数が値を使用できず、それを調べない限り値を上書きします。

この警告は C6031の警告に似ていますが、変数の値をテストして、確認しない場合のみ比較で使用するなど、報告されます。値を代入この警告を回避する十分なチェックと見なされません。関数の結果を見なされます十分なチェックでエイリアス/別名を使用して、結果自体が _Check_return_が指定されます。

特定の関数は値を返すため、では strlenなどの動作に作業を _Check_return_ の注釈を持つほとんどだけです。これらの関数には、コード分析ツールは、戻り値が不要な場合にこの警告が報告されることがあります。これは通常、たとえば削除もうコードが含まれている可能性があることをコードが正しくないことを示します。ただし、ほとんどのインスタンスで、戻り値は意図的には使用されません。これらのインスタンスの共通は他のテストが行われる前に文字列長を返すのではなく、実際に使用されます。そのほかのテストは文字列長をすべて表示を終了位置のパスをシミュレートします。この場合、コードが正しい場合があります。これは非効率的である場合があります。

戻り値が未使用のこれらのケースを処理する 2 種類の主な方法は、:

文字列長をのみ必要なパスに沿ってオブジェクトを返すようにコードの順序を変更します。

警告を抑制する警告する #pragma を使用します。。コードの一部を並べ替えることによって、コードが複雑すぎますまたは別の方法では不便です。

使用例

次のコード例はこの警告を生成する:

IoGetDmaAdapter(pPDO, &DevDesc, &nMapRegs);
...

次のコード例はこの警告を回避する:

IoGetDmaAdapter(pPDO, &DevDesc, &nMapRegs);
...
if (nMapRegs < MIN_REQUIRED_MAPS) {
...
}