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。
備註
這個例程會傳回新定時器物件的指標。 若要使用定時器,呼叫驅動程式會在後續呼叫 ExSetTimer、 ExCancelTimer 和 ExDeleteTimer 例程中提供此指標。 如果驅動程式提供 ExTimerCallback 回 呼例程的指標做為 ExAllocateTimer 例程的輸入參數,操作系統會將這個定時器對象當做輸入參數傳遞至 ExTimerCallback 例程。
定時器可以是通知定時器或同步處理定時器。 當通知定時器收到訊號時,所有等候的線程都已滿足其等候。 此定時器的狀態會維持訊號,直到明確重設為止。 當同步處理定時器過期時,其狀態會設定為訊號,直到釋放單一等候線程為止。 然後,定時器會重設為未發出訊號的狀態。
如果在 Attributes 中設定了EX_TIMER_HIGH_RESOLUTION旗標位,操作系統會視需要增加系統時鐘的解析度,讓定時器到期的時間更精確地對應到 DueTime 和 Period 參數中所指定的到期時間 。ExSetTimer 例程。 如需詳細資訊,請參閱 高解析度定時器。
如果已在 Attributes 中設定EX_TIMER_NO_WAKE旗標位,定時器就會避免不必要地從低電源狀態喚醒處理器。 如需詳細資訊,請參閱 無喚醒定時器。
ExAllocateTimer 會配置定時器對象的記憶體。 不再需要此物件時,呼叫端會藉由呼叫 ExDeleteTimer 例程來負責釋放此物件。
Callback 參數是選擇性的。 未提供 ExTimerCallback 例程的驅動程式可以改為在定時器物件上起始等候作業。 驅動程式線程可以呼叫 KeWaitForSingleObject 或 KeWaitForMultipleObjects 等例程,以等候定時器到期。 定時器到期時,定時器對象會發出訊號。
如需詳細資訊,請參閱 ExXxxTimer 例程和EX_TIMER物件。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 從 Windows 8.1 開始提供。 |
目標平台 | Universal |
標頭 | wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
程式庫 | Ntoskrnl.lib |
IRQL | <= DISPATCH_LEVEL |