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

IAudioEndpointVolume

COM
IID5cdf2c82-841e-4546-9722-0cf74078229a継承元IUnknown自前メソッド開始 vtbl3

メソッド 18

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

vtbl 3 HRESULT RegisterControlChangeNotify(IAudioEndpointVolumeCallback* pNotify)
pNotifyIAudioEndpointVolumeCallback*in音量変更通知を受け取るIAudioEndpointVolumeCallbackインターフェイスへのポインタ。
vtbl 4 HRESULT UnregisterControlChangeNotify(IAudioEndpointVolumeCallback* pNotify)
pNotifyIAudioEndpointVolumeCallback*in登録解除する通知用IAudioEndpointVolumeCallbackインターフェイスへのポインタ。
vtbl 5 HRESULT GetChannelCount(DWORD* pnChannelCount)
pnChannelCountDWORD*outオーディオストリームのチャネル数を受け取るDWORDへのポインタ。
vtbl 6 HRESULT SetMasterVolumeLevel(FLOAT fLevelDB, GUID* pguidEventContext)
fLevelDBFLOATin設定するマスター音量レベルをデシベル(dB)単位で指定するFLOAT値。
pguidEventContextGUID*in変更イベントのコンテキストを識別するGUIDへのポインタ。通知の発信元判別に用いる。NULL可。
vtbl 7 HRESULT SetMasterVolumeLevelScalar(FLOAT fLevel, GUID* pguidEventContext)
fLevelFLOATin設定するマスター音量を0.0〜1.0の正規化スカラー値で指定するFLOAT値。
pguidEventContextGUID*in変更イベントのコンテキストを識別するGUIDへのポインタ。NULL可。
vtbl 8 HRESULT GetMasterVolumeLevel(FLOAT* pfLevelDB)
pfLevelDBFLOAT*out現在のマスター音量レベルをデシベル単位で受け取るFLOATへのポインタ。
vtbl 9 HRESULT GetMasterVolumeLevelScalar(FLOAT* pfLevel)
pfLevelFLOAT*out現在のマスター音量を0.0〜1.0の正規化スカラー値で受け取るFLOATへのポインタ。
vtbl 10 HRESULT SetChannelVolumeLevel(DWORD nChannel, FLOAT fLevelDB, GUID* pguidEventContext)
nChannelDWORDin対象チャネルの0始まりのインデックス。
fLevelDBFLOATin設定するチャネル音量レベルをデシベル単位で指定するFLOAT値。
pguidEventContextGUID*in変更イベントのコンテキストを識別するGUIDへのポインタ。NULL可。
vtbl 11 HRESULT SetChannelVolumeLevelScalar(DWORD nChannel, FLOAT fLevel, GUID* pguidEventContext)
nChannelDWORDin対象チャネルの0始まりのインデックス。
fLevelFLOATin設定するチャネル音量を0.0〜1.0の正規化スカラー値で指定するFLOAT値。
pguidEventContextGUID*in変更イベントのコンテキストを識別するGUIDへのポインタ。NULL可。
vtbl 12 HRESULT GetChannelVolumeLevel(DWORD nChannel, FLOAT* pfLevelDB)
nChannelDWORDin対象チャネルの0始まりのインデックス。
pfLevelDBFLOAT*out指定チャネルの現在の音量レベルをデシベル単位で受け取るFLOATへのポインタ。
vtbl 13 HRESULT GetChannelVolumeLevelScalar(DWORD nChannel, FLOAT* pfLevel)
nChannelDWORDin対象チャネルの0始まりのインデックス。
pfLevelFLOAT*out指定チャネルの現在の音量を0.0〜1.0の正規化スカラー値で受け取るFLOATへのポインタ。
vtbl 14 HRESULT SetMute(BOOL bMute, GUID* pguidEventContext)
bMuteBOOLinミュートの有効/無効を指定するBOOL値。TRUEで消音。
pguidEventContextGUID*in変更イベントのコンテキストを識別するGUIDへのポインタ。NULL可。
vtbl 15 HRESULT GetMute(BOOL* pbMute)
pbMuteBOOL*out現在のミュート状態を受け取るBOOLへのポインタ。TRUEなら消音中。
vtbl 16 HRESULT GetVolumeStepInfo(DWORD* pnStep, DWORD* pnStepCount)
pnStepDWORD*out現在の音量ステップ位置(0始まり)を受け取るDWORDへのポインタ。
pnStepCountDWORD*out音量ステップの総数を受け取るDWORDへのポインタ。
vtbl 17 HRESULT VolumeStepUp(GUID* pguidEventContext)
pguidEventContextGUID*in変更イベントのコンテキストを識別するGUIDへのポインタ。NULL可。
vtbl 18 HRESULT VolumeStepDown(GUID* pguidEventContext)
pguidEventContextGUID*in変更イベントのコンテキストを識別するGUIDへのポインタ。NULL可。
vtbl 19 HRESULT QueryHardwareSupport(DWORD* pdwHardwareSupportMask)
pdwHardwareSupportMaskDWORD*outハードウェアが対応する機能を示すビットマスクを受け取るDWORDへのポインタ。ENDPOINT_HARDWARE_SUPPORT_* の組合せ。
vtbl 20 HRESULT GetVolumeRange(FLOAT* pflVolumeMindB, FLOAT* pflVolumeMaxdB, FLOAT* pflVolumeIncrementdB)
pflVolumeMindBFLOAT*out音量範囲の最小値をデシベル単位で受け取るFLOATへのポインタ。
pflVolumeMaxdBFLOAT*out音量範囲の最大値をデシベル単位で受け取るFLOATへのポインタ。
pflVolumeIncrementdBFLOAT*out音量ステップ間の刻み幅をデシベル単位で受け取るFLOATへのポインタ。

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IAudioEndpointVolume "{5CDF2C82-841E-4546-9722-0CF74078229A}"
#usecom global IAudioEndpointVolume IID_IAudioEndpointVolume "{}"
#comfunc global IAudioEndpointVolume_RegisterControlChangeNotify    3 sptr
#comfunc global IAudioEndpointVolume_UnregisterControlChangeNotify  4 sptr
#comfunc global IAudioEndpointVolume_GetChannelCount                5 var
#comfunc global IAudioEndpointVolume_SetMasterVolumeLevel           6 float,var
#comfunc global IAudioEndpointVolume_SetMasterVolumeLevelScalar     7 float,var
#comfunc global IAudioEndpointVolume_GetMasterVolumeLevel           8 var
#comfunc global IAudioEndpointVolume_GetMasterVolumeLevelScalar     9 var
#comfunc global IAudioEndpointVolume_SetChannelVolumeLevel          10 int,float,var
#comfunc global IAudioEndpointVolume_SetChannelVolumeLevelScalar    11 int,float,var
#comfunc global IAudioEndpointVolume_GetChannelVolumeLevel          12 int,var
#comfunc global IAudioEndpointVolume_GetChannelVolumeLevelScalar    13 int,var
#comfunc global IAudioEndpointVolume_SetMute                        14 int,var
#comfunc global IAudioEndpointVolume_GetMute                        15 var
#comfunc global IAudioEndpointVolume_GetVolumeStepInfo              16 var,var
#comfunc global IAudioEndpointVolume_VolumeStepUp                   17 var
#comfunc global IAudioEndpointVolume_VolumeStepDown                 18 var
#comfunc global IAudioEndpointVolume_QueryHardwareSupport           19 var
#comfunc global IAudioEndpointVolume_GetVolumeRange                 20 var,var,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。