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 例程來執行。

定時器物件是可等候的物件。 驅動程式線程可以呼叫 例程,例如 KeWaitForSingleObjectKeWaitForMultipleObjects 以等候定時器到期。 定時器到期時,操作系統會發出定時器對象的訊號。

定時器可能會在到期之前取消。 驅動程式可以呼叫 ExCancelTimer 例程,明確地取消定時器。 如果驅動程式呼叫 ExSetTimer 例程來啟動定時器物件上的新定時器,在先前設定的定時器到期之前,此呼叫會隱含地取消先前的定時器,然後啟動新的定時器。

ExTimerCallback 例程可以呼叫例程,例如 ExSetTimerExDeleteTimer。 如果 ExTimerCallback 例程呼叫 ExDeleteTimer,則此呼叫中提供的 Wait 參數必須是 FALSE。 如需詳細資訊,請參閱 刪除 System-Allocated 定時器物件

在多處理器系統中,定期定時器兩個連續到期的 ExTimerCallback 回呼可能會同時在兩個不同的處理器上執行。

如需詳細資訊,請參閱 ExXxxTimer 例程和EX_TIMER物件

範例

若要定義 ExTimerCallback 回 呼例程,您必須先提供函式宣告來識別您要定義的回呼例程類型。 Windows 提供一組驅動程式的回呼函式類型。 使用回呼函式類型宣告函式有助於 驅動程式的程式代碼分析靜態驅動程式驗證程式 (SDV) ,以及其他驗證工具尋找錯誤,而且是撰寫 Windows 操作系統驅動程式的需求。

例如,若要定義名為MyExTimerCallbackExTimerCallback 回呼例程,請使用 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呼叫。

另請參閱

EX_TIMER

ExAllocateTimer

ExCancelTimer

ExSetTimer

KeWaitForMultipleObjects

KeWaitForSingleObject