次の方法で共有


IAdapterPowerManagement の実装

ドライバーの IAdapterPowerManagement インターフェイスを実装する場合、Microsoft Windows Driver Kit (WDK) のサンプル オーディオ ドライバーの CAdapterCommon クラスの実装をご覧ください。 このクラスは、デバイスの割り込みを処理し、すべてのオーディオ アダプター ドライバーに共通するその他の機能を実行します。 アダプターの CAdapterCommon クラスは IAdapterPowerManagement インターフェイスから継承され、その NonDelegatingQueryInterface メソッドでこのインターフェイスをサポートする必要があります。 (非委任インターフェイスについて詳しくは、INonDelegatingUnknown インターフェイスの説明をご覧ください。)

ヘッダー ファイル Portcls.h の IMP_IAdapterPowerManagement 定義を使用し、IAdapterPowerManagement::P owerChangeStateIAdapterPowerManagement::QueryPowerChangeState、および IAdapterPowerManagement::QueryDeviceCapabilities メソッドの関数宣言をドライバーの CAdapterCommon クラス定義に追加できます。

アダプターのデバイス起動ルーチンに対する PortCls システム ドライバーの呼び出し中 (「デバイスの起動」を参照)、アダプターは、PcRegisterAdapterPowerManagement を呼び出すことによってその IAdapterPowerManagement インターフェイスを PortCls に登録する必要があります。 コード例については、「サンプル オーディオ ドライバー」で説明されている Sysvad サンプル ドライバーの StartDevice 関数をご覧ください。 PcRegisterAdapterPowerManagement 関数の最初のパラメーターは、アダプター ドライバーの CAdapterCommon オブジェクトへの IUnknown ポインターです。 PortCls は、このオブジェクトでその IAdapterPowerManagement インターフェイスを照会します。

PortCls がアダプター ドライバーの IAdapterPowerManagement::PowerChangeState メソッドを呼び出してデバイスの電源状態を変更した場合、アダプター ドライバーはアダプターの CAdapterCommon オブジェクトにデバイスの新しい電源状態をキャッシュする必要があります。 CAdapterCommon::Init 呼び出し中 (WDK のサンプル アダプター ドライバーの実装を参照)、ドライバーは初期化が正常に終了する前に、初期電源状態を PowerDeviceD0 (DeviceState で説明されています) に設定する必要があります。 ドライバーは、適切な電源状態であることがわかっている場合のみ、ハードウェアに書き込む必要があります。

PowerChangeState 呼び出しに応答して電源を切る前に、アダプター ドライバーは、電源がオフになったときにスピーカーのノイズが発生しないようオーディオ出力を配置する必要があります。 たとえば、シャットダウン プロセスには、DAC 出力をゼロにランプしたり、DAC をオフにしたり、MIDI ラインをミュートしたりできます。