Freigeben über


C28104

Warnung C28104: Ressource, die abgerufen werden sollen, bevor Funktionsbeendigung nicht abgerufen wurde

Eine Funktion, die vorgesehen ist, um eine Ressource abzurufen, bevor er beendet, wurde beendet, ohne die Ressource abzurufen.Diese Warnung gibt an, dass die Funktion, mit __drv_acquiresResource kommentiert wird, gibt jedoch nicht die Ressource tatsächlich abgerufen haben zurück.Wenn diese Funktion eine Wrapperfunktion ist, hat ein Pfad durch die Funktion nicht die umschlossene Funktion.Wenn die Fehler, die umschlossene Funktion erreicht ist, da die Funktion einen Fehler zurückgibt und nicht tatsächlich die Ressource abgerufen wird, müssen Sie möglicherweise eine bedingte Anmerkung (__drv_when) verwenden.

Wenn diese Funktion eigentlich die Datenerfassung der Ressource implementiert, kann es nicht möglich, PFD zu erkennen, dass die Ressource abgerufen wird.In diesem Fall verwenden Sie #pragma, das hinweist, um den Fehler zu unterdrücken.Sie können #pragma in der Zeile wahrscheinlich platzieren, die { vorausgeht, die den Funktionsrumpf beginnt.Die aufrufenden Funktionen erfordern weiterhin die Anmerkung, aber das Codeanalysetool ist nicht in der Lage, zu erkennen, dass die Ressource abgerufen wurde.

Beispiel

__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)
}