共用方式為


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 和更新版本支援。
目標平臺 普遍
標頭 ndis.h (包括 Ndis.h)
連結庫 Ndis.lib
IRQL 請參閱一節
DDI 合規性規則 Irql_Timer_Function(ndis)PeriodicTimer(ndis)

另請參閱

NdisAllocateTimerObject

NdisSetTimerObject

NetTimerCallback