C28139

警告 C28139: 引数は型と正確に一致する必要があります

追加情報

関数によっては、引数の型に対して制限された算術演算が許可されるものと、許可されないものがあります。 これは通常、列挙型フォーマルが列挙型のメンバーに渡されなかったことを示しますが、他の型にも同様に使用される可能性があります。

関数呼び出しの列挙値が、関数宣言のパラメーターに指定された型と一致しません。 このエラーは、パラメーターが間違ってコーディングされているか、欠落しているか、順序が間違っている場合に発生する可能性があります。 Cでは列挙値を同じ意味で使用したり、整数定数と同じ意味で使用したりできるため、エラーが認識されずに間違った列挙値が関数に渡されることは珍しくありません。

コード分析ツールがこのエラーを報告した場合は、WDKの関数のドキュメントを参照してください。 一部の関数は、列挙値のみを許可するようにコード化されています。 他には、 ?: 演算子がその型の値の間で選択できるようにしたり、ビットフラグが列挙値としてエンコードされている場合など、列挙型のメンバーの算術演算を許可したりするものもあります。 場合によっては、列挙値と定数が組み合わされることがあります。

次のコード例では、この警告が表示されます。

....KeWaitForSingleObject(&MyMutex, UserRequest, UserRequest, false, NULL);

次のコード例では、この警告を回避します。

....KeWaitForSingleObject(&MyMutex, UserRequest, UserMode, false, NULL);