C28139
Warnung C28139: Das Argument sollte genau mit dem Typ übereinstimmen.
Zusätzliche Informationen |
Einige Funktionen erlauben eine eingeschränkte Arithmetik für den Argumenttyp, andere nicht. Dies weist in der Regel darauf hin, dass ein formales Enumerationselement nicht als Member der Enumeration übergeben wurde, sondern auch für andere Typen verwendet werden kann. |
Ein aufgezählter Wert in einem Funktionsaufruf stimmt nicht mit dem Typ überein, der für den Parameter in der Funktionsdeklaration angegeben ist. Dieser Fehler kann auftreten, wenn Parameter falsch codiert, fehlen oder nicht ordnungsgemäß sind. Da C zulässt, dass enumerierte Werte austauschbar verwendet und mit ganzzahligen Konstanten austauschbar verwendet werden können, ist es nicht ungewöhnlich, den falschen aufgezählten Wert an eine Funktion zu übergeben, ohne den Fehler zu erkennen.
Wenn das Codeanalysetool diesen Fehler meldet, lesen Sie die Dokumentation der Funktion im WDK. Einige Funktionen sind so codiert, dass nur enumerierte Werte zulässig sind. Andere ermöglichen es dem ?: -Operator, zwischen Werten dieses Typs auszuwählen, oder die Arithmetik für Member des enumerationierten Typs zuzulassen, z. B. wenn Bitflags als enumerierter Wert codiert werden. In einigen Fällen können aufgezählte Werte und Konstanten kombiniert werden.
Beispiel
Im folgenden Codebeispiel wird diese Warnung ausgelöst.
....KeWaitForSingleObject(&MyMutex, UserRequest, UserRequest, false, NULL);
Im folgenden Codebeispiel wird diese Warnung vermieden.
....KeWaitForSingleObject(&MyMutex, UserRequest, UserMode, false, NULL);