Ostrzeżenie C28103
Wyciek zasobu
Określony obiekt zawiera zasób, który nie został zwolniony. Wywoływana funkcja została oznaczona adnotacją __drv_acquiresResource
lub __drv_acquiresResourceGlobal
i to ostrzeżenie wskazuje, że zasób o nazwie w adnotacji nie został uwolniony.
Przykład
Poniższy przykład kodu generuje to ostrzeżenie:
res = KeSaveFloatingPointState(buffer);
Poniższy przykład kodu pozwala uniknąć tego ostrzeżenia:
res = KeSaveFloatingPointState(buffer);
if (NT_SUCCESS(res))
{
res = KeRestoreFloatingPointState(buffer);
}
Jeśli to ostrzeżenie jest zgłaszane jako fałszywie dodatnie, najbardziej prawdopodobną przyczyną jest to, że funkcja, która zwalnia zasób, nie jest oznaczona adnotacją lub __drv_releasesResource
__drv_releasesResourceGlobal
. Jeśli używasz funkcji otoki dla funkcji systemowych, funkcje otoki powinny używać tych samych adnotacji, które wykonują funkcje systemowe. Obecnie wiele funkcji systemowych jest oznaczonych adnotacjami w pliku modelu, więc adnotacje nie są widoczne w plikach nagłówków.
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla