IAudioProcessingObjectConfiguration
COM公式ドキュメント
IAudioProcessingObjectConfiguration インターフェイスは、APO を構成するために使用します。このインターフェイスは、そのメソッドを使用して、処理用に APO をロックおよびアンロックします。
メソッド 2
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
LockForProcess メソッドは、APO がロックされ、データを処理する準備ができていることを確認するために使用します。
| u32NumInputConnections | DWORD | in | この APO に接続されている入力接続の数。 |
| ppInputConnections | APO_CONNECTION_DESCRIPTOR** | in | この APO に接続されている各入力接続の接続記述子。 |
| u32NumOutputConnections | DWORD | in | この APO に接続されている出力接続の数。 |
| ppOutputConnections | APO_CONNECTION_DESCRIPTOR** | in | この APO に接続されている各出力接続の接続記述子。 |
戻り値
LockForProcess メソッドは、呼び出しが正常に完了した場合に S_OK の値を返します。この段階で APO はロックされ、データを処理する準備が整っています。
| 戻り値コード | 説明 |
|---|---|
| 無効なポインターが関数に渡されました。 | |
|
無効な接続形式です。 |
| この APO では入力接続または出力接続の数が無効です。 | |
| APO は既にロックされています。 | |
|
これらの失敗はオーディオエンジンによって追跡されます。 |
解説(Remarks)
LockForProcess メソッドが呼び出されると、まず内部チェックを実行して、APO が初期化されデータを処理する準備ができているかどうかを確認します。各 APO は初期化要件が異なるため、必要に応じて各 APO は独自の Initialize メソッドを定義する必要があります。
UnlockForProcess メソッドは、LockForProcess メソッドによって APO に課されたロックを解除します。
戻り値
UnlockForProcess メソッドは、呼び出しが正常に完了した場合に S_OK の値を返します。呼び出しが行われた時点で APO が既にアンロックされていた場合、このメソッドは APOERR_ALREADY_UNLOCKED の値を返します。
解説(Remarks)
UnlockForProcess メソッドは、構成の変更が可能なモードに APO を移行させます。これらの変更には、APO に接続されている入力接続および出力接続の追加、削除、入れ替えが含まれます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IAudioProcessingObjectConfiguration "{0E5ED805-ABA6-49C3-8F9A-2B8C889C4FA8}" #usecom global IAudioProcessingObjectConfiguration IID_IAudioProcessingObjectConfiguration "{}" #comfunc global IAudioProcessingObjectConfiguration_LockForProcess 3 int,var,int,var #comfunc global IAudioProcessingObjectConfiguration_UnlockForProcess 4 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IAudioProcessingObjectConfiguration "{0E5ED805-ABA6-49C3-8F9A-2B8C889C4FA8}" #usecom global IAudioProcessingObjectConfiguration IID_IAudioProcessingObjectConfiguration "{}" #comfunc global IAudioProcessingObjectConfiguration_LockForProcess 3 int,sptr,int,sptr #comfunc global IAudioProcessingObjectConfiguration_UnlockForProcess 4 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。