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


функция обратного вызова EVT_WDF_DEVICE_RELEASE_HARDWARE (wdfdevice.h)

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

Функция обратного вызова события EvtDeviceReleaseHardware драйвера выполняет операции, необходимые, когда устройство больше не доступно.

Синтаксис

EVT_WDF_DEVICE_RELEASE_HARDWARE EvtWdfDeviceReleaseHardware;

NTSTATUS EvtWdfDeviceReleaseHardware(
  [in] WDFDEVICE Device,
  [in] WDFCMRESLIST ResourcesTranslated
)
{...}

Параметры

[in] Device

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

[in] ResourcesTranslated

Дескриптор объекта списка ресурсов, который идентифицирует преобразованные аппаратные ресурсы, назначенные Plug and Play-менеджером устройству.

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

Если функция обратного вызова EvtDeviceReleaseHardware не обнаруживает ошибок, она должна возвращать STATUS_SUCCESS или другое значение состояния, для которого NT_SUCCESS(status) равно TRUE. В противном случае он должен возвращать значение состояния, для которого NT_SUCCESS(status) равно FALSE. Не возвращайте STATUS_NOT_SUPPORTED.

Комментарии

Чтобы зарегистрировать функцию обратного вызова EvtDeviceReleaseHardware , драйвер должен вызвать WdfDeviceInitSetPnpPowerEventCallbacks.

Если драйвер зарегистрировал функцию обратного вызова EvtDeviceReleaseHardware , платформа вызывает ее во время следующих переходов:

  • Перебалансирование ресурсов
  • Упорядочение удаления
  • Неожиданное удаление

Платформа вызывает функцию обратного вызова EvtDeviceReleaseHardware после того, как платформа прекратила отправку запросов ввода-вывода на устройство, все прерывания, назначенные устройству, были отключены и отключены, а устройство было отключено.

Когда платформа вызывает EvtDeviceReleaseHardware, PDO для устройства по-прежнему существует, и его можно запросить сведения об устройстве, доступные в отключенном состоянии, например состояние конфигурации PCI.

Кроме того, преобразованные аппаратные ресурсы, предоставляемые платформой для EvtDeviceReleaseHardware , по-прежнему назначаются устройству. Основная цель этой функции обратного вызова — освободить эти ресурсы и, в частности, отменить сопоставление ресурсов памяти, сопоставленных функции обратного вызова EvtDevicePrepareHardware драйвера. Драйвер также может использовать этот обратный вызов для выполнения любых других действий по управлению драйвером или устройством, которые могут потребоваться в выключенном состоянии. Как правило, все остальные операции завершения работы оборудования должны выполняться в функции обратного вызова EvtDeviceD0Exit драйвера.

Платформа всегда вызывает функцию обратного вызова EvtDeviceReleaseHardware драйвера, если была вызвана функция обратного вызова EvtDevicePrepareHardware драйвера, даже если EvtDevicePrepareHardware вернул код сбоя.

Драйвер для устройства с дочерними устройствами может управлять порядком, в котором платформа вызывает функции обратного вызова EvtDeviceReleaseHardware для родительского устройства и его дочерних устройств, вызывая WdfDeviceInitSetReleaseHardwareOrderOnFailure из функции обратного вызова EvtDriverDeviceAdd .

Дополнительные сведения о том, когда платформа вызывает эту функцию обратного вызова, см. в разделе Сценарии PnP и управления питанием.

Дополнительные сведения об аппаратных ресурсах см. в разделе Аппаратные ресурсы для драйверов Framework-Based.

Дополнительные сведения о драйверах, предоставляющих эту функцию обратного вызова, см. в разделе Поддержка PnP и управления питанием в драйверах функций.

Требования

Требование Значение
Целевая платформа Универсальное
Минимальная версия KMDF 1,0
Минимальная версия UMDF 2,0
Верхняя часть wdfdevice.h (включая Wdf.h)
IRQL PASSIVE_LEVEL

См. также раздел

EvtDevicePrepareHardware