KeSetImportanceDpc 関数 (ntddk.h)
KeSetImportanceDpc ルーチンは、DPC ルーチンの実行時間を指定します。
構文
void KeSetImportanceDpc(
[in, out] PRKDPC Dpc,
[in] KDPC_IMPORTANCE Importance
);
パラメーター
[in, out] Dpc
KeInitializeDpc が既に初期化されている呼び出し元の DPC オブジェクトへのポインター。
[in] Importance
次のいずれかのシステム定義値を指定して、いずれかのルーチンを使用して DPC をキューに入れたときの KeInsertQueueDpc と 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 を配置します。 ドライバーが最初に重要度 = HighImportance で KeSetImportanceDpcを呼び出す場合、KeInsertQueueDpc と IoRequestDpc はキューの先頭に DPC を配置します。
- システムが DPC キューの処理を開始したとき。 通常、 KeInsertQueueDpc と IoRequestDpc は、現在のプロセッサの DPC キューの処理をすぐに開始します。 ドライバーは、この動作を変更する 重要度 の異なる値を指定できます。
Windows Vista 以降のバージョンの Windows オペレーティング システムでは、スレッド化された DPC に KeSetImportanceDpc を使用できます。 呼び出し元が Importance を HighImportance に設定した場合、DPC はキューの先頭に配置されます。それ以外の場合は、末尾に配置されます。 このルーチンは、スレッド化された DPC キューが処理される場合には影響しません。 スレッド DPC は、IRQL = PASSIVE_LEVELの専用スレッドによって常に処理されます。 スレッド化された DPC の詳細については、「スレッド化 された DPC の概要」を参照してください。
ドライバーは、KeInsertQueueDpc と IoRequestDpc を呼び出して効果を得る前に、KeSetImportanceDpc を呼び出す必要があることに注意してください。
システムが DPC キューを処理する方法の詳細については、「 DPC キューの編成」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 以降で使用できます。 |
対象プラットフォーム | ユニバーサル |
Header | ntddk.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | 任意のレベル |