共用方式為


ExSetTimer 函式 (wdm.h)

ExSetTimer 例程會啟動定時器作業,並將定時器設定為在指定的到期時間到期。

語法

BOOLEAN ExSetTimer(
  [in]           PEX_TIMER           Timer,
  [in]           LONGLONG            DueTime,
  [in]           LONGLONG            Period,
  [in, optional] PEXT_SET_PARAMETERS Parameters
);

參數

[in] Timer

EX_TIMER 結構的指標。 此結構是先前由 ExAllocateTimer 例程配置的定時器物件。

[in] DueTime

定時器即將到期的絕對或相對時間。 如果 DueTime 參數的值是負數,則到期時間會相對於目前的系統時間。 否則,到期時間是絕對的。 到期時間以系統時間單位表示(100 奈秒間隔)。 絕對到期時間會追蹤系統時間中的任何變更;相對到期時間不會受到系統時間變更的影響。 自 1601 年初開始以來,絕對時間會以系統時間單位表示經過的時間量。

高解析度定時器DueTime 參數必須是相對時間(負值),或例程錯誤檢查。

[in] Period

系統時間單位的定時器選擇性期間(100 奈秒間隔)。 必須小於或等於 MAXLONG。 若為一次性定時器,而不是定期定時器,請將 期間 設為零。

[in, optional] Parameters

EXT_SET_PARAMETERS 結構的指標。 呼叫驅動程式先前稱為 ExInitializeSetTimerParameters 例程,以初始化這個結構。

傳回值

如果此例程取消呼叫例程時擱置的定時器,此例程會傳回 true。 否則,例程會傳回 FALSE 。 如需詳細資訊,請參閱。

言論

您的驅動程式可以呼叫此例程,將定時器設定為在未來時間到期。 然後,驅動程式可以等候定時器到期。 或者,驅動程式可以實作定時器到期時所呼叫的回呼例程。

在驅動程式呼叫 ExSetTimer之後,驅動程式可以呼叫例程,例如 KeWaitForSingleObjectKeWaitForMultipleObjects 等候定時器到期。 定時器到期時,作系統會發出定時器對象的訊號。

作為選項,驅動程式可以實作 ExTimerCallback 回呼例程,並提供此例程的指標作為 ExAllocateTimer 例程的輸入參數。 定時器到期時,作系統會呼叫 ExTimerCallback 例程。

ExSetTimer 呼叫會隱含地取消 Timer所指定的定時器物件上任何先前啟動的設定定時器作業。 如果您的驅動程式先前呼叫 ExSetTimer 來設定 使用定時器的定時器,而且當 ExSetTimer 第二次呼叫時,此定時器尚未過期,第二次呼叫會從第一次呼叫取消定時器,然後啟動新的定時器。 在這裡情況下,第二個呼叫會傳回 true 。 不過,如果第一次呼叫啟動的定時器會在第二次呼叫取消此定時器之前到期,則第二次呼叫會啟動新的定時器,並傳回 FALSE

如果 Period 參數為非零值,定時器為週期性。 針對定期定時器,DueTime 參數會指定初始定時器到期的時間,而 Period 會指定後續到期之間的間隔。

用於系統時鐘訊號的硬體定時器會以統一間隔中斷要求,但這些中斷的處理可能會因為其他裝置的中斷處理而延遲。 因此,針對定期定時器,從定期到期時間延遲到定時器對象發出訊號的時間,或 ExTimerCallback 例程執行可能會因某個期間而異。 如需詳細資訊,請參閱 定時器精確度

定期定時器可以讓每個系統時鐘刻度到期不超過一次。 將定時器期間設定為小於系統時鐘刻度之間的間隔值,並不會導致定時器在每個系統時鐘刻度超過一次到期,但如果系統時鐘速率變更,則連續到期之間的間隔可能會有所不同。 例如,作系統可能會暫時增加系統時鐘速率,以符合高解析度定時器的計時需求。 如需詳細資訊,請參閱 High-Resolution 定時器

對於不是高解析度定時器的定期定時器,驅動程式可以將 期間 設定為系統時鐘刻度之間預設間隔的整數倍數,以達到相對統一的定期到期時間。

為了避免過度耗電量,驅動程式不應將長時間執行的高解析度定時器期間設定為小於系統時鐘刻度之間的預設間隔值。 否則,系統時鐘定時器會以允許的系統時鐘速率上限持續產生中斷。

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

要求

要求 價值
最低支援的用戶端 從 Windows 8.1 開始提供。
目標平臺 普遍
標頭 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
連結庫 Ntoskrnl.lib
IRQL <= DISPATCH_LEVEL

另請參閱

EXT_SET_PARAMETERS

EX_TIMER

ExAllocateTimer

ExInitializeSetTimerParameters

ExTimerCallback

KeWaitForMultipleObjects

KeWaitForSingleObject