KeSetImportanceDpc 関数 (wdm.h)

KeSetImportanceDpc ルーチンは、DPC ルーチンの実行時間を指定します。

構文

void KeSetImportanceDpc(
  [in, out] PRKDPC          Dpc,
  [in]      KDPC_IMPORTANCE Importance
);

パラメーター

[in, out] Dpc

KeInitializeDpc が既に初期化されている呼び出し元の DPC オブジェクトへのポインター。

[in] Importance

次のいずれかのシステム定義値を指定して、いずれかのルーチンを使用して DPC をキューに入れたときの KeInsertQueueDpcIoRequestDpc の動作を決定します。

LowImportance

DPC キューの末尾に DPC を配置し、キューの処理を開始しないでください。

MediumImportance

DPC キューの末尾に DPC を配置します。 DPC が現在のプロセッサの DPC キューに割り当てられている場合は、キューの処理をすぐに開始します。 MediumImportance、重要度の既定値です。

MediumHighImportance

DPC キューの末尾に DPC を配置し、キューの処理をすぐに開始します。 MediumHighImportance は、Windows Vista 以降のバージョンの Windows でのみ使用できます。

HighImportance

DPC キューの先頭に DPC を配置し、キューの処理をすぐに開始します。

戻り値

なし

解説

KeSetImportanceDpc ルーチンは、次の決定によって、キューに入れた後の DPC の実行時間に影響します。

  • DPC キュー内の DPC の場所。 通常、 KeInsertQueueDpc ルーチンと IoRequestDpc ルーチンは、キューの末尾に DPC を配置します。 ドライバーが最初に重要度 = HighImportance で KeSetImportanceDpc呼び出す場合、KeInsertQueueDpcIoRequestDpc はキューの先頭に DPC を配置します。
  • システムが DPC キューの処理を開始したとき。 通常、 KeInsertQueueDpcIoRequestDpc は、現在のプロセッサの DPC キューの処理をすぐに開始します。 ドライバーは、この動作を変更する 重要度 の異なる値を指定できます。
既定では、DPC は現在のプロセッサの DPC キューに割り当てられるため、[重要度] に MediumImportance または MediumHighImportance を指定すると同じ効果があります。 ただし、ドライバーは KeSetTargetProcessorDpc を使用して、DPC が割り当てられるプロセッサを変更できます。

Windows Vista 以降のバージョンの Windows オペレーティング システムでは、スレッド化された DPC に KeSetImportanceDpc を使用できます。 呼び出し元が ImportanceHighImportance に設定した場合、DPC はキューの先頭に配置されます。それ以外の場合は、末尾に配置されます。 このルーチンは、スレッド化された DPC キューが処理される場合には影響しません。 スレッド DPC は、IRQL = PASSIVE_LEVELの専用スレッドによって常に処理されます。 スレッド化された DPC の詳細については、「スレッド化 された DPC の概要」を参照してください。

ドライバーは、KeInsertQueueDpcIoRequestDpc を呼び出して効果を得る前に、KeSetImportanceDpc を呼び出す必要があることに注意してください。

システムが DPC キューを処理する方法の詳細については、「 DPC キューの編成」を参照してください。

要件

要件
サポートされている最小のクライアント Windows 2000 以降で使用できます。
対象プラットフォーム ユニバーサル
Header wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL 任意のレベル

こちらもご覧ください

IoRequestDpc

KeInitializeDpc

KeInsertQueueDpc

KeSetTargetProcessorDpc

KeSynchronizeExecution