EXT_CALLBACK回呼函式 (wdm.h)
ExTimerCallback 回呼例程會在 EX_TIMER定時器對象的時間間隔到期后執行。
語法
EXT_CALLBACK ExtCallback;
void ExtCallback(
[in] PEX_TIMER Timer,
[in] PVOID Context
)
{...}
參數
[in] Timer
EX_TIMER 結構的指標。 這個結構是 先前由 ExAllocateTimer 例程配置的定時器物件。
[in] Context
驅動程式先前提供做為 ExAllocateTimer 例程之 CallbackContext 參數的內容值。
傳回值
無
備註
作為選項,您的驅動程式可以在 Driver 傳遞至 ExAllocateTimer 例程的 Callback 參數中,提供 ExTimerCallback 例程的指標。 定時器到期之後,操作系統會呼叫 ExTimerCallback 例程。
若要啟動定時器作業,驅動程式會將定時器對象當做輸入參數傳遞至 ExSetTimer 例程。 定時器到期之後,操作系統會排程 ExTimerCallback 例程來執行。
定時器物件是可等候的物件。 驅動程式線程可以呼叫 例程,例如 KeWaitForSingleObject 或 KeWaitForMultipleObjects 以等候定時器到期。 定時器到期時,操作系統會發出定時器對象的訊號。
定時器可能會在到期之前取消。 驅動程式可以呼叫 ExCancelTimer 例程,明確地取消定時器。 如果驅動程式呼叫 ExSetTimer 例程來啟動定時器物件上的新定時器,在先前設定的定時器到期之前,此呼叫會隱含地取消先前的定時器,然後啟動新的定時器。
ExTimerCallback 例程可以呼叫例程,例如 ExSetTimer 或 ExDeleteTimer。 如果 ExTimerCallback 例程呼叫 ExDeleteTimer,則此呼叫中提供的 Wait 參數必須是 FALSE。 如需詳細資訊,請參閱 刪除 System-Allocated 定時器物件。
在多處理器系統中,定期定時器兩個連續到期的 ExTimerCallback 回呼可能會同時在兩個不同的處理器上執行。
如需詳細資訊,請參閱 ExXxxTimer 例程和EX_TIMER物件。
範例
若要定義 ExTimerCallback 回 呼例程,您必須先提供函式宣告來識別您要定義的回呼例程類型。 Windows 提供一組驅動程式的回呼函式類型。 使用回呼函式類型宣告函式有助於 驅動程式的程式代碼分析、 靜態驅動程式驗證程式 (SDV) ,以及其他驗證工具尋找錯誤,而且是撰寫 Windows 操作系統驅動程式的需求。
例如,若要定義名為MyExTimerCallback
的 ExTimerCallback 回呼例程,請使用 EXT_CALLBACK 函式類型,如下列程式代碼範例所示:
EXT_CALLBACK MyExTimerCallback;
然後,實作回呼例程,如下所示:
_Use_decl_annotations_
VOID
MyExTimerCallback(
PEX_TIMER Timer,
PVOID Context
)
{...}
EXT_CALLBACK函式類型定義於 Wdm.h 頭檔中。 若要在執行程式代碼分析工具時更精確地識別錯誤,請務必將 _Use_decl_annotations_
批註新增至函式定義。 註釋 _Use_decl_annotations_
可確保使用頭檔中套用至EXT_CALLBACK函式類型的批註。 如需函數宣告需求的詳細資訊,請參閱 使用WDM驅動程式的函式角色類型宣告函式。 如需 的詳細資訊 _Use_decl_annotations_
,請參閱 標註函式行為。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 從 Windows 8.1 開始提供。 |
目標平台 | 桌面 |
標頭 | wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
IRQL | 在 DISPATCH_LEVEL呼叫。 |