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