1 /*** Autogenerated by WIDL 3.19 from include/endpointvolume.idl - Do not edit ***/
2 
3 #ifndef __REQUIRED_RPCNDR_H_VERSION__
4 #define __REQUIRED_RPCNDR_H_VERSION__ 475
5 #endif
6 
7 #include <rpc.h>
8 #include <rpcndr.h>
9 
10 #ifndef COM_NO_WINDOWS_H
11 #include <windows.h>
12 #include <ole2.h>
13 #endif
14 
15 #ifndef __endpointvolume_h__
16 #define __endpointvolume_h__
17 
18 /* Forward declarations */
19 
20 #ifndef __IAudioEndpointVolumeCallback_FWD_DEFINED__
21 #define __IAudioEndpointVolumeCallback_FWD_DEFINED__
22 typedef interface IAudioEndpointVolumeCallback IAudioEndpointVolumeCallback;
23 #ifdef __cplusplus
24 interface IAudioEndpointVolumeCallback;
25 #endif /* __cplusplus */
26 #endif
27 
28 #ifndef __IAudioEndpointVolume_FWD_DEFINED__
29 #define __IAudioEndpointVolume_FWD_DEFINED__
30 typedef interface IAudioEndpointVolume IAudioEndpointVolume;
31 #ifdef __cplusplus
32 interface IAudioEndpointVolume;
33 #endif /* __cplusplus */
34 #endif
35 
36 #ifndef __IAudioEndpointVolumeEx_FWD_DEFINED__
37 #define __IAudioEndpointVolumeEx_FWD_DEFINED__
38 typedef interface IAudioEndpointVolumeEx IAudioEndpointVolumeEx;
39 #ifdef __cplusplus
40 interface IAudioEndpointVolumeEx;
41 #endif /* __cplusplus */
42 #endif
43 
44 /* Headers for imported files */
45 
46 #include <unknwn.h>
47 #include <devicetopology.h>
48 
49 #ifdef __cplusplus
50 extern "C" {
51 #endif
52 
53 typedef struct AUDIO_VOLUME_NOTIFICATION_DATA {
54     GUID guidEventContext;
55     WINBOOL bMuted;
56     FLOAT fMasterVolume;
57     UINT nChannels;
58     FLOAT afChannelVolumes[1];
59 } AUDIO_VOLUME_NOTIFICATION_DATA;
60 typedef struct AUDIO_VOLUME_NOTIFICATION_DATA *PAUDIO_VOLUME_NOTIFICATION_DATA;
61 #define ENDPOINT_HARDWARE_SUPPORT_VOLUME 0x1
62 #define ENDPOINT_HARDWARE_SUPPORT_MUTE 0x2
63 #define ENDPOINT_HARDWARE_SUPPORT_METER 0x4
64 #ifndef __IAudioEndpointVolumeCallback_FWD_DEFINED__
65 #define __IAudioEndpointVolumeCallback_FWD_DEFINED__
66 typedef interface IAudioEndpointVolumeCallback IAudioEndpointVolumeCallback;
67 #ifdef __cplusplus
68 interface IAudioEndpointVolumeCallback;
69 #endif /* __cplusplus */
70 #endif
71 
72 #ifndef __IAudioEndpointVolume_FWD_DEFINED__
73 #define __IAudioEndpointVolume_FWD_DEFINED__
74 typedef interface IAudioEndpointVolume IAudioEndpointVolume;
75 #ifdef __cplusplus
76 interface IAudioEndpointVolume;
77 #endif /* __cplusplus */
78 #endif
79 
80 #ifndef __IAudioEndpointVolumeEx_FWD_DEFINED__
81 #define __IAudioEndpointVolumeEx_FWD_DEFINED__
82 typedef interface IAudioEndpointVolumeEx IAudioEndpointVolumeEx;
83 #ifdef __cplusplus
84 interface IAudioEndpointVolumeEx;
85 #endif /* __cplusplus */
86 #endif
87 
88 #ifndef __IAudioMeterInformation_FWD_DEFINED__
89 #define __IAudioMeterInformation_FWD_DEFINED__
90 typedef interface IAudioMeterInformation IAudioMeterInformation;
91 #ifdef __cplusplus
92 interface IAudioMeterInformation;
93 #endif /* __cplusplus */
94 #endif
95 
96 /*****************************************************************************
97  * IAudioEndpointVolumeCallback interface
98  */
99 #ifndef __IAudioEndpointVolumeCallback_INTERFACE_DEFINED__
100 #define __IAudioEndpointVolumeCallback_INTERFACE_DEFINED__
101 
102 DEFINE_GUID(IID_IAudioEndpointVolumeCallback, 0x657804fa, 0xd6ad, 0x4496, 0x8a,0x60, 0x35,0x27,0x52,0xaf,0x4f,0x89);
103 #if defined(__cplusplus) && !defined(CINTERFACE)
104 MIDL_INTERFACE("657804fa-d6ad-4496-8a60-352752af4f89")
105 IAudioEndpointVolumeCallback : public IUnknown
106 {
107     virtual HRESULT STDMETHODCALLTYPE OnNotify(
108         AUDIO_VOLUME_NOTIFICATION_DATA *pNotify) = 0;
109 
110 };
111 #ifdef __CRT_UUID_DECL
112 __CRT_UUID_DECL(IAudioEndpointVolumeCallback, 0x657804fa, 0xd6ad, 0x4496, 0x8a,0x60, 0x35,0x27,0x52,0xaf,0x4f,0x89)
113 #endif
114 #else
115 typedef struct IAudioEndpointVolumeCallbackVtbl {
116     BEGIN_INTERFACE
117 
118     /*** IUnknown methods ***/
119     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
120         IAudioEndpointVolumeCallback *This,
121         REFIID riid,
122         void **ppvObject);
123 
124     ULONG (STDMETHODCALLTYPE *AddRef)(
125         IAudioEndpointVolumeCallback *This);
126 
127     ULONG (STDMETHODCALLTYPE *Release)(
128         IAudioEndpointVolumeCallback *This);
129 
130     /*** IAudioEndpointVolumeCallback methods ***/
131     HRESULT (STDMETHODCALLTYPE *OnNotify)(
132         IAudioEndpointVolumeCallback *This,
133         AUDIO_VOLUME_NOTIFICATION_DATA *pNotify);
134 
135     END_INTERFACE
136 } IAudioEndpointVolumeCallbackVtbl;
137 
138 interface IAudioEndpointVolumeCallback {
139     CONST_VTBL IAudioEndpointVolumeCallbackVtbl* lpVtbl;
140 };
141 
142 #ifdef COBJMACROS
143 #ifndef WIDL_C_INLINE_WRAPPERS
144 /*** IUnknown methods ***/
145 #define IAudioEndpointVolumeCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
146 #define IAudioEndpointVolumeCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
147 #define IAudioEndpointVolumeCallback_Release(This) (This)->lpVtbl->Release(This)
148 /*** IAudioEndpointVolumeCallback methods ***/
149 #define IAudioEndpointVolumeCallback_OnNotify(This,pNotify) (This)->lpVtbl->OnNotify(This,pNotify)
150 #else
151 /*** IUnknown methods ***/
152 static FORCEINLINE HRESULT IAudioEndpointVolumeCallback_QueryInterface(IAudioEndpointVolumeCallback* This,REFIID riid,void **ppvObject) {
153     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
154 }
155 static FORCEINLINE ULONG IAudioEndpointVolumeCallback_AddRef(IAudioEndpointVolumeCallback* This) {
156     return This->lpVtbl->AddRef(This);
157 }
158 static FORCEINLINE ULONG IAudioEndpointVolumeCallback_Release(IAudioEndpointVolumeCallback* This) {
159     return This->lpVtbl->Release(This);
160 }
161 /*** IAudioEndpointVolumeCallback methods ***/
162 static FORCEINLINE HRESULT IAudioEndpointVolumeCallback_OnNotify(IAudioEndpointVolumeCallback* This,AUDIO_VOLUME_NOTIFICATION_DATA *pNotify) {
163     return This->lpVtbl->OnNotify(This,pNotify);
164 }
165 #endif
166 #endif
167 
168 #endif
169 
170 
171 #endif  /* __IAudioEndpointVolumeCallback_INTERFACE_DEFINED__ */
172 
173 /*****************************************************************************
174  * IAudioEndpointVolume interface
175  */
176 #ifndef __IAudioEndpointVolume_INTERFACE_DEFINED__
177 #define __IAudioEndpointVolume_INTERFACE_DEFINED__
178 
179 DEFINE_GUID(IID_IAudioEndpointVolume, 0x5cdf2c82, 0x841e, 0x4546, 0x97,0x22, 0x0c,0xf7,0x40,0x78,0x22,0x9a);
180 #if defined(__cplusplus) && !defined(CINTERFACE)
181 MIDL_INTERFACE("5cdf2c82-841e-4546-9722-0cf74078229a")
182 IAudioEndpointVolume : public IUnknown
183 {
184     virtual HRESULT STDMETHODCALLTYPE RegisterControlChangeNotify(
185         IAudioEndpointVolumeCallback *pNotify) = 0;
186 
187     virtual HRESULT STDMETHODCALLTYPE UnregisterControlChangeNotify(
188         IAudioEndpointVolumeCallback *pNotify) = 0;
189 
190     virtual HRESULT STDMETHODCALLTYPE GetChannelCount(
191         UINT *pnChannelCount) = 0;
192 
193     virtual HRESULT STDMETHODCALLTYPE SetMasterVolumeLevel(
194         FLOAT fLevelDB,
195         LPCGUID pguidEventContext) = 0;
196 
197     virtual HRESULT STDMETHODCALLTYPE SetMasterVolumeLevelScalar(
198         FLOAT fLevel,
199         LPCGUID pguidEventContext) = 0;
200 
201     virtual HRESULT STDMETHODCALLTYPE GetMasterVolumeLevel(
202         FLOAT *fLevelDB) = 0;
203 
204     virtual HRESULT STDMETHODCALLTYPE GetMasterVolumeLevelScalar(
205         FLOAT *fLevel) = 0;
206 
207     virtual HRESULT STDMETHODCALLTYPE SetChannelVolumeLevel(
208         UINT nChannel,
209         FLOAT fLevelDB,
210         LPCGUID pguidEventContext) = 0;
211 
212     virtual HRESULT STDMETHODCALLTYPE SetChannelVolumeLevelScalar(
213         UINT nChannel,
214         FLOAT fLevel,
215         LPCGUID pguidEventContext) = 0;
216 
217     virtual HRESULT STDMETHODCALLTYPE GetChannelVolumeLevel(
218         UINT nChannel,
219         FLOAT *fLevelDB) = 0;
220 
221     virtual HRESULT STDMETHODCALLTYPE GetChannelVolumeLevelScalar(
222         UINT nChannel,
223         FLOAT *fLevel) = 0;
224 
225     virtual HRESULT STDMETHODCALLTYPE SetMute(
226         WINBOOL bMute,
227         LPCGUID pguidEventContext) = 0;
228 
229     virtual HRESULT STDMETHODCALLTYPE GetMute(
230         WINBOOL *bMute) = 0;
231 
232     virtual HRESULT STDMETHODCALLTYPE GetVolumeStepInfo(
233         UINT *pnStep,
234         UINT *pnStepCount) = 0;
235 
236     virtual HRESULT STDMETHODCALLTYPE VolumeStepUp(
237         LPCGUID pguidEventContext) = 0;
238 
239     virtual HRESULT STDMETHODCALLTYPE VolumeStepDown(
240         LPCGUID pguidEventContext) = 0;
241 
242     virtual HRESULT STDMETHODCALLTYPE QueryHardwareSupport(
243         DWORD *pdwHardwareSupportMask) = 0;
244 
245     virtual HRESULT STDMETHODCALLTYPE GetVolumeRange(
246         FLOAT *pflVolumeMindB,
247         FLOAT *pflVolumeMaxdB,
248         FLOAT *pflVolumeIncrementdB) = 0;
249 
250 };
251 #ifdef __CRT_UUID_DECL
252 __CRT_UUID_DECL(IAudioEndpointVolume, 0x5cdf2c82, 0x841e, 0x4546, 0x97,0x22, 0x0c,0xf7,0x40,0x78,0x22,0x9a)
253 #endif
254 #else
255 typedef struct IAudioEndpointVolumeVtbl {
256     BEGIN_INTERFACE
257 
258     /*** IUnknown methods ***/
259     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
260         IAudioEndpointVolume *This,
261         REFIID riid,
262         void **ppvObject);
263 
264     ULONG (STDMETHODCALLTYPE *AddRef)(
265         IAudioEndpointVolume *This);
266 
267     ULONG (STDMETHODCALLTYPE *Release)(
268         IAudioEndpointVolume *This);
269 
270     /*** IAudioEndpointVolume methods ***/
271     HRESULT (STDMETHODCALLTYPE *RegisterControlChangeNotify)(
272         IAudioEndpointVolume *This,
273         IAudioEndpointVolumeCallback *pNotify);
274 
275     HRESULT (STDMETHODCALLTYPE *UnregisterControlChangeNotify)(
276         IAudioEndpointVolume *This,
277         IAudioEndpointVolumeCallback *pNotify);
278 
279     HRESULT (STDMETHODCALLTYPE *GetChannelCount)(
280         IAudioEndpointVolume *This,
281         UINT *pnChannelCount);
282 
283     HRESULT (STDMETHODCALLTYPE *SetMasterVolumeLevel)(
284         IAudioEndpointVolume *This,
285         FLOAT fLevelDB,
286         LPCGUID pguidEventContext);
287 
288     HRESULT (STDMETHODCALLTYPE *SetMasterVolumeLevelScalar)(
289         IAudioEndpointVolume *This,
290         FLOAT fLevel,
291         LPCGUID pguidEventContext);
292 
293     HRESULT (STDMETHODCALLTYPE *GetMasterVolumeLevel)(
294         IAudioEndpointVolume *This,
295         FLOAT *fLevelDB);
296 
297     HRESULT (STDMETHODCALLTYPE *GetMasterVolumeLevelScalar)(
298         IAudioEndpointVolume *This,
299         FLOAT *fLevel);
300 
301     HRESULT (STDMETHODCALLTYPE *SetChannelVolumeLevel)(
302         IAudioEndpointVolume *This,
303         UINT nChannel,
304         FLOAT fLevelDB,
305         LPCGUID pguidEventContext);
306 
307     HRESULT (STDMETHODCALLTYPE *SetChannelVolumeLevelScalar)(
308         IAudioEndpointVolume *This,
309         UINT nChannel,
310         FLOAT fLevel,
311         LPCGUID pguidEventContext);
312 
313     HRESULT (STDMETHODCALLTYPE *GetChannelVolumeLevel)(
314         IAudioEndpointVolume *This,
315         UINT nChannel,
316         FLOAT *fLevelDB);
317 
318     HRESULT (STDMETHODCALLTYPE *GetChannelVolumeLevelScalar)(
319         IAudioEndpointVolume *This,
320         UINT nChannel,
321         FLOAT *fLevel);
322 
323     HRESULT (STDMETHODCALLTYPE *SetMute)(
324         IAudioEndpointVolume *This,
325         WINBOOL bMute,
326         LPCGUID pguidEventContext);
327 
328     HRESULT (STDMETHODCALLTYPE *GetMute)(
329         IAudioEndpointVolume *This,
330         WINBOOL *bMute);
331 
332     HRESULT (STDMETHODCALLTYPE *GetVolumeStepInfo)(
333         IAudioEndpointVolume *This,
334         UINT *pnStep,
335         UINT *pnStepCount);
336 
337     HRESULT (STDMETHODCALLTYPE *VolumeStepUp)(
338         IAudioEndpointVolume *This,
339         LPCGUID pguidEventContext);
340 
341     HRESULT (STDMETHODCALLTYPE *VolumeStepDown)(
342         IAudioEndpointVolume *This,
343         LPCGUID pguidEventContext);
344 
345     HRESULT (STDMETHODCALLTYPE *QueryHardwareSupport)(
346         IAudioEndpointVolume *This,
347         DWORD *pdwHardwareSupportMask);
348 
349     HRESULT (STDMETHODCALLTYPE *GetVolumeRange)(
350         IAudioEndpointVolume *This,
351         FLOAT *pflVolumeMindB,
352         FLOAT *pflVolumeMaxdB,
353         FLOAT *pflVolumeIncrementdB);
354 
355     END_INTERFACE
356 } IAudioEndpointVolumeVtbl;
357 
358 interface IAudioEndpointVolume {
359     CONST_VTBL IAudioEndpointVolumeVtbl* lpVtbl;
360 };
361 
362 #ifdef COBJMACROS
363 #ifndef WIDL_C_INLINE_WRAPPERS
364 /*** IUnknown methods ***/
365 #define IAudioEndpointVolume_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
366 #define IAudioEndpointVolume_AddRef(This) (This)->lpVtbl->AddRef(This)
367 #define IAudioEndpointVolume_Release(This) (This)->lpVtbl->Release(This)
368 /*** IAudioEndpointVolume methods ***/
369 #define IAudioEndpointVolume_RegisterControlChangeNotify(This,pNotify) (This)->lpVtbl->RegisterControlChangeNotify(This,pNotify)
370 #define IAudioEndpointVolume_UnregisterControlChangeNotify(This,pNotify) (This)->lpVtbl->UnregisterControlChangeNotify(This,pNotify)
371 #define IAudioEndpointVolume_GetChannelCount(This,pnChannelCount) (This)->lpVtbl->GetChannelCount(This,pnChannelCount)
372 #define IAudioEndpointVolume_SetMasterVolumeLevel(This,fLevelDB,pguidEventContext) (This)->lpVtbl->SetMasterVolumeLevel(This,fLevelDB,pguidEventContext)
373 #define IAudioEndpointVolume_SetMasterVolumeLevelScalar(This,fLevel,pguidEventContext) (This)->lpVtbl->SetMasterVolumeLevelScalar(This,fLevel,pguidEventContext)
374 #define IAudioEndpointVolume_GetMasterVolumeLevel(This,fLevelDB) (This)->lpVtbl->GetMasterVolumeLevel(This,fLevelDB)
375 #define IAudioEndpointVolume_GetMasterVolumeLevelScalar(This,fLevel) (This)->lpVtbl->GetMasterVolumeLevelScalar(This,fLevel)
376 #define IAudioEndpointVolume_SetChannelVolumeLevel(This,nChannel,fLevelDB,pguidEventContext) (This)->lpVtbl->SetChannelVolumeLevel(This,nChannel,fLevelDB,pguidEventContext)
377 #define IAudioEndpointVolume_SetChannelVolumeLevelScalar(This,nChannel,fLevel,pguidEventContext) (This)->lpVtbl->SetChannelVolumeLevelScalar(This,nChannel,fLevel,pguidEventContext)
378 #define IAudioEndpointVolume_GetChannelVolumeLevel(This,nChannel,fLevelDB) (This)->lpVtbl->GetChannelVolumeLevel(This,nChannel,fLevelDB)
379 #define IAudioEndpointVolume_GetChannelVolumeLevelScalar(This,nChannel,fLevel) (This)->lpVtbl->GetChannelVolumeLevelScalar(This,nChannel,fLevel)
380 #define IAudioEndpointVolume_SetMute(This,bMute,pguidEventContext) (This)->lpVtbl->SetMute(This,bMute,pguidEventContext)
381 #define IAudioEndpointVolume_GetMute(This,bMute) (This)->lpVtbl->GetMute(This,bMute)
382 #define IAudioEndpointVolume_GetVolumeStepInfo(This,pnStep,pnStepCount) (This)->lpVtbl->GetVolumeStepInfo(This,pnStep,pnStepCount)
383 #define IAudioEndpointVolume_VolumeStepUp(This,pguidEventContext) (This)->lpVtbl->VolumeStepUp(This,pguidEventContext)
384 #define IAudioEndpointVolume_VolumeStepDown(This,pguidEventContext) (This)->lpVtbl->VolumeStepDown(This,pguidEventContext)
385 #define IAudioEndpointVolume_QueryHardwareSupport(This,pdwHardwareSupportMask) (This)->lpVtbl->QueryHardwareSupport(This,pdwHardwareSupportMask)
386 #define IAudioEndpointVolume_GetVolumeRange(This,pflVolumeMindB,pflVolumeMaxdB,pflVolumeIncrementdB) (This)->lpVtbl->GetVolumeRange(This,pflVolumeMindB,pflVolumeMaxdB,pflVolumeIncrementdB)
387 #else
388 /*** IUnknown methods ***/
389 static FORCEINLINE HRESULT IAudioEndpointVolume_QueryInterface(IAudioEndpointVolume* This,REFIID riid,void **ppvObject) {
390     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
391 }
392 static FORCEINLINE ULONG IAudioEndpointVolume_AddRef(IAudioEndpointVolume* This) {
393     return This->lpVtbl->AddRef(This);
394 }
395 static FORCEINLINE ULONG IAudioEndpointVolume_Release(IAudioEndpointVolume* This) {
396     return This->lpVtbl->Release(This);
397 }
398 /*** IAudioEndpointVolume methods ***/
399 static FORCEINLINE HRESULT IAudioEndpointVolume_RegisterControlChangeNotify(IAudioEndpointVolume* This,IAudioEndpointVolumeCallback *pNotify) {
400     return This->lpVtbl->RegisterControlChangeNotify(This,pNotify);
401 }
402 static FORCEINLINE HRESULT IAudioEndpointVolume_UnregisterControlChangeNotify(IAudioEndpointVolume* This,IAudioEndpointVolumeCallback *pNotify) {
403     return This->lpVtbl->UnregisterControlChangeNotify(This,pNotify);
404 }
405 static FORCEINLINE HRESULT IAudioEndpointVolume_GetChannelCount(IAudioEndpointVolume* This,UINT *pnChannelCount) {
406     return This->lpVtbl->GetChannelCount(This,pnChannelCount);
407 }
408 static FORCEINLINE HRESULT IAudioEndpointVolume_SetMasterVolumeLevel(IAudioEndpointVolume* This,FLOAT fLevelDB,LPCGUID pguidEventContext) {
409     return This->lpVtbl->SetMasterVolumeLevel(This,fLevelDB,pguidEventContext);
410 }
411 static FORCEINLINE HRESULT IAudioEndpointVolume_SetMasterVolumeLevelScalar(IAudioEndpointVolume* This,FLOAT fLevel,LPCGUID pguidEventContext) {
412     return This->lpVtbl->SetMasterVolumeLevelScalar(This,fLevel,pguidEventContext);
413 }
414 static FORCEINLINE HRESULT IAudioEndpointVolume_GetMasterVolumeLevel(IAudioEndpointVolume* This,FLOAT *fLevelDB) {
415     return This->lpVtbl->GetMasterVolumeLevel(This,fLevelDB);
416 }
417 static FORCEINLINE HRESULT IAudioEndpointVolume_GetMasterVolumeLevelScalar(IAudioEndpointVolume* This,FLOAT *fLevel) {
418     return This->lpVtbl->GetMasterVolumeLevelScalar(This,fLevel);
419 }
420 static FORCEINLINE HRESULT IAudioEndpointVolume_SetChannelVolumeLevel(IAudioEndpointVolume* This,UINT nChannel,FLOAT fLevelDB,LPCGUID pguidEventContext) {
421     return This->lpVtbl->SetChannelVolumeLevel(This,nChannel,fLevelDB,pguidEventContext);
422 }
423 static FORCEINLINE HRESULT IAudioEndpointVolume_SetChannelVolumeLevelScalar(IAudioEndpointVolume* This,UINT nChannel,FLOAT fLevel,LPCGUID pguidEventContext) {
424     return This->lpVtbl->SetChannelVolumeLevelScalar(This,nChannel,fLevel,pguidEventContext);
425 }
426 static FORCEINLINE HRESULT IAudioEndpointVolume_GetChannelVolumeLevel(IAudioEndpointVolume* This,UINT nChannel,FLOAT *fLevelDB) {
427     return This->lpVtbl->GetChannelVolumeLevel(This,nChannel,fLevelDB);
428 }
429 static FORCEINLINE HRESULT IAudioEndpointVolume_GetChannelVolumeLevelScalar(IAudioEndpointVolume* This,UINT nChannel,FLOAT *fLevel) {
430     return This->lpVtbl->GetChannelVolumeLevelScalar(This,nChannel,fLevel);
431 }
432 static FORCEINLINE HRESULT IAudioEndpointVolume_SetMute(IAudioEndpointVolume* This,WINBOOL bMute,LPCGUID pguidEventContext) {
433     return This->lpVtbl->SetMute(This,bMute,pguidEventContext);
434 }
435 static FORCEINLINE HRESULT IAudioEndpointVolume_GetMute(IAudioEndpointVolume* This,WINBOOL *bMute) {
436     return This->lpVtbl->GetMute(This,bMute);
437 }
438 static FORCEINLINE HRESULT IAudioEndpointVolume_GetVolumeStepInfo(IAudioEndpointVolume* This,UINT *pnStep,UINT *pnStepCount) {
439     return This->lpVtbl->GetVolumeStepInfo(This,pnStep,pnStepCount);
440 }
441 static FORCEINLINE HRESULT IAudioEndpointVolume_VolumeStepUp(IAudioEndpointVolume* This,LPCGUID pguidEventContext) {
442     return This->lpVtbl->VolumeStepUp(This,pguidEventContext);
443 }
444 static FORCEINLINE HRESULT IAudioEndpointVolume_VolumeStepDown(IAudioEndpointVolume* This,LPCGUID pguidEventContext) {
445     return This->lpVtbl->VolumeStepDown(This,pguidEventContext);
446 }
447 static FORCEINLINE HRESULT IAudioEndpointVolume_QueryHardwareSupport(IAudioEndpointVolume* This,DWORD *pdwHardwareSupportMask) {
448     return This->lpVtbl->QueryHardwareSupport(This,pdwHardwareSupportMask);
449 }
450 static FORCEINLINE HRESULT IAudioEndpointVolume_GetVolumeRange(IAudioEndpointVolume* This,FLOAT *pflVolumeMindB,FLOAT *pflVolumeMaxdB,FLOAT *pflVolumeIncrementdB) {
451     return This->lpVtbl->GetVolumeRange(This,pflVolumeMindB,pflVolumeMaxdB,pflVolumeIncrementdB);
452 }
453 #endif
454 #endif
455 
456 #endif
457 
458 
459 #endif  /* __IAudioEndpointVolume_INTERFACE_DEFINED__ */
460 
461 /*****************************************************************************
462  * IAudioEndpointVolumeEx interface
463  */
464 #ifndef __IAudioEndpointVolumeEx_INTERFACE_DEFINED__
465 #define __IAudioEndpointVolumeEx_INTERFACE_DEFINED__
466 
467 DEFINE_GUID(IID_IAudioEndpointVolumeEx, 0x66e11784, 0xf695, 0x4f28, 0xa5,0x05, 0xa7,0x08,0x00,0x81,0xa7,0x8f);
468 #if defined(__cplusplus) && !defined(CINTERFACE)
469 MIDL_INTERFACE("66e11784-f695-4f28-a505-a7080081a78f")
470 IAudioEndpointVolumeEx : public IAudioEndpointVolume
471 {
472     virtual HRESULT STDMETHODCALLTYPE GetVolumeRangeChannel(
473         UINT iChannel,
474         FLOAT *pflVolumeMindB,
475         FLOAT *pflVolumeMaxdB,
476         FLOAT *pflVolumeIncrementdB) = 0;
477 
478 };
479 #ifdef __CRT_UUID_DECL
480 __CRT_UUID_DECL(IAudioEndpointVolumeEx, 0x66e11784, 0xf695, 0x4f28, 0xa5,0x05, 0xa7,0x08,0x00,0x81,0xa7,0x8f)
481 #endif
482 #else
483 typedef struct IAudioEndpointVolumeExVtbl {
484     BEGIN_INTERFACE
485 
486     /*** IUnknown methods ***/
487     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
488         IAudioEndpointVolumeEx *This,
489         REFIID riid,
490         void **ppvObject);
491 
492     ULONG (STDMETHODCALLTYPE *AddRef)(
493         IAudioEndpointVolumeEx *This);
494 
495     ULONG (STDMETHODCALLTYPE *Release)(
496         IAudioEndpointVolumeEx *This);
497 
498     /*** IAudioEndpointVolume methods ***/
499     HRESULT (STDMETHODCALLTYPE *RegisterControlChangeNotify)(
500         IAudioEndpointVolumeEx *This,
501         IAudioEndpointVolumeCallback *pNotify);
502 
503     HRESULT (STDMETHODCALLTYPE *UnregisterControlChangeNotify)(
504         IAudioEndpointVolumeEx *This,
505         IAudioEndpointVolumeCallback *pNotify);
506 
507     HRESULT (STDMETHODCALLTYPE *GetChannelCount)(
508         IAudioEndpointVolumeEx *This,
509         UINT *pnChannelCount);
510 
511     HRESULT (STDMETHODCALLTYPE *SetMasterVolumeLevel)(
512         IAudioEndpointVolumeEx *This,
513         FLOAT fLevelDB,
514         LPCGUID pguidEventContext);
515 
516     HRESULT (STDMETHODCALLTYPE *SetMasterVolumeLevelScalar)(
517         IAudioEndpointVolumeEx *This,
518         FLOAT fLevel,
519         LPCGUID pguidEventContext);
520 
521     HRESULT (STDMETHODCALLTYPE *GetMasterVolumeLevel)(
522         IAudioEndpointVolumeEx *This,
523         FLOAT *fLevelDB);
524 
525     HRESULT (STDMETHODCALLTYPE *GetMasterVolumeLevelScalar)(
526         IAudioEndpointVolumeEx *This,
527         FLOAT *fLevel);
528 
529     HRESULT (STDMETHODCALLTYPE *SetChannelVolumeLevel)(
530         IAudioEndpointVolumeEx *This,
531         UINT nChannel,
532         FLOAT fLevelDB,
533         LPCGUID pguidEventContext);
534 
535     HRESULT (STDMETHODCALLTYPE *SetChannelVolumeLevelScalar)(
536         IAudioEndpointVolumeEx *This,
537         UINT nChannel,
538         FLOAT fLevel,
539         LPCGUID pguidEventContext);
540 
541     HRESULT (STDMETHODCALLTYPE *GetChannelVolumeLevel)(
542         IAudioEndpointVolumeEx *This,
543         UINT nChannel,
544         FLOAT *fLevelDB);
545 
546     HRESULT (STDMETHODCALLTYPE *GetChannelVolumeLevelScalar)(
547         IAudioEndpointVolumeEx *This,
548         UINT nChannel,
549         FLOAT *fLevel);
550 
551     HRESULT (STDMETHODCALLTYPE *SetMute)(
552         IAudioEndpointVolumeEx *This,
553         WINBOOL bMute,
554         LPCGUID pguidEventContext);
555 
556     HRESULT (STDMETHODCALLTYPE *GetMute)(
557         IAudioEndpointVolumeEx *This,
558         WINBOOL *bMute);
559 
560     HRESULT (STDMETHODCALLTYPE *GetVolumeStepInfo)(
561         IAudioEndpointVolumeEx *This,
562         UINT *pnStep,
563         UINT *pnStepCount);
564 
565     HRESULT (STDMETHODCALLTYPE *VolumeStepUp)(
566         IAudioEndpointVolumeEx *This,
567         LPCGUID pguidEventContext);
568 
569     HRESULT (STDMETHODCALLTYPE *VolumeStepDown)(
570         IAudioEndpointVolumeEx *This,
571         LPCGUID pguidEventContext);
572 
573     HRESULT (STDMETHODCALLTYPE *QueryHardwareSupport)(
574         IAudioEndpointVolumeEx *This,
575         DWORD *pdwHardwareSupportMask);
576 
577     HRESULT (STDMETHODCALLTYPE *GetVolumeRange)(
578         IAudioEndpointVolumeEx *This,
579         FLOAT *pflVolumeMindB,
580         FLOAT *pflVolumeMaxdB,
581         FLOAT *pflVolumeIncrementdB);
582 
583     /*** IAudioEndpointVolumeEx methods ***/
584     HRESULT (STDMETHODCALLTYPE *GetVolumeRangeChannel)(
585         IAudioEndpointVolumeEx *This,
586         UINT iChannel,
587         FLOAT *pflVolumeMindB,
588         FLOAT *pflVolumeMaxdB,
589         FLOAT *pflVolumeIncrementdB);
590 
591     END_INTERFACE
592 } IAudioEndpointVolumeExVtbl;
593 
594 interface IAudioEndpointVolumeEx {
595     CONST_VTBL IAudioEndpointVolumeExVtbl* lpVtbl;
596 };
597 
598 #ifdef COBJMACROS
599 #ifndef WIDL_C_INLINE_WRAPPERS
600 /*** IUnknown methods ***/
601 #define IAudioEndpointVolumeEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
602 #define IAudioEndpointVolumeEx_AddRef(This) (This)->lpVtbl->AddRef(This)
603 #define IAudioEndpointVolumeEx_Release(This) (This)->lpVtbl->Release(This)
604 /*** IAudioEndpointVolume methods ***/
605 #define IAudioEndpointVolumeEx_RegisterControlChangeNotify(This,pNotify) (This)->lpVtbl->RegisterControlChangeNotify(This,pNotify)
606 #define IAudioEndpointVolumeEx_UnregisterControlChangeNotify(This,pNotify) (This)->lpVtbl->UnregisterControlChangeNotify(This,pNotify)
607 #define IAudioEndpointVolumeEx_GetChannelCount(This,pnChannelCount) (This)->lpVtbl->GetChannelCount(This,pnChannelCount)
608 #define IAudioEndpointVolumeEx_SetMasterVolumeLevel(This,fLevelDB,pguidEventContext) (This)->lpVtbl->SetMasterVolumeLevel(This,fLevelDB,pguidEventContext)
609 #define IAudioEndpointVolumeEx_SetMasterVolumeLevelScalar(This,fLevel,pguidEventContext) (This)->lpVtbl->SetMasterVolumeLevelScalar(This,fLevel,pguidEventContext)
610 #define IAudioEndpointVolumeEx_GetMasterVolumeLevel(This,fLevelDB) (This)->lpVtbl->GetMasterVolumeLevel(This,fLevelDB)
611 #define IAudioEndpointVolumeEx_GetMasterVolumeLevelScalar(This,fLevel) (This)->lpVtbl->GetMasterVolumeLevelScalar(This,fLevel)
612 #define IAudioEndpointVolumeEx_SetChannelVolumeLevel(This,nChannel,fLevelDB,pguidEventContext) (This)->lpVtbl->SetChannelVolumeLevel(This,nChannel,fLevelDB,pguidEventContext)
613 #define IAudioEndpointVolumeEx_SetChannelVolumeLevelScalar(This,nChannel,fLevel,pguidEventContext) (This)->lpVtbl->SetChannelVolumeLevelScalar(This,nChannel,fLevel,pguidEventContext)
614 #define IAudioEndpointVolumeEx_GetChannelVolumeLevel(This,nChannel,fLevelDB) (This)->lpVtbl->GetChannelVolumeLevel(This,nChannel,fLevelDB)
615 #define IAudioEndpointVolumeEx_GetChannelVolumeLevelScalar(This,nChannel,fLevel) (This)->lpVtbl->GetChannelVolumeLevelScalar(This,nChannel,fLevel)
616 #define IAudioEndpointVolumeEx_SetMute(This,bMute,pguidEventContext) (This)->lpVtbl->SetMute(This,bMute,pguidEventContext)
617 #define IAudioEndpointVolumeEx_GetMute(This,bMute) (This)->lpVtbl->GetMute(This,bMute)
618 #define IAudioEndpointVolumeEx_GetVolumeStepInfo(This,pnStep,pnStepCount) (This)->lpVtbl->GetVolumeStepInfo(This,pnStep,pnStepCount)
619 #define IAudioEndpointVolumeEx_VolumeStepUp(This,pguidEventContext) (This)->lpVtbl->VolumeStepUp(This,pguidEventContext)
620 #define IAudioEndpointVolumeEx_VolumeStepDown(This,pguidEventContext) (This)->lpVtbl->VolumeStepDown(This,pguidEventContext)
621 #define IAudioEndpointVolumeEx_QueryHardwareSupport(This,pdwHardwareSupportMask) (This)->lpVtbl->QueryHardwareSupport(This,pdwHardwareSupportMask)
622 #define IAudioEndpointVolumeEx_GetVolumeRange(This,pflVolumeMindB,pflVolumeMaxdB,pflVolumeIncrementdB) (This)->lpVtbl->GetVolumeRange(This,pflVolumeMindB,pflVolumeMaxdB,pflVolumeIncrementdB)
623 /*** IAudioEndpointVolumeEx methods ***/
624 #define IAudioEndpointVolumeEx_GetVolumeRangeChannel(This,iChannel,pflVolumeMindB,pflVolumeMaxdB,pflVolumeIncrementdB) (This)->lpVtbl->GetVolumeRangeChannel(This,iChannel,pflVolumeMindB,pflVolumeMaxdB,pflVolumeIncrementdB)
625 #else
626 /*** IUnknown methods ***/
627 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_QueryInterface(IAudioEndpointVolumeEx* This,REFIID riid,void **ppvObject) {
628     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
629 }
630 static FORCEINLINE ULONG IAudioEndpointVolumeEx_AddRef(IAudioEndpointVolumeEx* This) {
631     return This->lpVtbl->AddRef(This);
632 }
633 static FORCEINLINE ULONG IAudioEndpointVolumeEx_Release(IAudioEndpointVolumeEx* This) {
634     return This->lpVtbl->Release(This);
635 }
636 /*** IAudioEndpointVolume methods ***/
637 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_RegisterControlChangeNotify(IAudioEndpointVolumeEx* This,IAudioEndpointVolumeCallback *pNotify) {
638     return This->lpVtbl->RegisterControlChangeNotify(This,pNotify);
639 }
640 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_UnregisterControlChangeNotify(IAudioEndpointVolumeEx* This,IAudioEndpointVolumeCallback *pNotify) {
641     return This->lpVtbl->UnregisterControlChangeNotify(This,pNotify);
642 }
643 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_GetChannelCount(IAudioEndpointVolumeEx* This,UINT *pnChannelCount) {
644     return This->lpVtbl->GetChannelCount(This,pnChannelCount);
645 }
646 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_SetMasterVolumeLevel(IAudioEndpointVolumeEx* This,FLOAT fLevelDB,LPCGUID pguidEventContext) {
647     return This->lpVtbl->SetMasterVolumeLevel(This,fLevelDB,pguidEventContext);
648 }
649 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_SetMasterVolumeLevelScalar(IAudioEndpointVolumeEx* This,FLOAT fLevel,LPCGUID pguidEventContext) {
650     return This->lpVtbl->SetMasterVolumeLevelScalar(This,fLevel,pguidEventContext);
651 }
652 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_GetMasterVolumeLevel(IAudioEndpointVolumeEx* This,FLOAT *fLevelDB) {
653     return This->lpVtbl->GetMasterVolumeLevel(This,fLevelDB);
654 }
655 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_GetMasterVolumeLevelScalar(IAudioEndpointVolumeEx* This,FLOAT *fLevel) {
656     return This->lpVtbl->GetMasterVolumeLevelScalar(This,fLevel);
657 }
658 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_SetChannelVolumeLevel(IAudioEndpointVolumeEx* This,UINT nChannel,FLOAT fLevelDB,LPCGUID pguidEventContext) {
659     return This->lpVtbl->SetChannelVolumeLevel(This,nChannel,fLevelDB,pguidEventContext);
660 }
661 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_SetChannelVolumeLevelScalar(IAudioEndpointVolumeEx* This,UINT nChannel,FLOAT fLevel,LPCGUID pguidEventContext) {
662     return This->lpVtbl->SetChannelVolumeLevelScalar(This,nChannel,fLevel,pguidEventContext);
663 }
664 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_GetChannelVolumeLevel(IAudioEndpointVolumeEx* This,UINT nChannel,FLOAT *fLevelDB) {
665     return This->lpVtbl->GetChannelVolumeLevel(This,nChannel,fLevelDB);
666 }
667 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_GetChannelVolumeLevelScalar(IAudioEndpointVolumeEx* This,UINT nChannel,FLOAT *fLevel) {
668     return This->lpVtbl->GetChannelVolumeLevelScalar(This,nChannel,fLevel);
669 }
670 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_SetMute(IAudioEndpointVolumeEx* This,WINBOOL bMute,LPCGUID pguidEventContext) {
671     return This->lpVtbl->SetMute(This,bMute,pguidEventContext);
672 }
673 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_GetMute(IAudioEndpointVolumeEx* This,WINBOOL *bMute) {
674     return This->lpVtbl->GetMute(This,bMute);
675 }
676 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_GetVolumeStepInfo(IAudioEndpointVolumeEx* This,UINT *pnStep,UINT *pnStepCount) {
677     return This->lpVtbl->GetVolumeStepInfo(This,pnStep,pnStepCount);
678 }
679 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_VolumeStepUp(IAudioEndpointVolumeEx* This,LPCGUID pguidEventContext) {
680     return This->lpVtbl->VolumeStepUp(This,pguidEventContext);
681 }
682 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_VolumeStepDown(IAudioEndpointVolumeEx* This,LPCGUID pguidEventContext) {
683     return This->lpVtbl->VolumeStepDown(This,pguidEventContext);
684 }
685 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_QueryHardwareSupport(IAudioEndpointVolumeEx* This,DWORD *pdwHardwareSupportMask) {
686     return This->lpVtbl->QueryHardwareSupport(This,pdwHardwareSupportMask);
687 }
688 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_GetVolumeRange(IAudioEndpointVolumeEx* This,FLOAT *pflVolumeMindB,FLOAT *pflVolumeMaxdB,FLOAT *pflVolumeIncrementdB) {
689     return This->lpVtbl->GetVolumeRange(This,pflVolumeMindB,pflVolumeMaxdB,pflVolumeIncrementdB);
690 }
691 /*** IAudioEndpointVolumeEx methods ***/
692 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_GetVolumeRangeChannel(IAudioEndpointVolumeEx* This,UINT iChannel,FLOAT *pflVolumeMindB,FLOAT *pflVolumeMaxdB,FLOAT *pflVolumeIncrementdB) {
693     return This->lpVtbl->GetVolumeRangeChannel(This,iChannel,pflVolumeMindB,pflVolumeMaxdB,pflVolumeIncrementdB);
694 }
695 #endif
696 #endif
697 
698 #endif
699 
700 
701 #endif  /* __IAudioEndpointVolumeEx_INTERFACE_DEFINED__ */
702 
703 /* Begin additional prototypes for all interfaces */
704 
705 
706 /* End additional prototypes */
707 
708 #ifdef __cplusplus
709 }
710 #endif
711 
712 #endif /* __endpointvolume_h__ */
713