WdfDeviceInitSetReleaseHardwareOrderOnFailure 函数 (wdfdevice.h)

[适用于 KMDF 和 UMDF]

WdfDeviceInitSetReleaseHardwareOrderOnFailure 方法指定框架是在设备故障后立即调用驱动程序的 EvtDeviceReleaseHardware 回调函数,还是等到删除所有子设备为止。

语法

void WdfDeviceInitSetReleaseHardwareOrderOnFailure(
  [in] PWDFDEVICE_INIT                       DeviceInit,
  [in] WDF_RELEASE_HARDWARE_ORDER_ON_FAILURE ReleaseHardwareOrderOnFailure
);

参数

[in] DeviceInit

指向 WDFDEVICE_INIT 结构的指针。

[in] ReleaseHardwareOrderOnFailure

一个 WDF_RELEASE_HARDWARE_ORDER_ON_FAILURE类型枚举器,指定框架何时调用驱动程序的 EvtDeviceReleaseHardware 回调函数。

返回值

没有

言论

通常,框架在为驱动程序枚举的所有子设备调用 EvtDeviceReleaseHardware 函数后调用驱动程序的 EvtDeviceReleaseHardware 回调函数。

但是,如果设备启动或停电失败,框架可能会在调用驱动程序 EvtDeviceReleaseHardware 之前调用所有子设备的 EvtDeviceReleaseHardware 函数。

若要替代此默认行为,驱动程序可以调用 WdfDeviceInitSetReleaseHardwareOrderOnFailure 来指定,即使在设备故障方案中,框架应始终等待调用其 EvtDeviceReleaseHardware 函数,直到调用子设备的 EvtDeviceReleaseHardware 函数。

例如,代表其子设备执行硬件访问的总线驱动程序可以使用此方法来确保其子设备在框架调用总线驱动程序的 EvtDeviceReleaseHardware 回调函数后,不会请求访问硬件。

如果驱动程序调用 WdfDeviceInitSetReleaseHardwareOrderOnFailure,则必须在调用 WdfDeviceCreate之前执行此作。 有关调用 WdfDeviceCreate的详细信息,请参阅 创建框架设备对象

例子

下面的代码示例演示了总线驱动程序如何请求框架等待调用其 EvtDeviceReleaseHardware 回调函数,直到其所有子设备都已删除。

WdfDeviceInitSetReleaseHardwareOrderOnFailure(
                       DeviceInit,
                       WdfReleaseHardwareOrderOnFailureAfterDescendants
                       );

要求

要求 价值
目标平台 普遍
最低 KMDF 版本 1.11
最低 UMDF 版本 2.0
标头 wdfdevice.h (包括 Wdf.h)
Wdf01000.sys(KMDF):WUDFx02000.dll (UMDF)
IRQL <= DISPATCH_LEVEL
DDI 符合性规则 DriverCreate(kmdf)

另请参阅

EvtDeviceReleaseHardware

WDFDEVICE_INIT

WDF_RELEASE_HARDWARE_ORDER_ON_FAILURE