次の方法で共有


オーディオ デバイス クラスの無通信タイマーの実装

PortCls システム ドライバーは、システムの電力アイドル検出機能を利用して、オーディオ クライアントの非アクティブ タイマーを実装します。 PortCls は、初期化時に 2 つのタイムアウト値と必要なアイドル状態をタイマーにプログラムします。 PortCls は、デバイスのすべてのアクセス (I/O やプロパティ アクセスなど) を監視し、アクセスごとにタイマー カウントを効率的にリセットします。 タイマーがタイムアウトした場合、システムは電源 IRP にデバイスを目的のアイドル状態に配置するように要求します。 デバイスがアイドル状態になると、新しいアクセス アクティビティが発生した場合に、PortCls によってデバイスのバックアップが行われます。

PortCls には、アイドル タイムアウトとアイドル電源状態のハードコーディングされた既定値が含まれています。 ハードウェア ベンダーは、システム レジストリ内のドライバー固有のキーに独自の値を書き込むことで、必要に応じて既定値をオーバーライドできます。 これにより、ベンダーはデバイスに最適な電力アイドル パラメーター値を選択できます。

ベンダーは、次の電力アイドル パラメーターの既定値をオーバーライドできます。

  • ConservationIdleTime

    このパラメーターは、システムが省電力モードで実行されている場合のアイドル タイムアウト間隔を指定します。 これは、システムがバッテリー電源で実行されている場合に通常使用されるモードです。 このパラメーターの既定値は 0 で、省電力モードの電源アイドル タイマーを無効にします。 ハードウェア ベンダーは、次のような inf ファイルを使用して値を設定できます。

    [MyAudioDevice.AddReg]
    HKR,PowerSettings,ConservationIdleTime,%REG_BINARY%,1e,00,00,00
    

先の INF ファイル フラグメントでは、ConservationIdleTime の 16 進数 (hex) 値が "1e" であり、これは 30 秒のアイドル タイムアウトに相当します。

FLG_ADDREG_BINVALUETYPE

その他のパラメーターは、レジストリ キーの追加方法を制御するために使用されます。 たとえば、%REG_BINARY% は、データが "生" データとして格納されていることを示します。 詳しくは、「INF AddReg ディレクティブ」を参照してください。

  • PerformanceIdleTime

    このパラメーターは、システムがパフォーマンス モードで実行されている場合のアイドル タイムアウト間隔を指定します。 これは、システムが AC 電源で実行されている場合に通常使用されるモードです。 このパラメーターの既定値は 0 で、パフォーマンス モードの電源アイドル タイマーを無効にします。

    ハードウェア ベンダーは、次のような inf ファイルを使用して値を設定できます。

    [MyAudioDevice.AddReg]
    HKR,PowerSettings,PerformanceIdleTime,%REG_BINARY%,2c,01,00,00
    

    キーの値は、タイムアウト間隔を秒単位で指定します。 この例では、2c,01 の値は 300 秒 (5 分) になります。

  • IdlePowerState

    このパラメーターは、アイドル タイムアウト期間が経過した場合にデバイスが配置される電源状態を指定します。 このパラメーターの既定値は 3 で、デバイスの電源状態 D3 に対応します。これは、最も電力の少ないデバイスの低電力状態です。 ハードウェア ベンダーは、次のような inf ファイルを使用して値を設定できます。

    [MyAudioDevice.AddReg]
    HKR,PowerSettings,IdlePowerState,%REG_BINARY%,03,00,00,00
    

    キーに配置される値は、それぞれデバイスの電源状態 D0、D1、D2、または D3 に対応する 0、1、2、または 3 である必要があります。

3 つの電源アイドル レジストリ キーは、デバイス インストール INF ファイルによって作成される場合にのみ存在します。 電源アイドル タイマーを構成する前に、PortCls はレジストリからドライバー固有の電源アイドル パラメーターを取得しようとします。 PortCls は、レジストリで見つからない電源アイドル パラメーターの代わりに既定値を使用します。 前に説明したように、既定の電源アイドル パラメーター値によってアイドル タイマーが無効になります。

ConservationIdleTimePerformanceIdleTimeIdlePowerState パラメーターの指定について詳しくは、PoRegisterDeviceForIdleDetection の最後の 3 つの呼び出しパラメーターの定義を参照してください。

たとえば、ハードウェア ベンダーは、オーディオ デバイスの電源アイドル パラメーターを次のように指定します。ConservationIdleTime = 0x0000001e (30 秒)、PerformanceIdleTime = 0x0000012c (300 秒)、および IdlePowerState = 0x00000003 (デバイスの電源状態 D3)。 これらの設定を有効にするには、デバイス インストール ファイルに、次のディレクティブを含む INF AddReg セクションを含めることができます。

[MyAudioDevice.AddReg]
HKR,PowerSettings,ConservationIdleTime,%REG_BINARY%,1e,00,00,00
HKR,PowerSettings,PerformanceIdleTime,%REG_BINARY%,2c,01,00,00
HKR,PowerSettings,IdlePowerState,%REG_BINARY%,03,00,00,00

関連項目

PoRegisterDeviceForIdleDetection