次の方法で共有


デバイス レベルの温度管理

Windows では、Windows 8 以降、カーネル モード デバイス ドライバーによるデバイス レベルの温度管理がサポートされています。 Windows 温度管理の目標は次のとおりです。

  • ハードウェア プラットフォーム内のデバイスが過熱するのを防ぐことで、デバイスの誤動作や、信頼性の低下を防止します。

  • コンピューター ケースのユーザーが触れる表面が過熱して、ユーザーの使用に支障が出るのを防ぎます。

温度管理は、電源管理と同様、グローバルな温度条件のコンテキストで、個別のデバイスの温度的制約を調整することで、プラットフォーム全体に実装する必要があります。 オペレーティング システムは、グローバルな調整を提供することで、ユーザーが実行するタスクにできるだけ影響を与えない方法で、複数のデバイスに冷却要件を分散できます。 温度要件は、電源管理やユーザー アクションへの応答性など、他のシステム要件とインテリジェントにバランスを取ることができます。

これに対し、デバイス ドライバーは対象のデバイスをプラットフォーム内の他のデバイスから分離し、デバイスの温度レベルをローカルで管理するため、非効率的な電力使用や、ユーザー インターフェイス (UI) の無応答につながる不適切な決定を行う可能性が高くなります。

グローバル温度管理に参加するために、デバイス ドライバーは、GUID_THERMAL_COOLING_INTERFACE ドライバー インターフェイスを実装します。 システムが提供する Acpi.sys ドライバーは、システム起動時にシステム内のデバイス ドライバー宛てにクエリを実行して、どのデバイス ドライバーがこのインターフェイスをサポートしているかを特定します。 ドライバーのデバイスに対して AddDevice ルーチンが呼び出された後、ドライバーはいつでもこのインターフェイスに対する IRP_MN_QUERY_INTERFACE 要求を受け取ることができます。 温度管理機能を持つデバイスのドライバーは、この要求に対し、THERMAL_COOLING_INTERFACE 構造体へのポインターを提供できます。 この構造体には、ドライバーによって実装されるコールバック ルーチンのセットへのポインターが含まれています。 デバイスの温度レベルを管理するために、オペレーティング システムはこれらのルーチンを直接呼び出します。

このインターフェイスの主要ルーチンは、ActiveCoolingPassiveCooling の 2 つです。 ドライバーの ActiveCooling ルーチンは、デバイスのアクティブ冷却を有効または無効にします。 たとえば、このルーチンはファンをオン/オフします。 ドライバーの PassiveCooling ルーチンは、許容可能な温度レベルを維持するために、デバイスの性能をどの程度制限する必要があるかを制御します。 たとえば、このルーチンを呼び出して半分の速度でデバイスを実行し、過熱を防ぐことができます。

既定では、ActiveCooling ルーチンを初めて呼び出すまでは、アクティブ冷却は無効になっています (たとえば、ファンはオフです)。 PassiveCooling ルーチンを初めて呼び出すまで、ドライバーはデバイスが冷却制限なしで完全な性能を発揮するように構成します。

ドライバーは、デバイス ハードウェアの機能に応じて、これらのルーチンのいずれかまたは両方を実装できます。 詳細については、「パッシブとアクティブの冷却モード」を参照してください。