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

资源列表对象的句柄,该对象标识即插即用管理器分配给设备的已转换硬件资源。

返回值

如果 EvtDeviceReleaseHardware 回调函数未遇到任何错误,则必须返回STATUS_SUCCESS或其他状态值, NT_SUCCESS (状态) 等于 TRUE。 否则,它必须返回一个状态值,NT_SUCCESS (状态) 等于 FALSE。 不要返回STATUS_NOT_SUPPORTED。

注解

若要注册 EvtDeviceReleaseHardware 回调函数,驱动程序必须调用 WdfDeviceInitSetPnpPowerEventCallbacks

如果驱动程序已注册 EvtDeviceReleaseHardware 回调函数,框架会在以下转换期间调用它:

  • 资源重新平衡
  • 有序删除
  • 意外删除

框架停止向设备发送 I/O 请求、分配给设备的任何中断已禁用和断开连接,并且设备已关闭后,框架将调用 EvtDeviceReleaseHardware 回调函数。

当框架调用 EvtDeviceReleaseHardware 时,设备的 PDO 仍然存在,并且可以查询处于关闭状态的设备信息,例如 PCI 配置状态。

此外,框架提供给 EvtDeviceReleaseHardware 的已转换硬件资源仍分配给设备。 此回调函数的主要目的是释放这些资源,特别是取消映射驱动程序的 EvtDevicePrepareHardware 回调函数映射的任何内存资源。 驱动程序还可以使用此回调来执行在关闭状态下可能需要的任何其他驱动程序或设备管理活动。 通常,所有其他硬件关闭操作应在驱动程序的 EvtDeviceD0Exit 回调函数中发生。

如果已调用驱动程序的 EvtDevicePrepareHardware 回调函数,则框架始终调用驱动程序的 EvtDeviceReleaseHardware 回调函数,即使 EvtDevicePrepareHardware 返回了失败代码。

具有子设备的设备的驱动程序可以通过从其 EvtDriverDeviceAdd 回调函数中调用 WdfDeviceInitSetReleaseHardwareOrderOnFailure 来控制框架调用父设备及其子设备的 EvtDeviceReleaseHardware 回调函数的顺序。

有关框架何时调用此回调函数的详细信息,请参阅 PnP 和电源管理方案

有关硬件资源的详细信息,请参阅 Framework-Based 驱动程序的硬件资源

有关提供此回调函数的驱动程序的详细信息,请参阅 支持函数驱动程序中的 PnP 和电源管理

要求

要求
目标平台 通用
最低 KMDF 版本 1.0
最低 UMDF 版本 2.0
标头 wdfdevice.h (包括 Wdf.h)
IRQL PASSIVE_LEVEL

另请参阅

EvtDevicePrepareHardware