IAudioSessionEvents::OnSessionDisconnected メソッド (audiopolicy.h)

OnSessionDisconnected メソッドは、オーディオ セッションが切断されたことをクライアントに通知します。

構文

HRESULT OnSessionDisconnected(
  [in] AudioSessionDisconnectReason DisconnectReason
);

パラメーター

[in] DisconnectReason

オーディオ セッションが切断された理由。 呼び出し元は、次の表に示す AudioSessionDisconnectReason 列挙値のいずれかにこのパラメーターを設定します。

説明
DisconnectReasonDeviceRemoval ユーザーがオーディオ エンドポイント デバイスを削除しました。
DisconnectReasonServerShutdown Windows オーディオ サービスが停止しました。
DisconnectReasonFormatChanged オーディオ セッションが接続されているデバイスのストリーム形式が変更されました。
DisconnectReasonSessionLogoff ユーザーは、オーディオ セッションが実行されていた Windows ターミナル Services (WTS) セッションからログオフしました。
DisconnectReasonSessionDisconnected オーディオ セッションが実行されていた WTS セッションが切断されました。
DisconnectReasonExclusiveModeOverride (共有モード) オーディオ セッションが切断され、オーディオ エンドポイント デバイスが排他モード接続で使用できるようになります。
 

WTS セッションの詳細については、Windows SDKドキュメントを参照してください。

戻り値

メソッドが成功した場合は、S_OK を返します。 失敗した場合はエラー コードを返します。

解説

セッションを切断すると、セッション マネージャーはそのセッションに属するストリームを閉じ、それらのストリーム上のサービスに対するすべての未処理の要求を無効にします。 クライアントは、閉じたストリームの IAudioClient インターフェイスへのすべての参照を解放し、IAudioClient::GetService メソッドの呼び出しによって以前に取得したサービス インターフェイスへのすべての参照を解放することで、切断に応答する必要があります。

切断後、切断されたセッションで閉じられたストリームに関連付けられている WASAPI インターフェイス内のメソッドの多くは、エラー コード AUDCLNT_E_DEVICE_INVALIDATEDを返します (例: IAudioClient::GetCurrentPadding を参照)。 このエラーからの回復の詳細については、「 Invalid-Device エラーからの回復」を参照してください。

Windows オーディオ サービスが予期せず終了した場合、シャットダウン中であることをクライアントに通知する機会はありません。 その場合、クライアントは、サービスが実行されなくなったことを検出し、エラー コード AUDCLNT_E_SERVICE_NOT_RUNNINGで失敗する IAudioClient::GetCurrentPadding などのメソッドを呼び出したときに、サービスが停止したことを学習します。

クライアントはセッション切断イベントを生成できません。 システムは常に、この種類のイベントのソースです。 したがって、他の IAudioSessionEvents メソッドとは異なり、このメソッドにはコンテキスト パラメーターがありません。

IAudioSessionEvents インターフェイスで メソッドを実装するコード例については、「オーディオ セッション イベント」を参照してください。

要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ | UWP アプリ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリ | UWP アプリ]
対象プラットフォーム Windows
ヘッダー audiopolicy.h

こちらもご覧ください

IAudioClient インターフェイス

IAudioClient::GetService

IAudioSessionEvents インターフェイス