次の方法で共有


KeDelayExecutionThread 関数 (wdm.h)

KeDelayExecutionThread ルーチンは、指定された間隔で、現在のスレッドをアラート可能または非アラート可能な待機状態にします。

構文

NTSTATUS KeDelayExecutionThread(
  [in] KPROCESSOR_MODE WaitMode,
  [in] BOOLEAN         Alertable,
  [in] PLARGE_INTEGER  Interval
);

パラメーター

[in] WaitMode

呼び出し元が待機しているプロセッサ モード ( KernelMode または UserMode ) を指定します。 下位レベルのドライバーでは 、KernelMode を指定する必要があります。

[in] Alertable

待機が警告可能な場合は TRUE を 指定します。 下位レベルのドライバーは FALSE を指定する必要があります。

[in] Interval

待機が発生する 100 ナノ秒の単位で、絶対時間または相対時間を指定します。 負の値は相対時間を示します。 絶対有効期限は、システム時間の変更を追跡します。相対有効期限は、システム時刻の変更の影響を受けません。

戻り値

KeDelayExecutionThread は、遅延がどのように完了したかを説明する次のいずれかの値を返します。

リターン コード 説明
STATUS_SUCCESS
指定した間隔が経過したため、遅延が完了しました。
STATUS_ALERTED
スレッドが警告されたため、遅延が完了しました。
STATUS_USER_APC
指定した 間隔 の有効期限が切れる前に、ユーザー モード APC が配信されました。
 

NT_SUCCESS マクロでは、これらの状態値がすべて "成功" 値として認識されることに注意してください。

注釈

有効期限が計算され、現在のスレッドが待機状態になります。 指定された間隔が経過すると、スレッドは待機状態を終了し、準備完了状態になり、実行の対象になります。

Alertable パラメーターは、スレッドを警告できるタイミングと、その待機状態が中止されるタイミングを決定します。 詳細については、「 Waits and APC」を参照してください。

WaitMode パラメーターが UserMode の場合、待機中にカーネル スタックをスワップアウトできます。 したがって、呼び出し元は、UserMode 引数を使用して KeDelayExecutionThread を呼び出すときに、スタックにパラメーターを渡そうとしないでください

WaitMode パラメーターが UserMode または AlertableTRUE の場合、KeDelayExecutionThread の戻り値をチェックすることが特に重要です。KeDelayExecutionThread は、STATUS_USER_APCまたはSTATUS_ALERTEDの状態で早期に返される可能性があるためです。

ユーザーが中止できるすべての長期待機は UserMode 待機で、 AlertableFALSE に設定する必要があります。

可能であれば、ドライバーの複雑さを軽減するために、 AlertableFALSE に設定し、 WaitModeKernelMode に設定する必要があります。 このガイドラインの主な例外は、待機が長期待機である場合です。

遅延の有効期限は、遅延が期限切れになる絶対時刻、または現在のシステム時刻を基準とした時間として表されます。 Interval パラメーターの値が正の場合、有効期限は絶対時刻です。 この値が負の値の場合、有効期限は相対的な時間です。

有効期限はシステム クロックに対して測定され、オペレーティング システムがタイマーの有効期限を検出できる精度は、システム クロックの粒度によって制限されます。 詳細については、「タイマーの 精度」を参照してください。

要件

要件
サポートされている最小のクライアント Windows 2000 以降で使用できます。
対象プラットフォーム ユニバーサル
Header wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL <= APC_LEVEL
DDI コンプライアンス規則 HwStorPortProhibitedDDIs(storport), IrqlKeApcLte1(wdm), PowerIrpDDis(wdm)

こちらもご覧ください

KeQuerySystemTime