Win32 API 日本語リファレンス
ホームMedia.Audio.Apo › IAudioProcessingObjectConfiguration

IAudioProcessingObjectConfiguration

COM
IID0e5ed805-aba6-49c3-8f9a-2b8c889c4fa8継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IAudioProcessingObjectConfiguration インターフェイスは、APO を構成するために使用します。このインターフェイスは、そのメソッドを使用して、処理用に APO をロックおよびアンロックします。

メソッド 2

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT LockForProcess(DWORD u32NumInputConnections, APO_CONNECTION_DESCRIPTOR** ppInputConnections, DWORD u32NumOutputConnections, APO_CONNECTION_DESCRIPTOR** ppOutputConnections)

LockForProcess メソッドは、APO がロックされ、データを処理する準備ができていることを確認するために使用します。

u32NumInputConnectionsDWORDinこの APO に接続されている入力接続の数。
ppInputConnectionsAPO_CONNECTION_DESCRIPTOR**inこの APO に接続されている各入力接続の接続記述子。
u32NumOutputConnectionsDWORDinこの APO に接続されている出力接続の数。
ppOutputConnectionsAPO_CONNECTION_DESCRIPTOR**inこの APO に接続されている各出力接続の接続記述子。

戻り値

LockForProcess メソッドは、呼び出しが正常に完了した場合に S_OK の値を返します。この段階で APO はロックされ、データを処理する準備が整っています。

戻り値コード 説明
E_POINTER
無効なポインターが関数に渡されました。
APOERR_INVALID_CONNECITON_FORMAT
無効な接続形式です。
APOERR_NUM_CONNECTIONS_INVALID
この APO では入力接続または出力接続の数が無効です。
APOERR_APO_LOCKED
APO は既にロックされています。
その他の HRESULT
これらの失敗はオーディオエンジンによって追跡されます。

解説(Remarks)

LockForProcess メソッドが呼び出されると、まず内部チェックを実行して、APO が初期化されデータを処理する準備ができているかどうかを確認します。各 APO は初期化要件が異なるため、必要に応じて各 APO は独自の Initialize メソッドを定義する必要があります。

vtbl 4 HRESULT UnlockForProcess()

UnlockForProcess メソッドは、LockForProcess メソッドによって APO に課されたロックを解除します。

戻り値

UnlockForProcess メソッドは、呼び出しが正常に完了した場合に S_OK の値を返します。呼び出しが行われた時点で APO が既にアンロックされていた場合、このメソッドは APOERR_ALREADY_UNLOCKED の値を返します。

解説(Remarks)

UnlockForProcess メソッドは、構成の変更が可能なモードに APO を移行させます。これらの変更には、APO に接続されている入力接続および出力接続の追加、削除、入れ替えが含まれます。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
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 方式にも切替可。