方法 : エンジン コールバックの使用

XAudio2 クライアント コードにエンジン イベントを通知するには、XAudio2 エンジンに IXAudio2EngineCallback インターフェイスを実装するオブジェクトを登録します。これにより、XAudio2 クライアント コードでオーディオ処理が発生したタイミングを追跡し、重大なエラーが発生したときにエンジンを再起動できます。

エンジン コールバックを使用するには

次の手順では、オーディオ処理のパスが開始したときと終了するときに、エンジン イベントを処理するオブジェクトが登録されます。

  1. IXAudio2EngineCallback インターフェイスから継承したクラスを作成します。

    IXAudio2EngineCallback のすべてのメンバー メソッドは、純粋な仮想関数であり、定義する必要があります。この例の対象となるメソッドは、IXAudio2EngineCallback::OnProcessingPassStart メソッドと IXAudio2EngineCallback::OnProcessingPassEnd メソッドです。残りのメソッド IXAudio2EngineCallback::OnCriticalError は、この例ではスタブです。

    class EngineCallback : public IXAudio2EngineCallback
    {
        void OnProcessingPassEnd () {}
        void OnProcessingPassStart() {}
        void OnCriticalError (HRESULT Error) {}
    };
    
  2. XAudio2Create を使用して、XAudio2 エンジンのインスタンスを作成します。

    if ( FAILED(hr = XAudio2Create( &pXAudio2, 0, XAUDIO2_DEFAULT_PROCESSOR ) ) )
        return hr;
    
  3. IXAudio2::RegisterForCallbacks を使用して、エンジン コールバックを登録します。

    pXAudio2->RegisterForCallbacks( &engineCallback );
    
  4. エンジン コールバックがこれ以上必要ない場合には、IXAudio2::UnregisterForCallbacks を呼び出します。

    pXAudio2->UnregisterForCallbacks( &engineCallback );
    

関連トピック