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