次の方法で共有


KeSetImportanceDpc 関数 (ntddk.h)

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

構文

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

パラメーター

[in, out] Dpc

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

[in] Importance

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

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

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

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

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

必要条件

要件 価値
サポートされる最小クライアント Windows 2000 以降で使用できます。
ターゲット プラットフォーム 万国
ヘッダー ntddk.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL 任意のレベル

関連項目

IoRequestDpc

KeInitializeDpc

KeInsertQueueDpc

KeSetTargetProcessorDpc

KeSynchronizeExecution