共用方式為


NdisSetCoalescableTimerObject 函式 (ndis.h)

當定時器作業的確切到期時間不重要時, NdisSetCoalescableTimerObject 函式會設定操作系統與其他定時器協調的定時器物件,通常減少耗電量。

語法

BOOLEAN NdisSetCoalescableTimerObject(
  [in]           NDIS_HANDLE   TimerObject,
  [in]           LARGE_INTEGER DueTime,
  [in, optional] LONG          MillisecondsPeriod,
  [in, optional] PVOID         FunctionContext,
  [in, optional] ULONG         Tolerance
);

參數

[in] TimerObject

當驅動程式呼叫 時,NDIS 提供的定時器物件的句柄 NdisAllocateTimerObject 函式。

[in] DueTime

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

[in, optional] MillisecondsPeriod

選擇性的定期時間間隔,以毫秒為單位,除非取消定時器,否則定時器引發時,每個實例之間都會經過,以及下一次對 NetTimerCallback 函式的呼叫。 此參數的值必須小於或等於 MAXLONG。 此參數可以設定為零,表示定時器為非定期。

[in, optional] FunctionContext

當定時器引發時,NDIS 傳遞至相關聯 NetTimerCallback 函式的呼叫端提供內容區域的指標。 如果此參數為 NULL,NDIS 會使用 中指定的預設值 NDIS_TIMER_CHARACTERISTICS 結構。

[in, optional] Tolerance

MillisecondsPeriod 所指定的定時器期間與 DueTime 所指定的初始時間間隔之間,容錯以毫秒為單位。 定期定時器會先在 DueTimeTolerance ( ) 和 ( DueTime + - Tolerance ) 之間的時間間隔到期。 定期定時器兩個稍後到期之間的時間間隔會介於 ( 毫秒的容錯 ) 和 ( 毫秒Period + - 容錯 ) 的範圍內。

傳回值

如果定時器對象已經在系統定時器佇列中,NdisSetCoalescableTimerObject 會傳回 TRUE;否則會傳回 FALSE

備註

此函式所設定的定時器物件的運作方式與 NdisSetTimerObject 所設定的定時器物件相同,並將額外的容錯值新增至到期參數 DueTime 。 操作系統會使用此額外的容錯值來調整定時器的到期時間,以符合其他軟體定時器的到期時間。 如此一來,操作系統可以降低耗電量並提升能源效率。

Tolerance 設定為零時,NdisSetTimerObject 的運作方式與 NdisSetCoalescableTimerObject 類似。

驅動程式呼叫 NdisSetCoalescableTimerObject 之後,定時器物件會排入佇列,直到 ( DueTimeTolerance ) 範圍內的間隔到期,並 ( DueTime + - Tolerance ) 。 間隔到期之後,操作系統會從佇列中移除定時器物件,而呼叫端提供的 NetTimerCallback 函式會在 IRQL = DISPATCH_LEVEL一次執行,只要處理器可供使用。

如果在MillisecondsPeriod 參數中指定非零值,定時器物件會再次排入佇列,直到 ( 毫秒容錯 ) 範圍中的間隔,以及 ( 毫秒Period - + 容錯 ) 到期為止。 此間隔到期之後,定時器物件會重新提交至佇列,而呼叫端提供的 NetTimerCallback 函式會在 IRQL = DISPATCH_LEVEL一次執行,只要處理器可供使用。

若要有效地使用定時器聯合,呼叫端應該指定至少 32 毫秒的 容錯 值。 這個值相當於大約兩個預設系統時鐘間隔 15.6 毫秒。 如果可以這麼做,請使用較大的 容錯 值,例如 100 毫秒。

我們建議 將毫秒PeriodTolerance 設定為 50 毫秒的倍數。 一般 毫秒Period 值為 50、100、250、500 和 1000 毫秒。 典型的 容錯 值為 50、100、150 和 250 毫秒。

一般而言,具有大型 MillisecondsPeriod 值的定時器可以使用比例較大的 容錯 值。 例如, 具有MillisecondsPeriod = 500 毫秒的定時器可能會使用 Tolerance = 50 毫秒。 但 具有MillisecondsPeriod = 10 秒的定時器可能會使用 Tolerance = 1 秒。

如需定時器行為的詳細資訊,請參閱 KeSetTimerEx

若要取消定時器,請呼叫 NdisCancelTimerObject 函式。

規格需求

需求
最低支援的用戶端 NDIS 6.20 和更新版本支援。
目標平台 Universal
標頭 ndis.h (包括 Ndis.h)
程式庫 Ndis.lib
IRQL <= DISPATCH_LEVEL

另請參閱

KeSetTimerEx

NDIS_TIMER_CHARACTERISTICS

NdisAllocateTimerObject

NdisCancelTimerObject

NdisSetTimerObject

NetTimerCallback