次の方法で共有


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 以降で使用できます。
ターゲット プラットフォーム 万国
ヘッダー wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL 任意のレベル

関連項目

高解像度タイムスタンプ の取得

KeQueryInterruptTime

KeQueryTimeIncrement

KeQueryUnbiasedInterruptTime