Udostępnij za pośrednictwem


C28103

Ostrzeżenie C28103: wyciek zasobów

Określony obiekt zawiera zasób, który nie został zwolniony.Wywołanie funkcji zostały opatrzone __drv_acquiresResource lub __drv_acquiresResourceGlobal i to ostrzeżenie wskazuje, że zasób o nazwie w adnotacji nie została zwolniona.

Przykład

Poniższy kod przykładowy generuje to ostrzeżenie:

res = KeSaveFloatingPointState(buffer);

Poniższy kod przykładowy pozwala uniknąć tego ostrzeżenia:

res = KeSaveFloatingPointState(buffer);
if (NT_SUCCESS(res))
{
    res = KeRestoreFloatingPointState(buffer);
}

Jeśli to ostrzeżenie jest zgłoszony jako fałszywego, najbardziej prawdopodobną przyczyną jest, że funkcja, która zwalnia zasób nie jest odnotowany z __drv_releasesResource lub __drv_releasesResourceGlobal.Należy zauważyć, że używasz funkcji otoki dla funkcji systemowych, funkcje otoki powinien używać tego samego adnotacje, które funkcje systemu.Obecnie wiele funkcji systemu są odnotowany w pliku modelu, tak aby adnotacje nie są widoczne w plikach nagłówkowych.