共用方式為


使用系統定義的回呼物件

系統會定義三個用於驅動程式的回呼物件:

\Callback\SetSystemTime

\Callback\PowerState

\Callback\ProcessorAdd

使用系統時間的驅動程式(例如檔案系統驅動程式)可能會註冊 \Callback\SetSystemTime 回調物件。 此回呼會在系統時間變更時提供通知。

\Callback\PowerState 回呼物件會在發生下列其中一項時提供通知:

  • 系統會從 AC 切換為 DC 電源,反之亦然。

  • 系統電源原則會隨著使用者或應用程式要求而變更。

  • 轉換至系統睡眠或關機狀態迫在眉睫。 驅動程式可以要求通知,以便在預期關機時將程式代碼鎖定至記憶體。 回呼程序會在電源管理員傳送設定電源的 IRP (Input/Output Request Packet)之前收到通知。

\Callback\ProcessorAdd 回呼會在系統新增處理器時提供通知。

若要使用系統定義的回呼,驅動程式會呼叫具有回呼名稱的 InitializeObjectAttributes 來初始化屬性區塊,然後開啟回呼物件 (ExCreateCallback),就像驅動程式定義的回呼一樣。 驅動程式不應該要求建立回呼物件。

使用 ExCreateCallback 傳回的句柄,驅動程式會呼叫 ExRegisterCallback 來註冊通知例程,將指標傳遞至任意內容,以及其例程的指標。 驅動程式可以隨時註冊其回呼例程。 發生指定條件時,系統會在 IRQL<=DISPATCH_LEVEL 呼叫已註冊的回呼例程。

當驅動程式不再需要通知時,它應該呼叫 ExUnregisterCallback ,從已註冊的回呼清單中刪除其回呼例程,並移除其回呼對象的參考。