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

IAudioSystemEffectsCustomFormats

COM
IIDb1176e34-bb7f-4f05-bebd-1b18a534e097継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IAudioSystemEffectsCustomFormats インターフェイスは、Windows Vista 以降のバージョンの Windows でサポートされます。

メソッド 3

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

vtbl 3 HRESULT GetFormatCount(DWORD* pcFormats)

GetFormatCount メソッドは、システムエフェクトオーディオ処理オブジェクト (sAPO) がサポートするカスタムフォーマットの数を取得します。

pcFormatsDWORD*out符号なし整数へのポインターを指定します。この符号なし整数は、sAPO がサポートするフォーマットの数を表します。

戻り値

GetFormatCount メソッドは、呼び出しが成功すると S_OK を返します。それ以外の場合は、無効なポインターが関数に渡されたことを示す E_POINTER を返します。

解説(Remarks)

sAPO の詳細については、System Effects Audio Processing Objects を参照してください。

vtbl 4 HRESULT GetFormat(DWORD nFormat, IAudioMediaType** ppFormat)

GetFormat メソッドは、カスタムフォーマットの IAudioMediaType 表現を取得します。

nFormatDWORDinサポートされるフォーマットのインデックスを指定します。このパラメーターには、0 から GetFormatCount の戻り値より 1 小さい値までの範囲の任意の値を指定できます。つまり、0 から GetFormatCount( ) - 1 までの範囲の任意の値です。
ppFormatIAudioMediaType**outIAudioMediaType インターフェイスへのポインターへのポインターを指定します。ppFormat パラメーターが指す IAudioMediaType インターフェイスを解放するのは、呼び出し元の責任です。

戻り値

GetFormat メソッドは、呼び出しが成功すると S_OK を返します。それ以外の場合は、次の表に示すエラーコードのいずれかを返します。

リターンコード 説明
E_POINTER
無効なポインターが関数に渡されました
E_OUTOFMEMORY
リターンバッファーを割り当てられません
E_INVALIDARG
nFormat が範囲外です

解説(Remarks)

オーディオシステムが GetFormat メソッドを呼び出すと、sAPO はオーディオメディアタイプオブジェクトを作成し、IAudioMediaType インターフェイスを返します。sAPO の実装では、CreateAudioMediaType ユーティリティ関数を使用してオーディオメディアタイプオブジェクトを作成できます。

vtbl 5 HRESULT GetFormatRepresentation(DWORD nFormat, LPWSTR* ppwstrFormatRep)

GetFormatRepresentation メソッドは、カスタムフォーマットの文字列表現を取得し、ユーザーインターフェイスに表示できるようにします。

nFormatDWORDinサポートされるフォーマットのインデックスを指定します。このパラメーターには、0 から GetFormatCount の戻り値より 1 小さい値までの範囲の任意の値を指定できます。つまり、0 から GetFormatCount( ) - 1 までの範囲の任意の値です。
ppwstrFormatRepLPWSTR*outカスタムフォーマットを記述する NULL 終端の Unicode 文字列を受け取るバッファーのアドレスを指定します。

戻り値

GetFormatRepresentation メソッドは、呼び出しが成功すると S_OK を返します。それ以外の場合は、次の表に示すエラーコードのいずれかを返します。

リターンコード 説明
E_POINTER
無効なポインターが関数に渡されました
E_OUTOFMEMORY
リターンバッファーを割り当てられません
E_INVALIDARG
nFormat が範囲外です

解説(Remarks)

sAPO は CoTaskMemAlloc を使用して、返される文字列を割り当てます。呼び出し元は、CoTaskMemFree を使用して、ppwstrFormatRep パラメーターが指すバッファーを削除する必要があります。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IAudioSystemEffectsCustomFormats "{B1176E34-BB7F-4F05-BEBD-1B18A534E097}"
#usecom global IAudioSystemEffectsCustomFormats IID_IAudioSystemEffectsCustomFormats "{}"
#comfunc global IAudioSystemEffectsCustomFormats_GetFormatCount           3 var
#comfunc global IAudioSystemEffectsCustomFormats_GetFormat                4 int,sptr
#comfunc global IAudioSystemEffectsCustomFormats_GetFormatRepresentation  5 int,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。