共用方式為


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 的詳細資訊,請參閱 建立 Framework 裝置物件

範例

下列程式代碼範例示範總線驅動程式如何要求架構等候呼叫 其 EvtDeviceReleaseHardware 回呼函式,直到移除其所有子裝置為止。

WdfDeviceInitSetReleaseHardwareOrderOnFailure(
                       DeviceInit,
                       WdfReleaseHardwareOrderOnFailureAfterDescendants
                       );

規格需求

需求
目標平台 Universal
最小 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