スリープ状態の解除
コーデックの電源を切る前に、コーデック関数ドライバーは通常、コーデックが電源オフ状態のときに状態変更イベントが発生した場合に、コーデックがシステムをウェイクアップできるようにします。 オーディオ コーデックの場合、ユーザーが入力ジャックにプラグを挿入したり、ジャックからプラグを取り外したりすると、このようなイベントがトリガーされる可能性があります。 モデム コーデックの場合、着信コールを示すために電話が鳴ったときにステータス変更イベントが発生することがあります。 ステータス変更イベントの詳細については、インテル HD オーディオ の ウェーブサイトにあるインテル ハイ デフィニション オーディオ仕様を参照してください。
電源オフの準備をするために、ファンクション ドライバーはまず、状態変更イベントが発生したときに HD オーディオ バス コントローラーに通知するようにコーデックを構成します。 次に、ファンクション ドライバーは、IRP_MN_WAIT_WAKE電源管理 IRP を HD オーディオ バス ドライバーに送信して、コーデックからのウェイクアップ信号を有効にするように指示します。 その後、ウェイクアップ信号が有効になり、コーデックがコーデックの SDI ライン経由で状態変更イベントを送信すると、コントローラーはシステムにウェイクアップ信号を生成し、バス ドライバーは IRP_MN_WAIT_WAKE IRP を完了してファンクション ドライバーに通知します。
ウェイク イベントに続いて、バス ドライバーはウェイクアップ信号を生成したコーデックを決定し、そのコーデックで保留中のIRP_MN_WAIT_WAKE IRP を完了します。 ただし、コーデックにオーディオとモデムの両方の機能グループが含まれている場合、たとえば、バス ドライバーには、ウェイクアップ信号のソースである機能グループを特定する方法がありません。 この場合、ファンクション ドライバーは、ウェイクアップ信号のソースを確認するために、独自のクエリをコーデックに送信する必要があります。