C28104
warning C28104: La risorsa che avrebbe dovuto essere acquisita prima dell'uscita dalla funzione, non è stata acquisita
Una funzione che intende acquisire una risorsa prima di uscire viene terminata senza acquisire la risorsa.L'avviso indica che la funzione viene annotata con __drv_acquiresResource ma non restituisce effettivamente l'acquisto della risorsa.Se questa funzione è una funzione wrapper, un percorso attraverso la funzione non ha raggiunto la funzione di cui è stato eseguito il wrapping.Se si verifica un errore nel raggiungere la funzione di cui è stato eseguito il wrapping perché la funzione ha restituito un errore e non ha effettivamente acquisito la risorsa, potrebbe essere necessario utilizzare un'annotazione condizionale (__drv_when).
Se questa funzione implementa effettivamente l'acquisizione della risorsa, potrebbe non essere possibile per PFD rilevare che la risorsa è stata acquisita.In tal caso, utilizzare un avviso #pragma per eliminare l'errore.Probabilmente è possibile mettere #pragma sulla linea precedente a { che inizia il corpo della funzione.Le funzioni chiamanti ancora necessitano di annotazione, ma lo strumento di analisi del codice non sarà in grado di rilevare che la risorsa è acquisita.
Esempio
__drv_acquireResourceGlobal(HWLock, lockid)
void GetHardwareLock(lockid)
#pragma warning (suppress: 28104)
{
// code to implement a hardware lock (which the Code Analysis tool can't recognize)
}