IO_TIMER_ROUTINE回呼函式 (wdm.h)

IoTimer 例程是 DPC,如果已註冊,則會每秒呼叫一次。

語法

IO_TIMER_ROUTINE IoTimerRoutine;

void IoTimerRoutine(
  [in]           _DEVICE_OBJECT *DeviceObject,
  [in, optional] PVOID Context
)
{...}

參數

[in] DeviceObject

呼叫端提供的 DEVICE_OBJECT結構的指標 。 這是目標裝置的裝置物件,先前是由驅動程式的 AddDevice 例程所建立。

[in, optional] Context

呼叫端提供的驅動程式定義內容資訊指標,指定於先前對 IoInitializeTimer的呼叫中。

傳回值

備註

驅動程式的 IoTimer 例程會在 DPC 內容中執行,在 IRQL = DISPATCH_LEVEL。

驅動程式可以將 IoTimer 例程與其建立的每個裝置對象產生關聯。 (您可以使用單一 IoTimer 例程搭配多個裝置物件,或每個裝置物件個別的例程。) 若要註冊 IoTimer 例程,驅動程式必須呼叫 IoInitializeTimer,並提供 IoTimer 例程的位址和裝置物件指標。

若要將 IoTimer 例程排入佇列以執行,驅動程式例程必須呼叫 IoStartTimer。 系統會每秒呼叫 IoTimer 例程一次,直到驅動程式呼叫 IoStopTimer為止。

如需 IoTimer 例程的詳細資訊,請參閱 IoTimer例程

範例

若要定義 IoTimer 回呼例程,您必須先提供函式宣告,以識別您要定義的回呼例程類型。 Windows 提供一組驅動程式的回呼函式類型。 使用回呼函式類型宣告函式有助於 驅動程式的程式代碼分析靜態驅動程式驗證器 (SDV) ,以及其他驗證工具會尋找錯誤,而且這是撰寫 Windows 操作系統驅動程式的需求。

例如,若要定義名為MyIoTimerIoTimer回呼例程,請使用 IO_TIMER_ROUTINE類型,如下列程式代碼範例所示:

IO_TIMER_ROUTINE MyIoTimer;

然後,實作回呼例程,如下所示:

_Use_decl_annotations_
VOID
  MyIoTimer(
    struct DEVICE_OBJECT  *DeviceObject,
    PVOID  Context
    )
  {
      // Function body
  }

IO_TIMER_ROUTINE函式類型定義於 Wdm.h 頭檔中。 若要在執行程式代碼分析工具時更精確地識別錯誤,請務必將 _Use_decl_annotations_ 註釋新增至函式定義。 註釋 _Use_decl_annotations_ 可確保使用頭檔中套用至IO_TIMER_ROUTINE函式類型的批註。 如需函式宣告需求的詳細資訊,請參閱 使用WDM驅動程式的函式角色類型來宣告函式。 如需 的相關信息 _Use_decl_annotations_,請參閱 標註函式行為

規格需求

需求
目標平台 桌面
標頭 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
IRQL 在 DISPATCH_LEVEL (呼叫,請參閱一節) 。