C28103C28103

Ostrzeżenie C28103: przeciek zasobuwarning C28103: Leaking resource

Określony obiekt zawiera zasób, który nie został zwolniony.The specified object contains a resource that has not been freed. 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ł zwolniony.A function being called has been annotated with __drv_acquiresResource or __drv_acquiresResourceGlobal and this warning indicates that the resource named in the annotation was not freed.

PrzykładExample

Poniższy przykład kodu generuje to ostrzeżenie:The following code example generates this warning:

res = KeSaveFloatingPointState(buffer);

Poniższy przykład kodu pozwala uniknąć tego ostrzeżenia:The following code example avoids this warning:

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 ten zasób, nie ma adnotacji z __drv_releasesResource lub __drv_releasesResourceGlobal .If this warning is reported as a false positive, the most likely cause is that the function that releases the resource is not annotated with __drv_releasesResource or __drv_releasesResourceGlobal. Należy pamiętać, że jeśli używasz funkcji otoki dla funkcji systemowych, funkcje otoki powinny używać tych samych adnotacji, do których pełnią funkcje systemowe.Note that if you are using wrapper functions for system functions, the wrapper functions should use the same annotations that the system functions do. Obecnie wiele funkcji systemowych jest adnotacja w pliku modelu, dlatego adnotacje nie są widoczne w plikach nagłówkowych.Currently, many system functions are annotated in the model file, so the annotations are not visible in the header files.