C28104
upozornění C28104: Zdroj který měl být získán, před tím, než došlo k ukončení funkce
Funkce, která je určena k získání zdroje před jejím ukončením byla ukončena, aniž by získala zdroj.Toto upozornění znamená, že je funkce označena __drv_acquiresResource, ale nevrátí skutečně nabytí zdroje.Pokud je tato funkce funkcí zabalení, nedosáhla cesta napříč funkcí funkci zabalení.Pokud došlo k selhání dosažení funkce zabalení z důvodu vrácení chyby funkcí a současně nebyl získán zdroj, bude pravděpodobně zapotřebí použít podmíněnou anotaci (__drv_when).
Pokud tato funkce implementuje kód pro získání zdroje, nemusí být pomocí PFD možné zjistit, zda je zdroj získán.V takovém případě je zapotřebí pro potlačení chyby použít varování #pragma.Pravděpodobně lze umístit #pragma na řádku předcházejícím {, který začíná tělo funkce.Funkce, které vykonávají volání stále potřebují anotaci, ale nástroj pro analýzu kódu nebude schopen zjistit, zda byl zdroj získán.
Příklad
__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)
}