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