IAudioStreamVolume
COM公式ドキュメント
IAudioStreamVolume インターフェイスを使用すると、クライアントはオーディオストリーム内のすべてのチャネルの音量レベルを制御および監視できます。
メソッド 5
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
GetChannelCount メソッドは、オーディオストリーム内のチャネル数を取得します。
| pdwCount | DWORD* | out | メソッドがチャネル数を書き込む UINT32 変数へのポインター。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合、戻り値には次の表に示す値が含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| パラメーター pdwCount が NULL です。 | |
| オーディオエンドポイントデバイスが取り外されたか、オーディオハードウェアまたは関連するハードウェアリソースが再構成、無効化、削除、あるいはその他の理由で使用不可になりました。 | |
| Windows オーディオサービスが実行されていません。 |
解説(Remarks)
IAudioStreamVolume インターフェイスの他のメソッドを呼び出す前に、このメソッドを呼び出してオーディオストリーム内のチャネル数を取得してください。
SetChannelVolume メソッドは、オーディオストリーム内の指定されたチャネルの音量レベルを設定します。
| dwIndex | DWORD | in | チャネル番号。ストリーム形式に N 個のチャネルがある場合、チャネルには 0 から N– 1 までの番号が付けられます。チャネル数を取得するには、IAudioStreamVolume::GetChannelCount メソッドを呼び出します。 |
| fLevel | FLOAT | in | チャネルの音量レベル。有効な音量レベルの範囲は 0.0 から 1.0 です。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合、戻り値には次の表に示す値が含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| パラメーター dwIndex に無効なチャネル番号が設定されているか、パラメーター fLevel が 0.0 から 1.0 の範囲にありません。 | |
| オーディオエンドポイントデバイスが取り外されたか、オーディオハードウェアまたは関連するハードウェアリソースが再構成、無効化、削除、あるいはその他の理由で使用不可になりました。 | |
| Windows オーディオサービスが実行されていません。 |
GetChannelVolume メソッドは、オーディオストリーム内の指定されたチャネルの音量レベルを取得します。
| dwIndex | DWORD | in | チャネル番号。ストリーム形式に N 個のチャネルがある場合、チャネルには 0 から N– 1 までの番号が付けられます。チャネル数を取得するには、IAudioStreamVolume::GetChannelCount メソッドを呼び出します。 |
| pfLevel | FLOAT* | out | メソッドが指定されたチャネルの音量レベルを書き込む float 変数へのポインター。音量レベルの範囲は 0.0 から 1.0 です。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合、戻り値には次の表に示す値が含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| パラメーター dwIndex に無効なチャネル番号が設定されています。 | |
| パラメーター pfLevel が NULL です。 | |
| オーディオエンドポイントデバイスが取り外されたか、オーディオハードウェアまたは関連するハードウェアリソースが再構成、無効化、削除、あるいはその他の理由で使用不可になりました。 | |
| Windows オーディオサービスが実行されていません。 |
解説(Remarks)
クライアントは、IAudioStreamVolume::SetAllVolumes メソッドまたは IAudioStreamVolume::SetChannelVolume メソッドを呼び出して、オーディオストリーム内のチャネルごとの音量レベルを設定できます。
SetAllVolumes メソッドは、オーディオストリーム内のすべてのチャネルの個別の音量レベルを設定します。
| dwCount | DWORD | in | pfVolumes 配列内の要素数。このパラメーターはストリーム形式のチャネル数と一致している必要があります。チャネル数を取得するには、IAudioStreamVolume::GetChannelCount メソッドを呼び出します。 |
| pfVolumes | FLOAT* | in | オーディオストリーム内のチャネルの音量レベルの配列へのポインター。pfVolumes 配列内の要素数は dwCount パラメーターで指定します。呼び出し元は、各チャネルの音量レベルを、そのチャネル番号に一致するインデックスの配列要素に書き込みます。ストリーム形式に N 個のチャネルがある場合、チャネルには 0 から N– 1 までの番号が付けられます。有効な音量レベルの範囲は 0.0 から 1.0 です。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合、戻り値には次の表に示す値が含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| パラメーター dwCount がストリームのチャネル数と一致していないか、pfVolumes 配列要素の値が 0.0 から 1.0 の範囲にありません。 | |
| パラメーター pfVolumes が NULL です。 | |
| オーディオエンドポイントデバイスが取り外されたか、オーディオハードウェアまたは関連するハードウェアリソースが再構成、無効化、削除、あるいはその他の理由で使用不可になりました。 | |
| Windows オーディオサービスが実行されていません。 |
GetAllVolumes メソッドは、オーディオストリーム内のすべてのチャネルの音量レベルを取得します。
| dwCount | DWORD | in | pfVolumes 配列内の要素数。dwCount パラメーターはストリーム形式のチャネル数と一致している必要があります。チャネル数を取得するには、IAudioStreamVolume::GetChannelCount メソッドを呼び出します。 |
| pfVolumes | FLOAT* | out | オーディオストリーム内のチャネルの音量レベルの配列へのポインター。このパラメーターは、メソッドが各チャネルの音量レベルを書き込む、呼び出し元が割り当てた float 配列を指します。音量レベルの範囲は 0.0 から 1.0 です。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合、戻り値には次の表に示す値が含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| パラメーター dwCount がストリームのチャネル数と一致していません。 | |
| パラメーター pfVolumes が NULL です。 | |
| オーディオエンドポイントデバイスが取り外されたか、オーディオハードウェアまたは関連するハードウェアリソースが再構成、無効化、削除、あるいはその他の理由で使用不可になりました。 | |
| Windows オーディオサービスが実行されていません。 |
解説(Remarks)
クライアントは、IAudioStreamVolume::SetAllVolumes メソッドまたは IAudioStreamVolume::SetChannelVolume メソッドを呼び出して、オーディオストリーム内のチャネルごとの音量レベルを設定できます。
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 方式にも切替可。#define global IID_IAudioStreamVolume "{93014887-242D-4068-8A15-CF5E93B90FE3}" #usecom global IAudioStreamVolume IID_IAudioStreamVolume "{}" #comfunc global IAudioStreamVolume_GetChannelCount 3 sptr #comfunc global IAudioStreamVolume_SetChannelVolume 4 int,float #comfunc global IAudioStreamVolume_GetChannelVolume 5 int,sptr #comfunc global IAudioStreamVolume_SetAllVolumes 6 int,sptr #comfunc global IAudioStreamVolume_GetAllVolumes 7 int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。