Warnung C26835
RtlCompareMemory
gibt die Anzahl der übereinstimmenden Bytes zurück. Erwägen Sie, diesen Anruf durchRtlEqualMemory
Hinweise
Wenn RtlCompareMemory
der Rückgabewert als boolescher Wert behandelt wird, wird er als "true" ausgewertet, wenn mindestens 1 gleich Byte vorhanden ist, bevor eine Differenz gefunden wird. Darüber hinaus wird der Vergleich des Ergebnisses von RtlCompareMemory
0 mit "false" ausgewertet, wenn mindestens 1 übereinstimmende Byte vorhanden sind. Dieses Verhalten kann unerwartet sein, da es sich von anderen Vergleichsfunktionen unterscheidet, wie z strcmp
. B. den Code schwieriger zu verstehen. Um auf Gleichheit zu prüfen, sollten Sie stattdessen die Verwendung in Betracht ziehen RtlEqualMemory
.
Diese Warnung ist in Visual Studio 2022, Version 17.7 und höher, verfügbar.
Beispiel
int foo(const void* ptr)
{
if (RtlCompareMemory("test", ptr, 5) == 0) // C26835
{
// ...
}
}
Um das Problem zu beheben, überprüfen Sie, ob die ursprüngliche Absicht bestand, auf Gleichheit zu prüfen und den Funktionsaufruf durch RtlEqualMemory
:
int foo(const void* ptr)
{
if (RtlEqualMemory("test", ptr, 5)) // C26835
{
// ...
}
}
Siehe auch
RtlEqualMemory
Makro (wdm.h
)
RtlCompareMemory
-Funktion (wdm.h
)
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für