NDIS_TIMER_FUNCTION回呼函式 (ndis.h)
當定時器引發時, NdisTimerFunction 回呼函式是由 NDIS 呼叫之後,設定一次性或定期定時器。
語法
NDIS_TIMER_FUNCTION NdisTimerFunction;
void NdisTimerFunction(
[in] PVOID SystemSpecific1,
[in] PVOID FunctionContext,
[in] PVOID SystemSpecific2,
[in] PVOID SystemSpecific3
)
{...}
參數
[in] SystemSpecific1
保留供系統使用之系統特定值的指標。
[in] FunctionContext
驅動程式傳遞至 NdisSetTimerObject 函式的驅動程式提供內容區域的指標。 如果 NdisSetTimerObject 的 FunctionContext 參數為 NULL,NDIS 會使用驅動程式在 中指定的預設值 NDIS_TIMER_CHARACTERISTICS 結構。 驅動程式將 結構傳遞至 NdisAllocateTimerObject 函式,以初始化相關聯的定時器物件。
[in] SystemSpecific2
保留供系統使用之系統特定值的指標。
[in] SystemSpecific3
保留供系統使用之系統特定值的指標。
傳回值
無
備註
任何 NDIS 驅動程式都可以有一或多個 NdisTimerFunction 回呼函式。 每個這類 NdisTimerFunction 回呼都必須與不同的驅動程式配置和初始化定時器對象相關聯。
驅動程式會藉由呼叫 來初始化驅動程式配置的定時器物件 NdisAllocateTimerObject 函式。
後續對 NdisSetTimerObject 函式的呼叫會導致與定時器對象相關聯的 NdisTimerFunction 回呼在指定的間隔之後或定期執行。
若要取消 對 NdisTimerFunction 的呼叫,請呼叫 NdisCancelTimerObject 函式。 如果逾時已在呼叫 NdisCancelTimerObject 之前過期,NDIS 仍可能會呼叫 NdisTimerFunction。
如果 NdisTimerFunction 回呼與其他驅動程式函式共用資源,驅動程式應該同步處理這些資源的存取權與微調鎖定。
例子
若要定義 NdisTimerFunction 函式,您必須先提供函式宣告來識別您要定義的函式類型。 Windows 提供一組驅動程式的函式類型。 使用函式類型宣告函式有助於 驅動程式的程式代碼分析、 靜態驅動程序驗證器 (SDV) ,以及其他驗證工具會尋找錯誤,而且這是撰寫 Windows 操作系統驅動程式的需求。例如,若要定義名為 「MyTimerCallback」 的 NdisTimerFunction 函式,請使用 NDIS_TIMER_FUNCTION 類型,如下列程式代碼範例所示:
NDIS_TIMER_FUNCTION MyTimerCallback;
然後,實作您的函式,如下所示:
_Use_decl_annotations_
VOID
MyTimerCallback(
PVOID SystemSpecific1,
PVOID FunctionContext,
PVOID SystemSpecific2,
PVOID SystemSpecific3
)
{...}
NDIS_TIMER_FUNCTION函式類型定義於 Ndis.h 頭檔中。 若要在執行程式代碼分析工具時更精確地識別錯誤,請務必將 Use_decl_annotations 註釋新增至函式定義。 Use_decl_annotations批注可確保使用頭檔中套用至NDIS_TIMER_FUNCTION函式類型的批注。 如需函式宣告需求的詳細資訊,請參閱 使用 NDIS 驅動程式的函式角色類型來宣告函式。
如需 Use_decl_annotations的詳細資訊,請參閱 標註函式行為。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | NDIS 6.0 和更新版本支援。 |
目標平台 | Windows |
標頭 | ndis.h (包括 Ndis.h) |
IRQL | DISPATCH_LEVEL |