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


Функция WdfDeviceSetFailed (wdfdevice.h)

[Применимо к KMDF и UMDF]

Метод WdfDeviceSetFailed информирует платформу о том, что драйвер столкнулся с аппаратной или программной ошибкой, связанной с указанным устройством.

Синтаксис

void WdfDeviceSetFailed(
  [in] WDFDEVICE                Device,
  [in] WDF_DEVICE_FAILED_ACTION FailedAction
);

Параметры

[in] Device

Дескриптор объекта устройства платформы.

[in] FailedAction

Перечислитель с типом WDF_DEVICE_FAILED_ACTION, который указывает, должна ли платформа пытаться перезагрузить драйверы указанного устройства.

Возвращаемое значение

None

Remarks

Ошибка проверка возникает, если драйвер предоставляет недопустимый дескриптор объекта.

Если драйвер сталкивается с неустранимой ошибкой оборудования или программного обеспечения, он должен вызвать WdfDeviceSetFailed , чтобы система выгрузила драйверы устройства.

Начиная с версии UMDF 2.15 драйвер UMDF может запросить повторное перечисление драйвера шины, вызвав WdfDeviceSetFailed с параметром FailedAction, для параметра FailedAction задано значение WdfDeviceFailedAttemptRestart. Водитель шины должен поддерживать интерфейс GUID_REENUMERATE_SELF_INTERFACE_STANDARD .

Кроме того, драйвер UMDF может задать для параметра FailedAction значение WdfDeviceFailedNoRestart.

Дополнительные сведения о WdfDeviceSetFailed см. в разделе Создание отчетов о сбоях устройств.

Примеры

Следующий пример кода информирует платформу о том, что произошел сбой. Если драйверы указанного устройства не поддерживают другие устройства, платформа выгрузит драйверы и попытается их перезагрузить.

WdfDeviceSetFailed(
                   device,
                   WdfDeviceFailedAttemptRestart
                   );

Требования

Требование Значение
Целевая платформа Универсальное
Минимальная версия KMDF 1,0
Минимальная версия UMDF 2,0
Верхняя часть wdfdevice.h (включая Wdf.h)
Библиотека Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <=DISPATCH_LEVEL
Правила соответствия DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)