KeSetTimer 函式 (wdm.h)
KeSetTimer 例程會設定定時器對象的絕對或相對間隔,並選擇性地提供 CustomTimerDpc 例程,以在該間隔到期時執行。
語法
BOOLEAN KeSetTimer(
[in, out] PKTIMER Timer,
[in] LARGE_INTEGER DueTime,
[in, optional] PKDPC Dpc
);
參數
[in, out] Timer
以 keInitializeTimer 或 KeInitializeTimerEx初始化之定時器物件的指標。
[in] DueTime
指定定時器到期的絕對或相對時間。 如果 DueTime 參數的值是負數,則到期時間會相對於目前的系統時間。 否則,到期時間是絕對的。 到期時間以系統時間單位表示(100 奈秒間隔)。 絕對到期時間會追蹤系統時間中的任何變更;相對到期時間不會受到系統時間變更的影響。
[in, optional] Dpc
由 KeInitializeDpc初始化之 DPC 物件的指標。 這個參數是選擇性的。
傳回值
如果定時器物件已經在系統定時器佇列中,KeSetTimer 會傳回 TRUE 。
言論
KeSetTimer 例程會執行下列動作:
計算到期時間。
將定時器設定為未發出訊號的狀態。
在系統定時器佇列中插入定時器物件。
如果定時器對象已經在定時器佇列中,則會在設定為新的到期時間之前隱含取消它。 在先前指定的 DueTime 之前呼叫 KeSetTimer 已過期,會取消定時器和呼叫 Dpc,如果有的話,與上一個呼叫相關聯。
如果指定 Dpc 參數,DPC 物件就會與定時器對象相關聯。 定時器到期時,定時器物件會從系統定時器佇列中移除,而且其狀態會設定為已發出訊號。 如果 DPC 物件在設定定時器時與定時器相關聯,則會在定時器間隔到期之後,將 DPC 物件插入系統 DPC 佇列中,以在定時器間隔到期后立即執行。
到期時間會相對於系統時鐘進行測量,以及作系統在定時器到期時可以偵測到的精確度受限於系統時鐘的粒度。 如需詳細資訊,請參閱 定時器精確度。
在任何指定的時刻,只能將指定 DPC 物件的具現化排入佇列。 為了避免潛在的競爭狀況,DPC 傳遞至 KeSetTimer 不應傳遞至 keInsertQueueDpc 。
驅動程式必須取消其 卸除 例程中的任何作用中定時器。 使用 KeCancelTimer 取消任何定時器。
KeSetTimer 的呼叫端可以指定定時器的一個到期時間。 若要設定週期性定時器,請使用 KeSetTimerEx。
如需定時器物件的詳細資訊,請參閱 定時器物件和 DPC。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | 從 Windows 2000 開始提供。 |
目標平臺 | 普遍 |
標頭 | wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
連結庫 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |
DDI 合規性規則 | HwStorPortProhibitedDIs(storport),IrqlKeDispatchLte(wdm) |