Freigeben über


Warnung C28104

Ressource, die vor dem Beenden der Funktion erworben werden sollte

Eine Funktion, die eine Ressource abrufen soll, bevor sie beendet wird, ohne die Ressource zu erwerben. Diese Warnung gibt an, dass die Funktion mit Anmerkungen versehen __drv_acquiresResource ist, aber nicht zurückgibt, dass die Ressource tatsächlich abgerufen wurde. Wenn es sich bei dieser Funktion um eine Wrapperfunktion handelt, hat ein Pfad durch die Funktion die umbrochene Funktion nicht erreicht. Wenn der Fehler beim Erreichen der umschlossenen Funktion liegt, weil die Funktion einen Fehler zurückgegeben hat und die Ressource nicht tatsächlich erworben hat, müssen Sie möglicherweise eine bedingte Anmerkung (__drv_when) verwenden.

Wenn diese Funktion tatsächlich den Erwerb der Ressource implementiert, ist es möglicherweise nicht möglich, dass PFD erkennt, dass die Ressource abgerufen wird. Verwenden Sie in diesem Fall eine #pragma Warnung, um den Fehler zu unterdrücken. Sie können wahrscheinlich die #pragma Zeile vor der Zeile platzieren, die { den Funktionstext beginnt. Die aufrufenden Funktionen benötigen weiterhin die Anmerkung, aber das Codeanalysetool kann nicht 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)
}