共用方式為


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

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

傳回值

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

言論

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

NdisSetTimerObject 的運作方式類似 NdisSetCoalescableTimerObjectTolerance 設定為零。

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

如果在 MillisecondsPeriod 參數中指定非零值,定時器物件會再次排入佇列,直到 (MillisecondsPeriod - Tolerance) 範圍中的間隔和 (MillisecondsPeriod + Tolerance) 的間隔到期。 在此間隔到期之後,定時器物件會重新提交至佇列,且呼叫端提供的 NetTimerCallback 函式會在 IRQL = DISPATCH_LEVEL一次執行處理器。

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

建議將 毫秒Tolerance 設定為 50 毫秒的倍數。 典型的 毫秒 值為 50、100、250、500 和 1000 毫秒。 典型的 容錯 值為 50、100、150 和 250 毫秒。

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

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

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

要求

要求 價值
最低支援的用戶端 NDIS 6.20 和更新版本支援。
目標平臺 普遍
標頭 ndis.h (包括 Ndis.h)
連結庫 Ndis.lib
IRQL <= DISPATCH_LEVEL

另請參閱

KeSetTimerEx

NDIS_TIMER_CHARACTERISTICS

NdisAllocateTimerObject

NdisCancelTimerObject

NdisSetTimerObject

NetTimerCallback