Share via


C28139

advertencia C28139: el argumento debe coincidir exactamente con el tipo.

Información adicional

Algunas funciones permiten una aritmética limitada en el tipo de argumento, otras no. Esto suele indicar que una enumeración formal no se pasó a un miembro de la enumeración, pero también se puede usar para otros tipos.

Un valor enumerado en una llamada de función no coincide con el tipo especificado para el parámetro en la declaración de función. Este error puede producirse cuando los parámetros están codificados incorrectamente, faltan o están desordenados. Dado que C permite que los valores enumerados se usen indistintamente y que se usen indistintamente con constantes enteras, no es inusual pasar el valor enumerado incorrecto a una función sin reconocer el error.

Si la herramienta Análisis de código notifica este error, consulte la documentación de la función en el WDK. Algunas funciones se codifican para permitir solo valores enumerados. Otros permiten al operador ?: seleccionar entre valores de ese tipo o permitir aritmética en miembros del tipo enumerado, como cuando las marcas de bits se codifican como un valor enumerado. En algunos casos, los valores enumerados y las constantes se pueden combinar.

Ejemplo

En el ejemplo de código siguiente se produce esta advertencia.

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

En el ejemplo de código siguiente se evita esta advertencia.

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