共用方式為


exAllocateTimer 函式 (wdm.h)

ExAllocateTimer 例程會配置並初始化定時器物件。

語法

PEX_TIMER ExAllocateTimer(
  [in, optional] PEXT_CALLBACK Callback,
  [in, optional] PVOID         CallbackContext,
  [in]           ULONG         Attributes
);

參數

[in, optional] Callback

驅動程序實作 ExTimerCallback 回 呼例程的指標。 當定時器到期時,操作系統會呼叫此例程。 此參數是選擇性的,如果不需要回呼例程,則可以是 NULL

[in, optional] CallbackContext

Callback 參數所指向之回呼例程的內容值。 如果指定此值,操作系統會將此值當做參數傳遞至 ExTimerCallback 回 呼例程。 此參數通常是呼叫端定義結構的指標,其中包含回呼例程所使用的內容資訊。 此參數是選擇性的,如果不需要任何內容資訊,則可以設定為 NULL

[in] Attributes

定時器屬性。 將此參數設定為零,或設定為下列一個或多個定時器旗標位的位 OR。

定時器旗標位 Description
EX_TIMER_HIGH_RESOLUTION 高解析度定時器。 使用更高解析度的時鐘來驅動定時器,讓定時器更精確。
EX_TIMER_NO_WAKE 無喚醒定時器。 讓定時器延遲喚醒處理器,直到定時器的到期時間加上超過其延遲容錯為止。
EX_TIMER_NOTIFICATION 通知定時器。 讓定時器成為通知定時器,而不是同步定時器。 如果未設定此旗標,定時器就是同步定時器。
 

不論設定其他旗標位為何,都可以設定EX_TIMER_NOTIFICATION旗標位。

EX_TIMER_HIGH_RESOLUTION和EX_TIMER_NO_WAKE旗標位互斥。 如果呼叫端設定這兩個旗標位,例程錯誤會檢查。

如需定時器屬性的詳細資訊,請參閱。

傳回值

如果呼叫成功,此例程會傳回 EX_TIMER 結構的指標。 這個結構是例程已配置和初始化的定時器物件。 如果呼叫失敗,例程會傳回 NULL

備註

這個例程會傳回新定時器物件的指標。 若要使用定時器,呼叫驅動程式會在後續呼叫 ExSetTimerExCancelTimerExDeleteTimer 例程中提供此指標。 如果驅動程式提供 ExTimerCallback 回 呼例程的指標做為 ExAllocateTimer 例程的輸入參數,操作系統會將這個定時器對象當做輸入參數傳遞至 ExTimerCallback 例程。

定時器可以是通知定時器或同步處理定時器。 當通知定時器收到訊號時,所有等候的線程都已滿足其等候。 此定時器的狀態會維持訊號,直到明確重設為止。 當同步處理定時器過期時,其狀態會設定為訊號,直到釋放單一等候線程為止。 然後,定時器會重設為未發出訊號的狀態。

如果在 Attributes 中設定了EX_TIMER_HIGH_RESOLUTION旗標位,操作系統會視需要增加系統時鐘的解析度,讓定時器到期的時間更精確地對應到 DueTimePeriod 參數中所指定的到期時間 。ExSetTimer 例程。 如需詳細資訊,請參閱 高解析度定時器

如果已在 Attributes 中設定EX_TIMER_NO_WAKE旗標位,定時器就會避免不必要地從低電源狀態喚醒處理器。 如需詳細資訊,請參閱 無喚醒定時器

ExAllocateTimer 會配置定時器對象的記憶體。 不再需要此物件時,呼叫端會藉由呼叫 ExDeleteTimer 例程來負責釋放此物件。

Callback 參數是選擇性的。 未提供 ExTimerCallback 例程的驅動程式可以改為在定時器物件上起始等候作業。 驅動程式線程可以呼叫 KeWaitForSingleObjectKeWaitForMultipleObjects 等例程,以等候定時器到期。 定時器到期時,定時器對象會發出訊號。

如需詳細資訊,請參閱 ExXxxTimer 例程和EX_TIMER物件

規格需求

需求
最低支援的用戶端 從 Windows 8.1 開始提供。
目標平台 Universal
標頭 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
程式庫 Ntoskrnl.lib
IRQL <= DISPATCH_LEVEL

另請參閱

EX_TIMER

ExCancelTimer

ExDeleteTimer

ExSetTimer

ExTimerCallback