2 * Copyright (C) 2009 Maarten Lankhorst
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20 import
"devicetopology.idl";
22 typedef struct AUDIO_VOLUME_NOTIFICATION_DATA
24 GUID guidEventContext
;
28 FLOAT afChannelVolumes
[1];
29 } AUDIO_VOLUME_NOTIFICATION_DATA
;
31 cpp_quote
("typedef struct AUDIO_VOLUME_NOTIFICATION_DATA *PAUDIO_VOLUME_NOTIFICATION_DATA;")
33 cpp_quote
("#define ENDPOINT_HARDWARE_SUPPORT_VOLUME 0x1")
34 cpp_quote
("#define ENDPOINT_HARDWARE_SUPPORT_MUTE 0x2")
35 cpp_quote
("#define ENDPOINT_HARDWARE_SUPPORT_METER 0x4")
37 interface IAudioEndpointVolumeCallback
;
38 interface IAudioEndpointVolume
;
39 interface IAudioEndpointVolumeEx
;
40 interface IAudioMeterInformation
;
43 pointer_default(unique),
45 uuid(657804fa
-d6ad
-4496-8a60
-352752af4f89
),
49 interface IAudioEndpointVolumeCallback
: IUnknown
52 AUDIO_VOLUME_NOTIFICATION_DATA
*pNotify
57 pointer_default(unique),
59 uuid(5cdf2c82
-841e-4546-9722-0cf74078229a
),
63 interface IAudioEndpointVolume
: IUnknown
65 HRESULT RegisterControlChangeNotify
(
66 [in] IAudioEndpointVolumeCallback
*pNotify
68 HRESULT UnregisterControlChangeNotify
(
69 [in] IAudioEndpointVolumeCallback
*pNotify
71 HRESULT GetChannelCount
(
72 [out] UINT
*pnChannelCount
74 HRESULT SetMasterVolumeLevel
(
76 [unique,in] LPCGUID pguidEventContext
78 HRESULT SetMasterVolumeLevelScalar
(
80 [unique,in] LPCGUID pguidEventContext
82 HRESULT GetMasterVolumeLevel
(
85 HRESULT GetMasterVolumeLevelScalar
(
88 HRESULT SetChannelVolumeLevel
(
91 [unique,in] LPCGUID pguidEventContext
93 HRESULT SetChannelVolumeLevelScalar
(
96 [unique,in] LPCGUID pguidEventContext
98 HRESULT GetChannelVolumeLevel
(
100 [out] FLOAT *fLevelDB
102 HRESULT GetChannelVolumeLevelScalar
(
108 [unique,in] LPCGUID pguidEventContext
113 HRESULT GetVolumeStepInfo
(
115 [out] UINT
*pnStepCount
117 HRESULT VolumeStepUp
(
118 [unique,in] LPCGUID pguidEventContext
120 HRESULT VolumeStepDown
(
121 [unique,in] LPCGUID pguidEventContext
123 HRESULT QueryHardwareSupport
(
124 [out] DWORD
*pdwHardwareSupportMask
126 HRESULT GetVolumeRange
(
127 [out] FLOAT *pflVolumeMindB
,
128 [out] FLOAT *pflVolumeMaxdB
,
129 [out] FLOAT *pflVolumeIncrementdB
134 pointer_default(unique),
136 uuid(66e11784
-f695
-4f28
-a505
-a7080081a78f
),
140 interface IAudioEndpointVolumeEx
: IAudioEndpointVolume
142 HRESULT GetVolumeRangeChannel
(
144 [out] FLOAT *pflVolumeMindB
,
145 [out] FLOAT *pflVolumeMaxdB
,
146 [out] FLOAT *pflVolumeIncrementdB