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) |