C28139
предупреждение C28139: аргумент должен точно соответствовать типу
Дополнительные сведения |
Некоторые функции разрешают ограниченный арифметический тип аргумента, а другие — нет. Обычно это означает, что формальное перечисление не было передано членом перечисления, но также может использоваться для других типов. |
Перечисленное значение в вызове функции не соответствует типу, указанному для параметра в объявлении функции. Эта ошибка может возникать, когда параметры неправильно закодируются, отсутствуют или не упорядочены. Так как C позволяет использовать взаимозаменяемые значения, а также использовать взаимозаменяемые с целыми константами, это не необычно для передачи неправильно перечисленного значения функции без распознавания ошибки.
Если средство анализа кода сообщает об этой ошибке, обратитесь к документации по функции в WDK. Некоторые функции кодируются для разрешения только перечисленных значений. Другие позволяют оператору ?: выбирать между значениями этого типа или разрешать арифметику для элементов перечисленного типа, например, когда битовые флаги кодируются как перечисленное значение. В некоторых случаях перечисляемые значения и константы могут объединяться.
Пример
Следующий пример кода вызывает это предупреждение.
....KeWaitForSingleObject(&MyMutex, UserRequest, UserRequest, false, NULL);
Следующий пример кода избегает этого предупреждения.
....KeWaitForSingleObject(&MyMutex, UserRequest, UserMode, false, NULL);