exSetTimerResolution 函式 (wdm.h)

ExSetTimerResolution 例程會修改系統時鐘中斷的頻率。 請特別小心使用此例程, (請參閱下列一節) 。

語法

ULONG ExSetTimerResolution(
  [in] ULONG   DesiredTime,
  [in] BOOLEAN SetResolution
);

參數

[in] DesiredTime

以 100 奈秒為單位,指定每個定時器中斷之間應該經過的時間量。 最小值大約是 10,000 (1 毫秒) 但可能會因平臺而稍有不同。 (如果 SetResolutionFALSE.) ,則會忽略此參數

[in] SetResolution

如果為 TRUE,則呼叫是將時鐘中斷頻率設定為 DesiredTime 所指定的值的要求。 如果為 FALSE,則呼叫是將時鐘中斷頻率還原至系統預設值的要求,這是平臺特定的。

傳回值

ExSetTimerResolution 會以 100 奈秒為單位傳回新的定時器解析度。

備註

若要設定定時器解析度,驅動程式會呼叫此例程,將 TRUE 當做 SetResolution 的參數傳遞。 適用的規則如下:

  • 只有在指定的 DesiredTime 值小於目前的設定時,例程才會變更時鐘中斷頻率。

  • 如果驅動程式要求的 DesiredTime 值大於目前設定的值,例程只會傳回目前的設定。

  • 如果驅動程式要求的 DesiredTime 值小於系統時鐘可以支援,則例程會使用系統可支援的最小解析度,並傳回該值。

如果您使用這個例程來變更時鐘中斷頻率,則驅動程式必須還原預設插斷頻率,通常是在卸載之前進行下列呼叫:

ExSetTimerResolution (0, FALSE);

如果多個驅動程式嘗試修改時鐘中斷頻率,系統不會還原默認頻率,直到所有這些驅動程式都以 SetResolution 值為 FALSE 的 SetResolution 值呼叫此例程為止。

變更時鐘中斷頻率的結果是全系統,而且可能會對系統效能造成嚴重負面影響。 另請注意,較高的時鐘中斷頻率可以縮短系統的電池使用時間。

在處理 IRP_MJ_POWER 要求期間,電源管理員會鎖定 ExSetTimerResolution 必須取得才能完成的資源。 因此,如果驅動程式直接或間接在處理電源要求時呼叫 ExSetTimerResolution ,然後等候呼叫 ExSetTimerResolution ,在驅動程式完成電源要求之前傳回,就會發生死結。 如需在處理電源 IRP 時安全地呼叫 ExSetTimerResolution 的詳細資訊,請參閱 在處理 Power IRP 時呼叫 ExSetTimerResolution

規格需求

需求
目標平台 Universal
標頭 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL IRQL <= APC_LEVEL
DDI 合規性規則 HwStorPortProhibitedDDIs (storport) IrqlExApcLte2 (wdm)

另請參閱

KeSetTimerEx