外部ディスプレイ コネクタの明るさ調整のサポート

一部の OEM システムには、HDMI などの外部コネクタを使用して接続された内部ディスプレイがあります。 これらの構成では、Windows には、システム ソフトウェアの明るさ制御をサポートする 1 つのディスプレイ パネルを指定する機能があります。

この機能を使用すると、OEM は、外部コネクタディスプレイが明るさ制御をサポートしていることを Windows に示すだけです。 OEM は引き続きハードウェアの明るさコントロールを実装し、統合 コネクタディスプレイの場合と同様にグラフィックス ドライバーと統合する必要があります。 この機能では、複数のディスプレイ パネルで個々のパネルの明るさを制御する機能もサポートされていません。

統合表示パネルの明るさ制御のサポートについては、統合ディスプレイ・パネル での明るさ制御のサポートを参照してください。

一般的な要件

"BrightnessControl" DWORD レジストリ値を使用します。 レジストリ パスは HKLM\SYSTEM\CurrentControlSet\Control\Class{4D36E96E-E325-11CE-BFC1-08002BE10318}\XXXX です。 XXXX は対象の個々のディスプレイ用です。 次の図は、この値のレイアウトを示しています。

Brightness Control Registry 値のビット レイアウトを示す図。

  • このレジストリ値の最初のビットは、非インターナル モニターの明るさ制御のサポートを定義します。
  • 2 番目のビットは、ACPI の明るさを強制的に使用する ACPI オーバーライドを定義します。
  • 残りの 30 ビットは予約済みであり、0 である必要があります。

非インターフェイス パネルで明るさ制御を有効にする OEM は、独自の monitor.inf を出荷し (この記事のサンプル inf を参照)、このレジストリ値を適切に設定する必要があります。

OEM は、必要な場合にのみ "BrightnessControl" レジストリ値を定義する必要があります。

明るさサポート コントロールのオーバーライド (最初のビット) は、ディスプレイ アダプターの内部コネクタの種類に内部ディスプレイがないシステムでのみ使用する必要があります。 システムが内部コネクタの種類に内部ディスプレイを持っている場合、最初に列挙されたディスプレイは明るさコントロールを受け取ります。

ACPI の明るさのオーバーライド

ACPI の明るさのオーバーライドは、明るさの制御に使用する推奨メカニズムではありませんが、明るさ制御の他のオプションがない状況では、完全性のために含まれています。

ACPI オーバーライド (2 番目のビット) は、内部ディスプレイと外部ディスプレイの両方で有効ですが、システム上の 1 つのディスプレイにのみ適用する必要があります。

ACPI オーバーライドは、ディスプレイ ドライバーがまだ明るさのサポートを提供していない場合にのみ、明るさのターゲットのオーバーライドと共に使用することを目的としています。 これにより、OEMはACPIを介して独自のディスプレイバックライト制御を実装することができます。

ACPI オーバーライドの 2 次的な使用は、モバイル システムで明るさのサポートが失敗した場合に OS/ドライバーの開発中です。これは、いくつかの一般的な理由で発生する可能性があります。 この場合、ACPI オーバーライドは中間ソリューションとしてのみ意図されます。ドライバーの明るさコントロールは、完成した製品に使用する必要があります。

外部コネクタに対してこのレジストリ値が設定されている場合、OS はシステムを 1 つの明るさ制御に制限します。

サンプル MONITOR.INF ファイル フラグメント

次の不完全なサンプル INF は、上記の情報の概要を示しています。

[Manufacturer]
%MONOEM%=MONOEM,NTx86,NTAMD64

[MONOEM]  
%AIOHDMI_1%  = AIO_HDMI_1, Monitor\OEM1001
%AIOHDMI_2%  = AIO_HDMI_2, Monitor\OEM1002
%Laptop%  = Laptop_1, Monitor\OEM2001

[MONOEM.NTx86]
%AIOHDMI_1%  = AIO_HDMI_1, Monitor\OEM1001
%AIOHDMI_2%  = AIO_HDMI_2, Monitor\OEM1002
%Laptop%  = Laptop_1, Monitor\OEM2001

[MONOEM.NTAMD64]  
%AIOHDMI_1%  = AIO_HDMI_1, Monitor\OEM1001
%AIOHDMI_2%  = AIO_HDMI_2, Monitor\OEM1002
%Laptop%  = Laptop_1, Monitor\OEM2001

[ControlFlags]
ExcludeFromSelect = *

[AIO_HDMI_1]
AddReg= AIO_HDMI_1_Driver_Brightness

[AIO_HDMI_2]
AddReg= AIO_HDMI_2_ACPI_Brightness

[Laptop_1]
AddReg=Laptop_ACPI_Driver_Brightness


; Override brightness to control the HDMI built into the all-in-one system under graphics driver control
[AIO_HDMI_1_Driver_Brightness]
HKR,,BrightnessControl,%REG_DWORD%,%OVERRIDE_BRIGHTNESS_TARGET%

; Override brightness to control the HDMI built into the all-in-one system under ACPI firmware control
[AIO_HDMI_2_ACPI_Brightness]
HKR,,BrightnessControl,%REG_DWORD%,%OVERRIDE_BRIGHTNESS_TARGET_AND_CONTROL_TO_ACPI%

; Override brightness to control the internal panel under ACPI firmware control instead of the driver
[Laptop_ACPI_Driver_Brightness]
HKR,,BrightnessControl,%REG_DWORD%,%OVERRIDE_BRIGHTNESS_CONTROL_TO_ACPI%

[Strings]
; Non-localizable
REG_DWORD = 0x00010001
OVERRIDE_BRIGHTNESS_TARGET = 1
OVERRIDE_BRIGHTNESS_CONTROL_TO_ACPI = 2
OVERRIDE_BRIGHTNESS_TARGET_AND_CONTROL_TO_ACPI = 3

; Localizable
MONOEM = “Manufacturer name”
AIOHDMI_1  = “AIO monitor name one”
AIOHDMI_2  = “AIO monitor name two”
Laptop  = “Laptop monitor name”

OEM は、一般的な Microsoft monitor.inf が使用されないように、適切なハードウェア ID を持つ monitor.inf ファイルを提供する必要があります。