共用方式為


警告 C26835

RtlCompareMemory 會傳回相符位元組的數目。 請考慮將此呼叫取代為 RtlEqualMemory

備註

RtlCompareMemory 的傳回值被視為布林值時,當找到差異之前至少有 1 個相等位元組時,它會評估為 true。 此外,如果至少有 1 個相符的位元組,將 的結果 RtlCompareMemory 與 0 進行比較會評估為 false。 此行為可能會非預期,因為它與其他比較函式不同,例如 strcmp ,使得程式碼難以理解。 若要檢查是否相等,請考慮改用 RtlEqualMemory

此警告適用于 Visual Studio 2022 17.7 版和更新版本。

範例

int foo(const void* ptr)
{
    if (RtlCompareMemory("test", ptr, 5) == 0) // C26835
    {
        // ... 
    }
}

若要修正此問題,請確認原始意圖是否要檢查是否相等,並將函式呼叫取代為 RtlEqualMemory

int foo(const void* ptr)
{
    if (RtlEqualMemory("test", ptr, 5)) // C26835
    {
        // ... 
    }
}

另請參閱

RtlEqualMemory 宏 ( wdm.h
RtlCompareMemory function ( wdm.h