функция обратного вызова 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 |