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 の SetResolution 値でこのルーチンを呼び出すまで、既定の頻度を復元しません。
クロック割り込み周波数を変更した結果、システム全体が変化し、システムのパフォーマンスに重大な悪影響を及ぼす可能性があります。 また、クロック割り込み周波数を高くすると、システムのバッテリ寿命が短くなる可能性があることにも注意してください。
IRP_MJ_POWER要求の処理中に、電源マネージャーは、ExSetTimerResolution が完了するために取得する必要があるリソースに対するロックを保持します。 その結果、ドライバーが電源要求の処理中に ExSetTimerResolution を直接または間接的に呼び出した後、 ExSetTimerResolution の呼び出しが戻るまで待機してから、ドライバーが電源要求を完了した場合にデッドロックが発生します。 電源 IRP の処理中に ExSetTimerResolution を安全に呼び出す方法の詳細については、「 Power IRP の処理中に ExSetTimerResolution を呼び出す」を参照してください。
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
Header | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | IRQL <= APC_LEVEL |
DDI コンプライアンス規則 | HwStorPortProhibitedDDIs(storport), IrqlExApcLte2(wdm) |