Поделиться через


C28104

предупреждение C28104: Не получен ресурс, получение которого должно происходить до выхода из функции

Функция, которая предназначена для получения ресурса, прежде чем его выход был выполнен без получение ресурса.Данное предупреждение указывает, что функция аннотирована с __drv_acquiresResource, но не возвращает виртуально полученный ресурс.Если эта функция является функцией-оболочкой, то путь через функцию не достиг функцию-оболочку.Если сбой при попытке достигнуть функцию-оболочку произошел потому, что функция вернула ошибку и фактически не приобрела ресурс, может использовать условную заметку (__drv_when).

Если эта функция фактически реализует метод ресурса, то может оказаться невозможным для PFD обнаружить, что ресурс приобретен.В этом случае следует использовать #pragma предупреждение для подавления ошибки.Можно поместить #pragma в строку, перед символом { , с которого начинается тело функции.Вызывающая функция по-прежнему требует примечания, но средство анализа кода не сможет обнаружить, что ресурс был приобретен.

Пример

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