次の方法で共有


Low-Power 状態からの起動時のプロセッサ リソースの共有

スタンバイ状態または休止状態 (ウォーム スタートアップ) からコンピューターを起動する場合、ドライバーは必要以上に長くプロセッサ リソースを使用しないようにする必要があります。 最も重要なのは、IRQL >= DISPATCH_LEVEL で実行される遅延プロシージャ 呼び出し (DPC) ルーチンとコードは、実行時間を最小限に抑える必要があります。 ドライバーは、デバイスの初期化に役立つ DPC ルーチンを使用します。 ドライバーは、ポート ミニポート インターフェイス コントラクトの一部として、DISPATCH_LEVELで初期化コードを実行する必要があります。

DPC ルーチンが実行されている間は、優先度の低い他のスレッドが同じプロセッサで実行されないようにブロックされます。 さらに、キューに入れ、実行する準備ができている他の DPC ルーチンは、現在の DPC が完了するまでブロックされる可能性があります。 他のスレッドを効率的に実行できるようにするには、一般的な DPC ルーチンを 100 マイクロ秒以下で実行する必要があります。

システムの起動時に実行される DPC ルーチンが長すぎると、他のデバイスの初期化が遅れる可能性があります。 この遅延により、デバイスの初期化フェーズが長くなり、オペレーティング システムによる起動の完了が遅れます。

DPC ルーチンを設計するには、次のベスト プラクティスを使用します。

  • 1 つの DPC ルーチンを 100 マイクロ秒以上実行しないでください。

  • KeStallExecutionProcessor ルーチンを呼び出して実行を遅延させる DPC ルーチンでは、100 マイクロ秒を超える遅延を指定することはできません。

  • タスクに 100 マイクロ秒を超える時間が必要で、DISPATCH_LEVELで実行される場合、DPC ルーチンは 100 マイクロ秒後に終了し、後でタスクを完了するように 1 つ以上の DPC タイマー ルーチンをスケジュールする必要があります。

  • WDK に記載されているパフォーマンス分析ツールを使用して、DPC ルーチンの実行時間を評価します。