共用方式為


NdisCancelTimerObject 函式 (ndis.h)

NdisCancelTimerObject 函式會取消與先前呼叫 NdisSetTimerObject 函式相關聯的定時器物件。

語法

BOOLEAN NdisCancelTimerObject(
  [in] NDIS_HANDLE TimerObject
);

參數

[in] TimerObject

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

傳回值

如果指定的定時器對象位於系統定時器佇列中,NdisCancelTimerObject 會傳回 TRUE;否則會傳回 FALSE

備註

呼叫 NdisCancelTimerObject 會 取消 NetTimerCallback 函式的執行,前提是最後指定的逾時間隔尚未過期。

NDIS 驅動程式應該在停止或卸除時先呼叫 NdisCancelTimerObject ,以確保 NetTimerCallback 函式不會嘗試存取驅動程式已釋放的資源。

如果在 NdisSetTimerObject 函式的 MillisecondsPeriod 參數中指定非零值,則定時器稱為定期定時器。 如果在 MillisecondsPeriod 參數中指定零值,則定時 器稱為一次性定時器。 下列幾點適用於取消這兩種類型的定時器:

  • 如果 NdisCancelTimerObject 的呼叫端取消定期定時器,則必須在 IRQL = PASSIVE_LEVEL執行。 否則, NdisCancelTimerObject 的呼叫端應該在 IRQL <= DISPATCH_LEVEL 執行。
  • 如果 NdisCancelTimerObject 的呼叫端取消定期定時器, NdisCancelTimerObject 會呼叫 KeFlushQueuedDpcs ,以確保定時器目前未執行。 因此,呼叫端不需要有個別的同步處理機制,以確保定時器目前未在另一個處理器上執行。

    如果 NdisCancelTimerObject 的呼叫端正在取消單次定時器,則呼叫端必須有個別的同步處理機制,以確保定時器目前未在另一個處理器上執行。 例如,呼叫端可以呼叫 NDIS_WAIT_FOR_MUTEX ,以便在線程即將完成時等候定時器線程發出 mutex 物件的訊號。

    如需詳細資訊,請參閱 網路驅動程式中的同步處理和通知

規格需求

需求
最低支援的用戶端 NDIS 6.0 和更新版本支援。
目標平台 Universal
標頭 ndis.h (包含 Ndis.h)
程式庫 Ndis.lib
IRQL 請參閱一節
DDI 合規性規則 Irql_Timer_Function (ndis) PeriodicTimer (ndis)

另請參閱

NdisAllocateTimerObject

NdisSetTimerObject

NetTimerCallback