KeQueryInterruptTimePrecise 関数 (wdm.h)
KeQueryInterruptTimePrecise ルーチンは、システム割り込み時間数の現在の値をマイクロ秒単位の精度で返します。
構文
ULONG64 KeQueryInterruptTimePrecise(
[out] PULONG64 QpcTimeStamp
);
パラメーター
[out] QpcTimeStamp
ルーチンが戻り値の補間に使用するパフォーマンス カウンター値を書き込むULONG64変数へのポインター。
戻り値
現在の割り込み時間数 (100 ナノ秒単位)。
注釈
KeQueryInterruptTimePrecise は、オペレーティング システムが最後に開始されてからの時間である、システムの現在の割り込み時間を返します。 KeQueryInterruptTimePrecise は KeQueryInterruptTime ルーチンに似ていますが、より正確です。
KeQueryInterruptTime によって報告される割り込み時間は、システム クロック タイマーの最新のティックに基づいています。 クロック タイマーは、システム クロックの割り込みを定期的に生成するハードウェア タイマーです。 クロック タイマー割り込みの間隔はシステム クロック ティックと呼ばれ、通常はハードウェア プラットフォームに応じて 500 マイクロ秒から 15.625 ミリ秒の範囲です。 KeQueryInterruptTime によって取得される割り込み時間の値は、システム クロック ティック内で正確です。
KeQueryInterruptTime よりも正確な割り込み時間の値を指定するために、KeQueryInterruptTimePrecise はシステム パフォーマンス カウンターを使用して、最後のクロック タイマー割り込み以降の経過時間を測定し、この時刻を最新のクロック時刻に関連付けられている割り込み時間に追加します。 KeQueryInterruptTimePrecise によって報告される割り込み時間は、マイクロ秒単位で正確です。
一部のハードウェア プラットフォームでは、 KeQueryInterruptTimePrecise 呼び出しが KeQueryInterruptTime 呼び出しよりも遅くなる場合があります。 その理由は、 KeQueryInterruptTimePrecise がパフォーマンス カウンターを読み取り、追加の遅延が発生する可能性があるということです。 詳細については、「 KeQueryPerformanceCounter」を参照してください。
KeQueryTimeIncrement ルーチンを呼び出して、システム クロック ティックのサイズを決定します。
システム時間を設定またはリセットする操作がシステム割り込み時間数に影響しないため、システムの実行中に非常に細かい期間を測定するために、正確な割り込み時間を使用できます。
ただし、電源管理状態の変更は、システム割り込み時間数に影響します。 割り込み時間数のメンテナンスは、システムのスリープ状態中に中断されます。 後続のスリープ解除状態遷移が発生すると、システムは割り込み時間数に "バイアス" 値を追加して、このようなスリープ状態の推定継続時間を補正します。 KeQueryInterruptTimePrecise によって返される割り込み時間数には、このバイアス値が含まれます。 公平な割り込み時間数を取得するには、 KeQueryUnbiasedInterruptTime を使用します。 現在、公平な割り込み時間数の正確なバージョンは使用できません。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8.1以降で使用できます。 |
対象プラットフォーム | ユニバーサル |
Header | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | 任意のレベル |