Partager via


C28104

avertissement C28104 : La ressource qui aurait dû être acquise avant la sortie de la fonction n'a pas été acquise

Une fonction qui est conçue pour capturer une ressource avant qu'elle ne s'arrête s'est terminée sans acquérir la ressource.Cet avertissement indique que la fonction est annotée avec __drv_acquiresResource mais ne retourne pas avoir réellement acquis la ressource.Si cette fonction est une fonction encapsulante, un chemin à travers la fonction n'a pas atteint la fonction encapsulée.Si l'échec d'accès à la fonction encapsulée survient parce que la fonction a retourné une erreur et n'a pas réellement acquis la ressource, vous devrez peut-être utiliser une annotation conditionnelle (__drv_when).

Si cette fonction implémente réellement l'acquisition de la ressource, il peut ne pas être possible pour PFD de détecter que la ressource est acquise.Dans ce cas, utilisez un avertissement #pragma pour supprimer l'erreur.Vous pouvez éventuellement définir #pragma sur la ligne qui précède { qui débute le corps de la fonction.Les fonctions appelantes ont toujours besoin de l'annotation, mais l'outil d'Analyse du Code ne pourra pas détecter que la ressource a été acquise.

Exemple

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