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