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

IAudioStreamVolume

COM
IID93014887-242d-4068-8a15-cf5e93b90fe3継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IAudioStreamVolume インターフェイスを使用すると、クライアントはオーディオストリーム内のすべてのチャネルの音量レベルを制御および監視できます。

メソッド 5

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

vtbl 3 HRESULT GetChannelCount(DWORD* pdwCount)

GetChannelCount メソッドは、オーディオストリーム内のチャネル数を取得します。

pdwCountDWORD*outメソッドがチャネル数を書き込む UINT32 変数へのポインター。

戻り値

メソッドが成功した場合は S_OK を返します。失敗した場合、戻り値には次の表に示す値が含まれますが、これらに限定されません。

戻り値 説明
E_POINTER
パラメーター pdwCountNULL です。
AUDCLNT_E_DEVICE_INVALIDATED
オーディオエンドポイントデバイスが取り外されたか、オーディオハードウェアまたは関連するハードウェアリソースが再構成、無効化、削除、あるいはその他の理由で使用不可になりました。
AUDCLNT_E_SERVICE_NOT_RUNNING
Windows オーディオサービスが実行されていません。

解説(Remarks)

IAudioStreamVolume インターフェイスの他のメソッドを呼び出す前に、このメソッドを呼び出してオーディオストリーム内のチャネル数を取得してください。

vtbl 4 HRESULT SetChannelVolume(DWORD dwIndex, FLOAT fLevel)

SetChannelVolume メソッドは、オーディオストリーム内の指定されたチャネルの音量レベルを設定します。

dwIndexDWORDinチャネル番号。ストリーム形式に N 個のチャネルがある場合、チャネルには 0 から N– 1 までの番号が付けられます。チャネル数を取得するには、IAudioStreamVolume::GetChannelCount メソッドを呼び出します。
fLevelFLOATinチャネルの音量レベル。有効な音量レベルの範囲は 0.0 から 1.0 です。

戻り値

メソッドが成功した場合は S_OK を返します。失敗した場合、戻り値には次の表に示す値が含まれますが、これらに限定されません。

戻り値 説明
E_INVALIDARG
パラメーター dwIndex に無効なチャネル番号が設定されているか、パラメーター fLevel が 0.0 から 1.0 の範囲にありません。
AUDCLNT_E_DEVICE_INVALIDATED
オーディオエンドポイントデバイスが取り外されたか、オーディオハードウェアまたは関連するハードウェアリソースが再構成、無効化、削除、あるいはその他の理由で使用不可になりました。
AUDCLNT_E_SERVICE_NOT_RUNNING
Windows オーディオサービスが実行されていません。
vtbl 5 HRESULT GetChannelVolume(DWORD dwIndex, FLOAT* pfLevel)

GetChannelVolume メソッドは、オーディオストリーム内の指定されたチャネルの音量レベルを取得します。

dwIndexDWORDinチャネル番号。ストリーム形式に N 個のチャネルがある場合、チャネルには 0 から N– 1 までの番号が付けられます。チャネル数を取得するには、IAudioStreamVolume::GetChannelCount メソッドを呼び出します。
pfLevelFLOAT*outメソッドが指定されたチャネルの音量レベルを書き込む float 変数へのポインター。音量レベルの範囲は 0.0 から 1.0 です。

戻り値

メソッドが成功した場合は S_OK を返します。失敗した場合、戻り値には次の表に示す値が含まれますが、これらに限定されません。

戻り値 説明
E_INVALIDARG
パラメーター dwIndex に無効なチャネル番号が設定されています。
E_POINTER
パラメーター pfLevelNULL です。
AUDCLNT_E_DEVICE_INVALIDATED
オーディオエンドポイントデバイスが取り外されたか、オーディオハードウェアまたは関連するハードウェアリソースが再構成、無効化、削除、あるいはその他の理由で使用不可になりました。
AUDCLNT_E_SERVICE_NOT_RUNNING
Windows オーディオサービスが実行されていません。

解説(Remarks)

クライアントは、IAudioStreamVolume::SetAllVolumes メソッドまたは IAudioStreamVolume::SetChannelVolume メソッドを呼び出して、オーディオストリーム内のチャネルごとの音量レベルを設定できます。

vtbl 6 HRESULT SetAllVolumes(DWORD dwCount, FLOAT* pfVolumes)

SetAllVolumes メソッドは、オーディオストリーム内のすべてのチャネルの個別の音量レベルを設定します。

dwCountDWORDinpfVolumes 配列内の要素数。このパラメーターはストリーム形式のチャネル数と一致している必要があります。チャネル数を取得するには、IAudioStreamVolume::GetChannelCount メソッドを呼び出します。
pfVolumesFLOAT*inオーディオストリーム内のチャネルの音量レベルの配列へのポインター。pfVolumes 配列内の要素数は dwCount パラメーターで指定します。呼び出し元は、各チャネルの音量レベルを、そのチャネル番号に一致するインデックスの配列要素に書き込みます。ストリーム形式に N 個のチャネルがある場合、チャネルには 0 から N– 1 までの番号が付けられます。有効な音量レベルの範囲は 0.0 から 1.0 です。

戻り値

メソッドが成功した場合は S_OK を返します。失敗した場合、戻り値には次の表に示す値が含まれますが、これらに限定されません。

戻り値 説明
E_INVALIDARG
パラメーター dwCount がストリームのチャネル数と一致していないか、pfVolumes 配列要素の値が 0.0 から 1.0 の範囲にありません。
E_POINTER
パラメーター pfVolumesNULL です。
AUDCLNT_E_DEVICE_INVALIDATED
オーディオエンドポイントデバイスが取り外されたか、オーディオハードウェアまたは関連するハードウェアリソースが再構成、無効化、削除、あるいはその他の理由で使用不可になりました。
AUDCLNT_E_SERVICE_NOT_RUNNING
Windows オーディオサービスが実行されていません。
vtbl 7 HRESULT GetAllVolumes(DWORD dwCount, FLOAT* pfVolumes)

GetAllVolumes メソッドは、オーディオストリーム内のすべてのチャネルの音量レベルを取得します。

dwCountDWORDinpfVolumes 配列内の要素数。dwCount パラメーターはストリーム形式のチャネル数と一致している必要があります。チャネル数を取得するには、IAudioStreamVolume::GetChannelCount メソッドを呼び出します。
pfVolumesFLOAT*outオーディオストリーム内のチャネルの音量レベルの配列へのポインター。このパラメーターは、メソッドが各チャネルの音量レベルを書き込む、呼び出し元が割り当てた float 配列を指します。音量レベルの範囲は 0.0 から 1.0 です。

戻り値

メソッドが成功した場合は S_OK を返します。失敗した場合、戻り値には次の表に示す値が含まれますが、これらに限定されません。

戻り値 説明
E_INVALIDARG
パラメーター dwCount がストリームのチャネル数と一致していません。
E_POINTER
パラメーター pfVolumesNULL です。
AUDCLNT_E_DEVICE_INVALIDATED
オーディオエンドポイントデバイスが取り外されたか、オーディオハードウェアまたは関連するハードウェアリソースが再構成、無効化、削除、あるいはその他の理由で使用不可になりました。
AUDCLNT_E_SERVICE_NOT_RUNNING
Windows オーディオサービスが実行されていません。

解説(Remarks)

クライアントは、IAudioStreamVolume::SetAllVolumes メソッドまたは IAudioStreamVolume::SetChannelVolume メソッドを呼び出して、オーディオストリーム内のチャネルごとの音量レベルを設定できます。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IAudioStreamVolume "{93014887-242D-4068-8A15-CF5E93B90FE3}"
#usecom global IAudioStreamVolume IID_IAudioStreamVolume "{}"
#comfunc global IAudioStreamVolume_GetChannelCount   3 var
#comfunc global IAudioStreamVolume_SetChannelVolume  4 int,float
#comfunc global IAudioStreamVolume_GetChannelVolume  5 int,var
#comfunc global IAudioStreamVolume_SetAllVolumes     6 int,var
#comfunc global IAudioStreamVolume_GetAllVolumes     7 int,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。