系統會定義三個用於驅動程式的回呼物件:
\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 ,從已註冊的回呼清單中刪除其回呼例程,並移除其回呼對象的參考。