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