次の方法で共有


ExSetTimerResolution 関数 (wdm.h)

ExSetTimerResolution ルーチンは、システム クロックが割り込む周波数を変更します。 このルーチンは細心の注意を払って使用してください (次の「解説」セクションを参照)。

構文

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

パラメーター

[in] DesiredTime

各タイマー割り込みまでの経過時間を 100 ナノ秒単位で指定します。 最小値は約 10,000 (1 ミリ秒) ですが、プラットフォームによって若干異なる場合があります。 (SetResolution が FALSE 場合、このパラメーターは無視されます)。

[in] SetResolution

TRUE 場合、呼び出しは、クロック割り込み周波数を DesiredTime で指定された値設定する要求です。 FALSE 場合、呼び出しは、クロック割り込み頻度をシステムの既定値 (プラットフォーム固有) に復元する要求です。

戻り値

ExSetTimerResolution は、新しいタイマー解像度を 100 ナノ秒単位で返します。

備考

タイマーの解決を設定するには、ドライバーは、setResolution のパラメーターとして true 渡すこのルーチン呼び出します。 次の規則が適用されます。

  • このルーチンは、指定された DesiredTime 値が現在の設定より小さい場合にのみ、クロック割り込み周波数を変更します。

  • ドライバーが現在設定されている値より大きい DesiredTime 値を要求した場合、ルーチンは現在の設定を返すだけです。

  • ドライバーがシステム クロックでサポートできるよりも小さい DesiredTime 値を要求した場合、ルーチンはシステムがサポートできる最小の解像度を使用し、その値を返します。

このルーチンを使用してクロック割り込み頻度を変更する場合、ドライバーは、通常、アンロードされる前に次の呼び出しを行うことによって、既定の割り込み頻度を復元する必要があります。

ExSetTimerResolution (0, FALSE);

複数のドライバーがクロック割り込み周波数を変更しようとした場合、システムは、これらのすべてのドライバーがこのルーチンを呼び出すまで、既定の周波数 FALSEの値 戻しません。

クロック割り込み周波数を変更した結果、システム全体が変化し、システムのパフォーマンスに深刻な悪影響を及ぼす可能性があります。 また、クロック割り込み周波数が高いほど、システムのバッテリ寿命が短くなる可能性があることにも注意してください。

IRP_MJ_POWER 要求の処理中に、電源マネージャーは、ExSetTimerResolution が完了するために取得する必要があるリソース ロックを保持します。 その結果、電源要求の処理中にドライバーが直接または間接的に ExSetTimerResolution 呼び出しを行い、ドライバーが電源要求を完了する前に ExSetTimerResolution 呼び出しが返されるのを待つと、デッドロックが発生します。 Power IRP の処理中 ExSetTimerResolution を安全に呼び出す方法の詳細については、「Power IRPの処理中に ExSetTimerResolution を呼び出す」を参照してください。

必要条件

要件 価値
ターゲット プラットフォーム 万国
ヘッダー wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL IRQL <= APC_LEVEL
DDI コンプライアンス規則 する HwStorPortProhibitedDDIs(storport), IrqlExApcLte2(wdm)

関連項目

KeSetTimerEx