ioRegisterLastChanceShutdownNotification 函式 (wdm.h)

IoRegisterLastChanceShutdownNotification 例程會註冊驅動程式,以在系統關閉時接收IRP_MJ_SHUTDOWN IRP,並排清所有文件系統之後。

語法

NTSTATUS IoRegisterLastChanceShutdownNotification(
  [in] PDEVICE_OBJECT DeviceObject
);

參數

[in] DeviceObject

驅動程式要求關機通知之裝置裝置物件的指標。 系統會將此指標傳遞至驅動程式的 DispatchShutdown 例程。

傳回值

IoRegisterLastChanceShutdownNotification 會在成功時傳回STATUS_SUCCESS,或在失敗時傳回適當的NTSTATUS錯誤碼。

備註

IoRegisterLastChanceShutdownNotification 例程會註冊驅動程式,以在系統關閉時接收指定裝置的IRP_MJ_SHUTDOWN IRP。 驅動程式會為其註冊的每個裝置接收一個這類 IRP,以接收通知。 驅動程式會在其 DispatchShutdown 例程內處理IRP_MJ_SHUTDOWN IRP。

針對向這個例程註冊的任何裝置,系統會在所有文件系統排清之後傳送 IRP_MJ_SHUTDOWN IRP。 裝置堆疊中只有一個驅動程式應該註冊以接收關機通知,方法是呼叫 IoRegisterShutdownNotificationIoRegisterLastChanceShutdownNotification

如果驅動程式停止要求該裝置的關機通知,請使用 IoUnregisterShutdownNotification 從關機通知佇列中移除驅動程式。

呼叫 IoRegisterLastChanceShutdownNotification 的驅動程式必須滿足 其 DispatchShutdown 例程中的下列限制:

  • DispatchShutdown 例程不得呼叫任何可分頁的例程。
  • DispatchShutdown 例程不得存取可分頁記憶體。
  • DispatchShutdown 例程不得執行任何檔案 I/O 作業。
大部分需要關機通知的驅動程式都應該呼叫 IoRegisterShutdownNotification 例程,這不會對 DispatchShutdown 例程施加這些限制,而且會導致在文件系統排清之前呼叫 DispatchShutdown 例程。 只有在文件系統排清之後,必須執行一些清除的驅動程式,例如大量儲存裝置的驅動程式,應該使用 IoRegisterLastChanceShutdownNotification

在 Power Manager 傳送 PowerSystemShutdown的IRP_MN_SET_POWER要求之前,會呼叫已註冊的 DispatchShutdown 例程。 不會呼叫 DispatchShutdown 例程,以轉換至任何其他電源狀態。

規格需求

需求
最低支援的用戶端 可在 Windows 2000 和更新版本的 Windows 中使用。 無法在 Microsoft Windows 98/Me 中使用。
目標平台 Universal
標頭 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 合規性規則 HwStorPortProhibitedDDIs (storport) PowerIrpDDis (wdm)

另請參閱

DispatchShutdown

IoRegisterShutdownNotification

IoUnregisterShutdownNotification