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。 有关调用 WdfDeviceCreate 的详细信息,请参阅 创建框架设备对象

示例

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

WdfDeviceInitSetReleaseHardwareOrderOnFailure(
                       DeviceInit,
                       WdfReleaseHardwareOrderOnFailureAfterDescendants
                       );

要求

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

另请参阅

EvtDeviceReleaseHardware

WDFDEVICE_INIT

WDF_RELEASE_HARDWARE_ORDER_ON_FAILURE