Avviso C28103

Perdita di risorse

L'oggetto specificato contiene una risorsa che non è stata liberata. Una funzione chiamata è stata annotata con __drv_acquiresResource o __drv_acquiresResourceGlobal e questo avviso indica che la risorsa denominata nell'annotazione non è stata liberata.

Esempio

Nell'esempio riportato di seguito il codice genera questo avviso:

res = KeSaveFloatingPointState(buffer);

Nell'esempio riportato di seguito il codice evita questo avviso:

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

Se questo avviso viene segnalato come falso positivo, la causa più probabile è che la funzione che rilascia la risorsa non sia annotata con __drv_releasesResource o __drv_releasesResourceGlobal. Se si usano funzioni wrapper per le funzioni di sistema, le funzioni wrapper devono usare le stesse annotazioni eseguite dalle funzioni di sistema. Attualmente, molte funzioni di sistema vengono annotate nel file del modello, quindi le annotazioni non sono visibili nei file di intestazione.