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 Device Object。
例子
下列程式代碼範例示範總線驅動程式如何要求架構等候呼叫其 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) |