Home | History | Annotate | Download | only in include
      1 /*** Autogenerated by WIDL 1.5.29 from /tmp/build-mingw64-toolchain-digit/src/mingw-w64-svn-r5861/mingw-w64-headers/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 #endif
     24 
     25 #ifndef __IAudioEndpointVolume_FWD_DEFINED__
     26 #define __IAudioEndpointVolume_FWD_DEFINED__
     27 typedef interface IAudioEndpointVolume IAudioEndpointVolume;
     28 #endif
     29 
     30 #ifndef __IAudioEndpointVolumeEx_FWD_DEFINED__
     31 #define __IAudioEndpointVolumeEx_FWD_DEFINED__
     32 typedef interface IAudioEndpointVolumeEx IAudioEndpointVolumeEx;
     33 #endif
     34 
     35 /* Headers for imported files */
     36 
     37 #include <unknwn.h>
     38 #include <devicetopology.h>
     39 
     40 #ifdef __cplusplus
     41 extern "C" {
     42 #endif
     43 
     44 typedef struct AUDIO_VOLUME_NOTIFICATION_DATA {
     45     GUID guidEventContext;
     46     WINBOOL bMuted;
     47     FLOAT fMasterVolume;
     48     UINT nChannels;
     49     FLOAT afChannelVolumes[1];
     50 } AUDIO_VOLUME_NOTIFICATION_DATA;
     51 typedef struct AUDIO_VOLUME_NOTIFICATION_DATA *PAUDIO_VOLUME_NOTIFICATION_DATA;
     52 #define ENDPOINT_HARDWARE_SUPPORT_VOLUME 0x1
     53 #define ENDPOINT_HARDWARE_SUPPORT_MUTE 0x2
     54 #define ENDPOINT_HARDWARE_SUPPORT_METER 0x4
     55 #ifndef __IAudioEndpointVolumeCallback_FWD_DEFINED__
     56 #define __IAudioEndpointVolumeCallback_FWD_DEFINED__
     57 typedef interface IAudioEndpointVolumeCallback IAudioEndpointVolumeCallback;
     58 #endif
     59 
     60 #ifndef __IAudioEndpointVolume_FWD_DEFINED__
     61 #define __IAudioEndpointVolume_FWD_DEFINED__
     62 typedef interface IAudioEndpointVolume IAudioEndpointVolume;
     63 #endif
     64 
     65 #ifndef __IAudioEndpointVolumeEx_FWD_DEFINED__
     66 #define __IAudioEndpointVolumeEx_FWD_DEFINED__
     67 typedef interface IAudioEndpointVolumeEx IAudioEndpointVolumeEx;
     68 #endif
     69 
     70 #ifndef __IAudioMeterInformation_FWD_DEFINED__
     71 #define __IAudioMeterInformation_FWD_DEFINED__
     72 typedef interface IAudioMeterInformation IAudioMeterInformation;
     73 #endif
     74 
     75 /*****************************************************************************
     76  * IAudioEndpointVolumeCallback interface
     77  */
     78 #ifndef __IAudioEndpointVolumeCallback_INTERFACE_DEFINED__
     79 #define __IAudioEndpointVolumeCallback_INTERFACE_DEFINED__
     80 
     81 DEFINE_GUID(IID_IAudioEndpointVolumeCallback, 0x657804fa, 0xd6ad, 0x4496, 0x8a,0x60, 0x35,0x27,0x52,0xaf,0x4f,0x89);
     82 #if defined(__cplusplus) && !defined(CINTERFACE)
     83 MIDL_INTERFACE("657804fa-d6ad-4496-8a60-352752af4f89")
     84 IAudioEndpointVolumeCallback : public IUnknown
     85 {
     86     virtual HRESULT STDMETHODCALLTYPE OnNotify(
     87         AUDIO_VOLUME_NOTIFICATION_DATA *pNotify) = 0;
     88 
     89 };
     90 #ifdef __CRT_UUID_DECL
     91 __CRT_UUID_DECL(IAudioEndpointVolumeCallback, 0x657804fa, 0xd6ad, 0x4496, 0x8a,0x60, 0x35,0x27,0x52,0xaf,0x4f,0x89)
     92 #endif
     93 #else
     94 typedef struct IAudioEndpointVolumeCallbackVtbl {
     95     BEGIN_INTERFACE
     96 
     97     /*** IUnknown methods ***/
     98     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
     99         IAudioEndpointVolumeCallback* This,
    100         REFIID riid,
    101         void **ppvObject);
    102 
    103     ULONG (STDMETHODCALLTYPE *AddRef)(
    104         IAudioEndpointVolumeCallback* This);
    105 
    106     ULONG (STDMETHODCALLTYPE *Release)(
    107         IAudioEndpointVolumeCallback* This);
    108 
    109     /*** IAudioEndpointVolumeCallback methods ***/
    110     HRESULT (STDMETHODCALLTYPE *OnNotify)(
    111         IAudioEndpointVolumeCallback* This,
    112         AUDIO_VOLUME_NOTIFICATION_DATA *pNotify);
    113 
    114     END_INTERFACE
    115 } IAudioEndpointVolumeCallbackVtbl;
    116 interface IAudioEndpointVolumeCallback {
    117     CONST_VTBL IAudioEndpointVolumeCallbackVtbl* lpVtbl;
    118 };
    119 
    120 #ifdef COBJMACROS
    121 #ifndef WIDL_C_INLINE_WRAPPERS
    122 /*** IUnknown methods ***/
    123 #define IAudioEndpointVolumeCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    124 #define IAudioEndpointVolumeCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
    125 #define IAudioEndpointVolumeCallback_Release(This) (This)->lpVtbl->Release(This)
    126 /*** IAudioEndpointVolumeCallback methods ***/
    127 #define IAudioEndpointVolumeCallback_OnNotify(This,pNotify) (This)->lpVtbl->OnNotify(This,pNotify)
    128 #else
    129 /*** IUnknown methods ***/
    130 static FORCEINLINE HRESULT IAudioEndpointVolumeCallback_QueryInterface(IAudioEndpointVolumeCallback* This,REFIID riid,void **ppvObject) {
    131     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    132 }
    133 static FORCEINLINE ULONG IAudioEndpointVolumeCallback_AddRef(IAudioEndpointVolumeCallback* This) {
    134     return This->lpVtbl->AddRef(This);
    135 }
    136 static FORCEINLINE ULONG IAudioEndpointVolumeCallback_Release(IAudioEndpointVolumeCallback* This) {
    137     return This->lpVtbl->Release(This);
    138 }
    139 /*** IAudioEndpointVolumeCallback methods ***/
    140 static FORCEINLINE HRESULT IAudioEndpointVolumeCallback_OnNotify(IAudioEndpointVolumeCallback* This,AUDIO_VOLUME_NOTIFICATION_DATA *pNotify) {
    141     return This->lpVtbl->OnNotify(This,pNotify);
    142 }
    143 #endif
    144 #endif
    145 
    146 #endif
    147 
    148 HRESULT STDMETHODCALLTYPE IAudioEndpointVolumeCallback_OnNotify_Proxy(
    149     IAudioEndpointVolumeCallback* This,
    150     AUDIO_VOLUME_NOTIFICATION_DATA *pNotify);
    151 void __RPC_STUB IAudioEndpointVolumeCallback_OnNotify_Stub(
    152     IRpcStubBuffer* This,
    153     IRpcChannelBuffer* pRpcChannelBuffer,
    154     PRPC_MESSAGE pRpcMessage,
    155     DWORD* pdwStubPhase);
    156 
    157 #endif  /* __IAudioEndpointVolumeCallback_INTERFACE_DEFINED__ */
    158 
    159 /*****************************************************************************
    160  * IAudioEndpointVolume interface
    161  */
    162 #ifndef __IAudioEndpointVolume_INTERFACE_DEFINED__
    163 #define __IAudioEndpointVolume_INTERFACE_DEFINED__
    164 
    165 DEFINE_GUID(IID_IAudioEndpointVolume, 0x5cdf2c82, 0x841e, 0x4546, 0x97,0x22, 0x0c,0xf7,0x40,0x78,0x22,0x9a);
    166 #if defined(__cplusplus) && !defined(CINTERFACE)
    167 MIDL_INTERFACE("5cdf2c82-841e-4546-9722-0cf74078229a")
    168 IAudioEndpointVolume : public IUnknown
    169 {
    170     virtual HRESULT STDMETHODCALLTYPE RegisterControlChangeNotify(
    171         IAudioEndpointVolumeCallback *pNotify) = 0;
    172 
    173     virtual HRESULT STDMETHODCALLTYPE UnregisterControlChangeNotify(
    174         IAudioEndpointVolumeCallback *pNotify) = 0;
    175 
    176     virtual HRESULT STDMETHODCALLTYPE GetChannelCount(
    177         UINT *pnChannelCount) = 0;
    178 
    179     virtual HRESULT STDMETHODCALLTYPE SetMasterVolumeLevel(
    180         FLOAT fLevelDB,
    181         LPCGUID pguidEventContext) = 0;
    182 
    183     virtual HRESULT STDMETHODCALLTYPE SetMasterVolumeLevelScalar(
    184         FLOAT fLevel,
    185         LPCGUID pguidEventContext) = 0;
    186 
    187     virtual HRESULT STDMETHODCALLTYPE GetMasterVolumeLevel(
    188         FLOAT *fLevelDB) = 0;
    189 
    190     virtual HRESULT STDMETHODCALLTYPE GetMasterVolumeLevelScalar(
    191         FLOAT *fLevel) = 0;
    192 
    193     virtual HRESULT STDMETHODCALLTYPE SetChannelVolumeLevel(
    194         UINT nChannel,
    195         FLOAT fLevelDB,
    196         LPCGUID pguidEventContext) = 0;
    197 
    198     virtual HRESULT STDMETHODCALLTYPE SetChannelVolumeLevelScalar(
    199         UINT nChannel,
    200         FLOAT fLevel,
    201         LPCGUID pguidEventContext) = 0;
    202 
    203     virtual HRESULT STDMETHODCALLTYPE GetChannelVolumeLevel(
    204         UINT nChannel,
    205         FLOAT *fLevelDB) = 0;
    206 
    207     virtual HRESULT STDMETHODCALLTYPE GetChannelVolumeLevelScalar(
    208         UINT nChannel,
    209         FLOAT *fLevel) = 0;
    210 
    211     virtual HRESULT STDMETHODCALLTYPE SetMute(
    212         WINBOOL bMute,
    213         LPCGUID pguidEventContext) = 0;
    214 
    215     virtual HRESULT STDMETHODCALLTYPE GetMute(
    216         WINBOOL *bMute) = 0;
    217 
    218     virtual HRESULT STDMETHODCALLTYPE GetVolumeStepInfo(
    219         UINT *pnStep,
    220         UINT *pnStepCount) = 0;
    221 
    222     virtual HRESULT STDMETHODCALLTYPE VolumeStepUp(
    223         LPCGUID pguidEventContext) = 0;
    224 
    225     virtual HRESULT STDMETHODCALLTYPE VolumeStepDown(
    226         LPCGUID pguidEventContext) = 0;
    227 
    228     virtual HRESULT STDMETHODCALLTYPE QueryHardwareSupport(
    229         DWORD *pdwHardwareSupportMask) = 0;
    230 
    231     virtual HRESULT STDMETHODCALLTYPE GetVolumeRange(
    232         FLOAT *pflVolumeMindB,
    233         FLOAT *pflVolumeMaxdB,
    234         FLOAT *pflVolumeIncrementdB) = 0;
    235 
    236 };
    237 #ifdef __CRT_UUID_DECL
    238 __CRT_UUID_DECL(IAudioEndpointVolume, 0x5cdf2c82, 0x841e, 0x4546, 0x97,0x22, 0x0c,0xf7,0x40,0x78,0x22,0x9a)
    239 #endif
    240 #else
    241 typedef struct IAudioEndpointVolumeVtbl {
    242     BEGIN_INTERFACE
    243 
    244     /*** IUnknown methods ***/
    245     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    246         IAudioEndpointVolume* This,
    247         REFIID riid,
    248         void **ppvObject);
    249 
    250     ULONG (STDMETHODCALLTYPE *AddRef)(
    251         IAudioEndpointVolume* This);
    252 
    253     ULONG (STDMETHODCALLTYPE *Release)(
    254         IAudioEndpointVolume* This);
    255 
    256     /*** IAudioEndpointVolume methods ***/
    257     HRESULT (STDMETHODCALLTYPE *RegisterControlChangeNotify)(
    258         IAudioEndpointVolume* This,
    259         IAudioEndpointVolumeCallback *pNotify);
    260 
    261     HRESULT (STDMETHODCALLTYPE *UnregisterControlChangeNotify)(
    262         IAudioEndpointVolume* This,
    263         IAudioEndpointVolumeCallback *pNotify);
    264 
    265     HRESULT (STDMETHODCALLTYPE *GetChannelCount)(
    266         IAudioEndpointVolume* This,
    267         UINT *pnChannelCount);
    268 
    269     HRESULT (STDMETHODCALLTYPE *SetMasterVolumeLevel)(
    270         IAudioEndpointVolume* This,
    271         FLOAT fLevelDB,
    272         LPCGUID pguidEventContext);
    273 
    274     HRESULT (STDMETHODCALLTYPE *SetMasterVolumeLevelScalar)(
    275         IAudioEndpointVolume* This,
    276         FLOAT fLevel,
    277         LPCGUID pguidEventContext);
    278 
    279     HRESULT (STDMETHODCALLTYPE *GetMasterVolumeLevel)(
    280         IAudioEndpointVolume* This,
    281         FLOAT *fLevelDB);
    282 
    283     HRESULT (STDMETHODCALLTYPE *GetMasterVolumeLevelScalar)(
    284         IAudioEndpointVolume* This,
    285         FLOAT *fLevel);
    286 
    287     HRESULT (STDMETHODCALLTYPE *SetChannelVolumeLevel)(
    288         IAudioEndpointVolume* This,
    289         UINT nChannel,
    290         FLOAT fLevelDB,
    291         LPCGUID pguidEventContext);
    292 
    293     HRESULT (STDMETHODCALLTYPE *SetChannelVolumeLevelScalar)(
    294         IAudioEndpointVolume* This,
    295         UINT nChannel,
    296         FLOAT fLevel,
    297         LPCGUID pguidEventContext);
    298 
    299     HRESULT (STDMETHODCALLTYPE *GetChannelVolumeLevel)(
    300         IAudioEndpointVolume* This,
    301         UINT nChannel,
    302         FLOAT *fLevelDB);
    303 
    304     HRESULT (STDMETHODCALLTYPE *GetChannelVolumeLevelScalar)(
    305         IAudioEndpointVolume* This,
    306         UINT nChannel,
    307         FLOAT *fLevel);
    308 
    309     HRESULT (STDMETHODCALLTYPE *SetMute)(
    310         IAudioEndpointVolume* This,
    311         WINBOOL bMute,
    312         LPCGUID pguidEventContext);
    313 
    314     HRESULT (STDMETHODCALLTYPE *GetMute)(
    315         IAudioEndpointVolume* This,
    316         WINBOOL *bMute);
    317 
    318     HRESULT (STDMETHODCALLTYPE *GetVolumeStepInfo)(
    319         IAudioEndpointVolume* This,
    320         UINT *pnStep,
    321         UINT *pnStepCount);
    322 
    323     HRESULT (STDMETHODCALLTYPE *VolumeStepUp)(
    324         IAudioEndpointVolume* This,
    325         LPCGUID pguidEventContext);
    326 
    327     HRESULT (STDMETHODCALLTYPE *VolumeStepDown)(
    328         IAudioEndpointVolume* This,
    329         LPCGUID pguidEventContext);
    330 
    331     HRESULT (STDMETHODCALLTYPE *QueryHardwareSupport)(
    332         IAudioEndpointVolume* This,
    333         DWORD *pdwHardwareSupportMask);
    334 
    335     HRESULT (STDMETHODCALLTYPE *GetVolumeRange)(
    336         IAudioEndpointVolume* This,
    337         FLOAT *pflVolumeMindB,
    338         FLOAT *pflVolumeMaxdB,
    339         FLOAT *pflVolumeIncrementdB);
    340 
    341     END_INTERFACE
    342 } IAudioEndpointVolumeVtbl;
    343 interface IAudioEndpointVolume {
    344     CONST_VTBL IAudioEndpointVolumeVtbl* lpVtbl;
    345 };
    346 
    347 #ifdef COBJMACROS
    348 #ifndef WIDL_C_INLINE_WRAPPERS
    349 /*** IUnknown methods ***/
    350 #define IAudioEndpointVolume_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    351 #define IAudioEndpointVolume_AddRef(This) (This)->lpVtbl->AddRef(This)
    352 #define IAudioEndpointVolume_Release(This) (This)->lpVtbl->Release(This)
    353 /*** IAudioEndpointVolume methods ***/
    354 #define IAudioEndpointVolume_RegisterControlChangeNotify(This,pNotify) (This)->lpVtbl->RegisterControlChangeNotify(This,pNotify)
    355 #define IAudioEndpointVolume_UnregisterControlChangeNotify(This,pNotify) (This)->lpVtbl->UnregisterControlChangeNotify(This,pNotify)
    356 #define IAudioEndpointVolume_GetChannelCount(This,pnChannelCount) (This)->lpVtbl->GetChannelCount(This,pnChannelCount)
    357 #define IAudioEndpointVolume_SetMasterVolumeLevel(This,fLevelDB,pguidEventContext) (This)->lpVtbl->SetMasterVolumeLevel(This,fLevelDB,pguidEventContext)
    358 #define IAudioEndpointVolume_SetMasterVolumeLevelScalar(This,fLevel,pguidEventContext) (This)->lpVtbl->SetMasterVolumeLevelScalar(This,fLevel,pguidEventContext)
    359 #define IAudioEndpointVolume_GetMasterVolumeLevel(This,fLevelDB) (This)->lpVtbl->GetMasterVolumeLevel(This,fLevelDB)
    360 #define IAudioEndpointVolume_GetMasterVolumeLevelScalar(This,fLevel) (This)->lpVtbl->GetMasterVolumeLevelScalar(This,fLevel)
    361 #define IAudioEndpointVolume_SetChannelVolumeLevel(This,nChannel,fLevelDB,pguidEventContext) (This)->lpVtbl->SetChannelVolumeLevel(This,nChannel,fLevelDB,pguidEventContext)
    362 #define IAudioEndpointVolume_SetChannelVolumeLevelScalar(This,nChannel,fLevel,pguidEventContext) (This)->lpVtbl->SetChannelVolumeLevelScalar(This,nChannel,fLevel,pguidEventContext)
    363 #define IAudioEndpointVolume_GetChannelVolumeLevel(This,nChannel,fLevelDB) (This)->lpVtbl->GetChannelVolumeLevel(This,nChannel,fLevelDB)
    364 #define IAudioEndpointVolume_GetChannelVolumeLevelScalar(This,nChannel,fLevel) (This)->lpVtbl->GetChannelVolumeLevelScalar(This,nChannel,fLevel)
    365 #define IAudioEndpointVolume_SetMute(This,bMute,pguidEventContext) (This)->lpVtbl->SetMute(This,bMute,pguidEventContext)
    366 #define IAudioEndpointVolume_GetMute(This,bMute) (This)->lpVtbl->GetMute(This,bMute)
    367 #define IAudioEndpointVolume_GetVolumeStepInfo(This,pnStep,pnStepCount) (This)->lpVtbl->GetVolumeStepInfo(This,pnStep,pnStepCount)
    368 #define IAudioEndpointVolume_VolumeStepUp(This,pguidEventContext) (This)->lpVtbl->VolumeStepUp(This,pguidEventContext)
    369 #define IAudioEndpointVolume_VolumeStepDown(This,pguidEventContext) (This)->lpVtbl->VolumeStepDown(This,pguidEventContext)
    370 #define IAudioEndpointVolume_QueryHardwareSupport(This,pdwHardwareSupportMask) (This)->lpVtbl->QueryHardwareSupport(This,pdwHardwareSupportMask)
    371 #define IAudioEndpointVolume_GetVolumeRange(This,pflVolumeMindB,pflVolumeMaxdB,pflVolumeIncrementdB) (This)->lpVtbl->GetVolumeRange(This,pflVolumeMindB,pflVolumeMaxdB,pflVolumeIncrementdB)
    372 #else
    373 /*** IUnknown methods ***/
    374 static FORCEINLINE HRESULT IAudioEndpointVolume_QueryInterface(IAudioEndpointVolume* This,REFIID riid,void **ppvObject) {
    375     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    376 }
    377 static FORCEINLINE ULONG IAudioEndpointVolume_AddRef(IAudioEndpointVolume* This) {
    378     return This->lpVtbl->AddRef(This);
    379 }
    380 static FORCEINLINE ULONG IAudioEndpointVolume_Release(IAudioEndpointVolume* This) {
    381     return This->lpVtbl->Release(This);
    382 }
    383 /*** IAudioEndpointVolume methods ***/
    384 static FORCEINLINE HRESULT IAudioEndpointVolume_RegisterControlChangeNotify(IAudioEndpointVolume* This,IAudioEndpointVolumeCallback *pNotify) {
    385     return This->lpVtbl->RegisterControlChangeNotify(This,pNotify);
    386 }
    387 static FORCEINLINE HRESULT IAudioEndpointVolume_UnregisterControlChangeNotify(IAudioEndpointVolume* This,IAudioEndpointVolumeCallback *pNotify) {
    388     return This->lpVtbl->UnregisterControlChangeNotify(This,pNotify);
    389 }
    390 static FORCEINLINE HRESULT IAudioEndpointVolume_GetChannelCount(IAudioEndpointVolume* This,UINT *pnChannelCount) {
    391     return This->lpVtbl->GetChannelCount(This,pnChannelCount);
    392 }
    393 static FORCEINLINE HRESULT IAudioEndpointVolume_SetMasterVolumeLevel(IAudioEndpointVolume* This,FLOAT fLevelDB,LPCGUID pguidEventContext) {
    394     return This->lpVtbl->SetMasterVolumeLevel(This,fLevelDB,pguidEventContext);
    395 }
    396 static FORCEINLINE HRESULT IAudioEndpointVolume_SetMasterVolumeLevelScalar(IAudioEndpointVolume* This,FLOAT fLevel,LPCGUID pguidEventContext) {
    397     return This->lpVtbl->SetMasterVolumeLevelScalar(This,fLevel,pguidEventContext);
    398 }
    399 static FORCEINLINE HRESULT IAudioEndpointVolume_GetMasterVolumeLevel(IAudioEndpointVolume* This,FLOAT *fLevelDB) {
    400     return This->lpVtbl->GetMasterVolumeLevel(This,fLevelDB);
    401 }
    402 static FORCEINLINE HRESULT IAudioEndpointVolume_GetMasterVolumeLevelScalar(IAudioEndpointVolume* This,FLOAT *fLevel) {
    403     return This->lpVtbl->GetMasterVolumeLevelScalar(This,fLevel);
    404 }
    405 static FORCEINLINE HRESULT IAudioEndpointVolume_SetChannelVolumeLevel(IAudioEndpointVolume* This,UINT nChannel,FLOAT fLevelDB,LPCGUID pguidEventContext) {
    406     return This->lpVtbl->SetChannelVolumeLevel(This,nChannel,fLevelDB,pguidEventContext);
    407 }
    408 static FORCEINLINE HRESULT IAudioEndpointVolume_SetChannelVolumeLevelScalar(IAudioEndpointVolume* This,UINT nChannel,FLOAT fLevel,LPCGUID pguidEventContext) {
    409     return This->lpVtbl->SetChannelVolumeLevelScalar(This,nChannel,fLevel,pguidEventContext);
    410 }
    411 static FORCEINLINE HRESULT IAudioEndpointVolume_GetChannelVolumeLevel(IAudioEndpointVolume* This,UINT nChannel,FLOAT *fLevelDB) {
    412     return This->lpVtbl->GetChannelVolumeLevel(This,nChannel,fLevelDB);
    413 }
    414 static FORCEINLINE HRESULT IAudioEndpointVolume_GetChannelVolumeLevelScalar(IAudioEndpointVolume* This,UINT nChannel,FLOAT *fLevel) {
    415     return This->lpVtbl->GetChannelVolumeLevelScalar(This,nChannel,fLevel);
    416 }
    417 static FORCEINLINE HRESULT IAudioEndpointVolume_SetMute(IAudioEndpointVolume* This,WINBOOL bMute,LPCGUID pguidEventContext) {
    418     return This->lpVtbl->SetMute(This,bMute,pguidEventContext);
    419 }
    420 static FORCEINLINE HRESULT IAudioEndpointVolume_GetMute(IAudioEndpointVolume* This,WINBOOL *bMute) {
    421     return This->lpVtbl->GetMute(This,bMute);
    422 }
    423 static FORCEINLINE HRESULT IAudioEndpointVolume_GetVolumeStepInfo(IAudioEndpointVolume* This,UINT *pnStep,UINT *pnStepCount) {
    424     return This->lpVtbl->GetVolumeStepInfo(This,pnStep,pnStepCount);
    425 }
    426 static FORCEINLINE HRESULT IAudioEndpointVolume_VolumeStepUp(IAudioEndpointVolume* This,LPCGUID pguidEventContext) {
    427     return This->lpVtbl->VolumeStepUp(This,pguidEventContext);
    428 }
    429 static FORCEINLINE HRESULT IAudioEndpointVolume_VolumeStepDown(IAudioEndpointVolume* This,LPCGUID pguidEventContext) {
    430     return This->lpVtbl->VolumeStepDown(This,pguidEventContext);
    431 }
    432 static FORCEINLINE HRESULT IAudioEndpointVolume_QueryHardwareSupport(IAudioEndpointVolume* This,DWORD *pdwHardwareSupportMask) {
    433     return This->lpVtbl->QueryHardwareSupport(This,pdwHardwareSupportMask);
    434 }
    435 static FORCEINLINE HRESULT IAudioEndpointVolume_GetVolumeRange(IAudioEndpointVolume* This,FLOAT *pflVolumeMindB,FLOAT *pflVolumeMaxdB,FLOAT *pflVolumeIncrementdB) {
    436     return This->lpVtbl->GetVolumeRange(This,pflVolumeMindB,pflVolumeMaxdB,pflVolumeIncrementdB);
    437 }
    438 #endif
    439 #endif
    440 
    441 #endif
    442 
    443 HRESULT STDMETHODCALLTYPE IAudioEndpointVolume_RegisterControlChangeNotify_Proxy(
    444     IAudioEndpointVolume* This,
    445     IAudioEndpointVolumeCallback *pNotify);
    446 void __RPC_STUB IAudioEndpointVolume_RegisterControlChangeNotify_Stub(
    447     IRpcStubBuffer* This,
    448     IRpcChannelBuffer* pRpcChannelBuffer,
    449     PRPC_MESSAGE pRpcMessage,
    450     DWORD* pdwStubPhase);
    451 HRESULT STDMETHODCALLTYPE IAudioEndpointVolume_UnregisterControlChangeNotify_Proxy(
    452     IAudioEndpointVolume* This,
    453     IAudioEndpointVolumeCallback *pNotify);
    454 void __RPC_STUB IAudioEndpointVolume_UnregisterControlChangeNotify_Stub(
    455     IRpcStubBuffer* This,
    456     IRpcChannelBuffer* pRpcChannelBuffer,
    457     PRPC_MESSAGE pRpcMessage,
    458     DWORD* pdwStubPhase);
    459 HRESULT STDMETHODCALLTYPE IAudioEndpointVolume_GetChannelCount_Proxy(
    460     IAudioEndpointVolume* This,
    461     UINT *pnChannelCount);
    462 void __RPC_STUB IAudioEndpointVolume_GetChannelCount_Stub(
    463     IRpcStubBuffer* This,
    464     IRpcChannelBuffer* pRpcChannelBuffer,
    465     PRPC_MESSAGE pRpcMessage,
    466     DWORD* pdwStubPhase);
    467 HRESULT STDMETHODCALLTYPE IAudioEndpointVolume_SetMasterVolumeLevel_Proxy(
    468     IAudioEndpointVolume* This,
    469     FLOAT fLevelDB,
    470     LPCGUID pguidEventContext);
    471 void __RPC_STUB IAudioEndpointVolume_SetMasterVolumeLevel_Stub(
    472     IRpcStubBuffer* This,
    473     IRpcChannelBuffer* pRpcChannelBuffer,
    474     PRPC_MESSAGE pRpcMessage,
    475     DWORD* pdwStubPhase);
    476 HRESULT STDMETHODCALLTYPE IAudioEndpointVolume_SetMasterVolumeLevelScalar_Proxy(
    477     IAudioEndpointVolume* This,
    478     FLOAT fLevel,
    479     LPCGUID pguidEventContext);
    480 void __RPC_STUB IAudioEndpointVolume_SetMasterVolumeLevelScalar_Stub(
    481     IRpcStubBuffer* This,
    482     IRpcChannelBuffer* pRpcChannelBuffer,
    483     PRPC_MESSAGE pRpcMessage,
    484     DWORD* pdwStubPhase);
    485 HRESULT STDMETHODCALLTYPE IAudioEndpointVolume_GetMasterVolumeLevel_Proxy(
    486     IAudioEndpointVolume* This,
    487     FLOAT *fLevelDB);
    488 void __RPC_STUB IAudioEndpointVolume_GetMasterVolumeLevel_Stub(
    489     IRpcStubBuffer* This,
    490     IRpcChannelBuffer* pRpcChannelBuffer,
    491     PRPC_MESSAGE pRpcMessage,
    492     DWORD* pdwStubPhase);
    493 HRESULT STDMETHODCALLTYPE IAudioEndpointVolume_GetMasterVolumeLevelScalar_Proxy(
    494     IAudioEndpointVolume* This,
    495     FLOAT *fLevel);
    496 void __RPC_STUB IAudioEndpointVolume_GetMasterVolumeLevelScalar_Stub(
    497     IRpcStubBuffer* This,
    498     IRpcChannelBuffer* pRpcChannelBuffer,
    499     PRPC_MESSAGE pRpcMessage,
    500     DWORD* pdwStubPhase);
    501 HRESULT STDMETHODCALLTYPE IAudioEndpointVolume_SetChannelVolumeLevel_Proxy(
    502     IAudioEndpointVolume* This,
    503     UINT nChannel,
    504     FLOAT fLevelDB,
    505     LPCGUID pguidEventContext);
    506 void __RPC_STUB IAudioEndpointVolume_SetChannelVolumeLevel_Stub(
    507     IRpcStubBuffer* This,
    508     IRpcChannelBuffer* pRpcChannelBuffer,
    509     PRPC_MESSAGE pRpcMessage,
    510     DWORD* pdwStubPhase);
    511 HRESULT STDMETHODCALLTYPE IAudioEndpointVolume_SetChannelVolumeLevelScalar_Proxy(
    512     IAudioEndpointVolume* This,
    513     UINT nChannel,
    514     FLOAT fLevel,
    515     LPCGUID pguidEventContext);
    516 void __RPC_STUB IAudioEndpointVolume_SetChannelVolumeLevelScalar_Stub(
    517     IRpcStubBuffer* This,
    518     IRpcChannelBuffer* pRpcChannelBuffer,
    519     PRPC_MESSAGE pRpcMessage,
    520     DWORD* pdwStubPhase);
    521 HRESULT STDMETHODCALLTYPE IAudioEndpointVolume_GetChannelVolumeLevel_Proxy(
    522     IAudioEndpointVolume* This,
    523     UINT nChannel,
    524     FLOAT *fLevelDB);
    525 void __RPC_STUB IAudioEndpointVolume_GetChannelVolumeLevel_Stub(
    526     IRpcStubBuffer* This,
    527     IRpcChannelBuffer* pRpcChannelBuffer,
    528     PRPC_MESSAGE pRpcMessage,
    529     DWORD* pdwStubPhase);
    530 HRESULT STDMETHODCALLTYPE IAudioEndpointVolume_GetChannelVolumeLevelScalar_Proxy(
    531     IAudioEndpointVolume* This,
    532     UINT nChannel,
    533     FLOAT *fLevel);
    534 void __RPC_STUB IAudioEndpointVolume_GetChannelVolumeLevelScalar_Stub(
    535     IRpcStubBuffer* This,
    536     IRpcChannelBuffer* pRpcChannelBuffer,
    537     PRPC_MESSAGE pRpcMessage,
    538     DWORD* pdwStubPhase);
    539 HRESULT STDMETHODCALLTYPE IAudioEndpointVolume_SetMute_Proxy(
    540     IAudioEndpointVolume* This,
    541     WINBOOL bMute,
    542     LPCGUID pguidEventContext);
    543 void __RPC_STUB IAudioEndpointVolume_SetMute_Stub(
    544     IRpcStubBuffer* This,
    545     IRpcChannelBuffer* pRpcChannelBuffer,
    546     PRPC_MESSAGE pRpcMessage,
    547     DWORD* pdwStubPhase);
    548 HRESULT STDMETHODCALLTYPE IAudioEndpointVolume_GetMute_Proxy(
    549     IAudioEndpointVolume* This,
    550     WINBOOL *bMute);
    551 void __RPC_STUB IAudioEndpointVolume_GetMute_Stub(
    552     IRpcStubBuffer* This,
    553     IRpcChannelBuffer* pRpcChannelBuffer,
    554     PRPC_MESSAGE pRpcMessage,
    555     DWORD* pdwStubPhase);
    556 HRESULT STDMETHODCALLTYPE IAudioEndpointVolume_GetVolumeStepInfo_Proxy(
    557     IAudioEndpointVolume* This,
    558     UINT *pnStep,
    559     UINT *pnStepCount);
    560 void __RPC_STUB IAudioEndpointVolume_GetVolumeStepInfo_Stub(
    561     IRpcStubBuffer* This,
    562     IRpcChannelBuffer* pRpcChannelBuffer,
    563     PRPC_MESSAGE pRpcMessage,
    564     DWORD* pdwStubPhase);
    565 HRESULT STDMETHODCALLTYPE IAudioEndpointVolume_VolumeStepUp_Proxy(
    566     IAudioEndpointVolume* This,
    567     LPCGUID pguidEventContext);
    568 void __RPC_STUB IAudioEndpointVolume_VolumeStepUp_Stub(
    569     IRpcStubBuffer* This,
    570     IRpcChannelBuffer* pRpcChannelBuffer,
    571     PRPC_MESSAGE pRpcMessage,
    572     DWORD* pdwStubPhase);
    573 HRESULT STDMETHODCALLTYPE IAudioEndpointVolume_VolumeStepDown_Proxy(
    574     IAudioEndpointVolume* This,
    575     LPCGUID pguidEventContext);
    576 void __RPC_STUB IAudioEndpointVolume_VolumeStepDown_Stub(
    577     IRpcStubBuffer* This,
    578     IRpcChannelBuffer* pRpcChannelBuffer,
    579     PRPC_MESSAGE pRpcMessage,
    580     DWORD* pdwStubPhase);
    581 HRESULT STDMETHODCALLTYPE IAudioEndpointVolume_QueryHardwareSupport_Proxy(
    582     IAudioEndpointVolume* This,
    583     DWORD *pdwHardwareSupportMask);
    584 void __RPC_STUB IAudioEndpointVolume_QueryHardwareSupport_Stub(
    585     IRpcStubBuffer* This,
    586     IRpcChannelBuffer* pRpcChannelBuffer,
    587     PRPC_MESSAGE pRpcMessage,
    588     DWORD* pdwStubPhase);
    589 HRESULT STDMETHODCALLTYPE IAudioEndpointVolume_GetVolumeRange_Proxy(
    590     IAudioEndpointVolume* This,
    591     FLOAT *pflVolumeMindB,
    592     FLOAT *pflVolumeMaxdB,
    593     FLOAT *pflVolumeIncrementdB);
    594 void __RPC_STUB IAudioEndpointVolume_GetVolumeRange_Stub(
    595     IRpcStubBuffer* This,
    596     IRpcChannelBuffer* pRpcChannelBuffer,
    597     PRPC_MESSAGE pRpcMessage,
    598     DWORD* pdwStubPhase);
    599 
    600 #endif  /* __IAudioEndpointVolume_INTERFACE_DEFINED__ */
    601 
    602 /*****************************************************************************
    603  * IAudioEndpointVolumeEx interface
    604  */
    605 #ifndef __IAudioEndpointVolumeEx_INTERFACE_DEFINED__
    606 #define __IAudioEndpointVolumeEx_INTERFACE_DEFINED__
    607 
    608 DEFINE_GUID(IID_IAudioEndpointVolumeEx, 0x66e11784, 0xf695, 0x4f28, 0xa5,0x05, 0xa7,0x08,0x00,0x81,0xa7,0x8f);
    609 #if defined(__cplusplus) && !defined(CINTERFACE)
    610 MIDL_INTERFACE("66e11784-f695-4f28-a505-a7080081a78f")
    611 IAudioEndpointVolumeEx : public IAudioEndpointVolume
    612 {
    613     virtual HRESULT STDMETHODCALLTYPE GetVolumeRangeChannel(
    614         UINT iChannel,
    615         FLOAT *pflVolumeMindB,
    616         FLOAT *pflVolumeMaxdB,
    617         FLOAT *pflVolumeIncrementdB) = 0;
    618 
    619 };
    620 #ifdef __CRT_UUID_DECL
    621 __CRT_UUID_DECL(IAudioEndpointVolumeEx, 0x66e11784, 0xf695, 0x4f28, 0xa5,0x05, 0xa7,0x08,0x00,0x81,0xa7,0x8f)
    622 #endif
    623 #else
    624 typedef struct IAudioEndpointVolumeExVtbl {
    625     BEGIN_INTERFACE
    626 
    627     /*** IUnknown methods ***/
    628     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    629         IAudioEndpointVolumeEx* This,
    630         REFIID riid,
    631         void **ppvObject);
    632 
    633     ULONG (STDMETHODCALLTYPE *AddRef)(
    634         IAudioEndpointVolumeEx* This);
    635 
    636     ULONG (STDMETHODCALLTYPE *Release)(
    637         IAudioEndpointVolumeEx* This);
    638 
    639     /*** IAudioEndpointVolume methods ***/
    640     HRESULT (STDMETHODCALLTYPE *RegisterControlChangeNotify)(
    641         IAudioEndpointVolumeEx* This,
    642         IAudioEndpointVolumeCallback *pNotify);
    643 
    644     HRESULT (STDMETHODCALLTYPE *UnregisterControlChangeNotify)(
    645         IAudioEndpointVolumeEx* This,
    646         IAudioEndpointVolumeCallback *pNotify);
    647 
    648     HRESULT (STDMETHODCALLTYPE *GetChannelCount)(
    649         IAudioEndpointVolumeEx* This,
    650         UINT *pnChannelCount);
    651 
    652     HRESULT (STDMETHODCALLTYPE *SetMasterVolumeLevel)(
    653         IAudioEndpointVolumeEx* This,
    654         FLOAT fLevelDB,
    655         LPCGUID pguidEventContext);
    656 
    657     HRESULT (STDMETHODCALLTYPE *SetMasterVolumeLevelScalar)(
    658         IAudioEndpointVolumeEx* This,
    659         FLOAT fLevel,
    660         LPCGUID pguidEventContext);
    661 
    662     HRESULT (STDMETHODCALLTYPE *GetMasterVolumeLevel)(
    663         IAudioEndpointVolumeEx* This,
    664         FLOAT *fLevelDB);
    665 
    666     HRESULT (STDMETHODCALLTYPE *GetMasterVolumeLevelScalar)(
    667         IAudioEndpointVolumeEx* This,
    668         FLOAT *fLevel);
    669 
    670     HRESULT (STDMETHODCALLTYPE *SetChannelVolumeLevel)(
    671         IAudioEndpointVolumeEx* This,
    672         UINT nChannel,
    673         FLOAT fLevelDB,
    674         LPCGUID pguidEventContext);
    675 
    676     HRESULT (STDMETHODCALLTYPE *SetChannelVolumeLevelScalar)(
    677         IAudioEndpointVolumeEx* This,
    678         UINT nChannel,
    679         FLOAT fLevel,
    680         LPCGUID pguidEventContext);
    681 
    682     HRESULT (STDMETHODCALLTYPE *GetChannelVolumeLevel)(
    683         IAudioEndpointVolumeEx* This,
    684         UINT nChannel,
    685         FLOAT *fLevelDB);
    686 
    687     HRESULT (STDMETHODCALLTYPE *GetChannelVolumeLevelScalar)(
    688         IAudioEndpointVolumeEx* This,
    689         UINT nChannel,
    690         FLOAT *fLevel);
    691 
    692     HRESULT (STDMETHODCALLTYPE *SetMute)(
    693         IAudioEndpointVolumeEx* This,
    694         WINBOOL bMute,
    695         LPCGUID pguidEventContext);
    696 
    697     HRESULT (STDMETHODCALLTYPE *GetMute)(
    698         IAudioEndpointVolumeEx* This,
    699         WINBOOL *bMute);
    700 
    701     HRESULT (STDMETHODCALLTYPE *GetVolumeStepInfo)(
    702         IAudioEndpointVolumeEx* This,
    703         UINT *pnStep,
    704         UINT *pnStepCount);
    705 
    706     HRESULT (STDMETHODCALLTYPE *VolumeStepUp)(
    707         IAudioEndpointVolumeEx* This,
    708         LPCGUID pguidEventContext);
    709 
    710     HRESULT (STDMETHODCALLTYPE *VolumeStepDown)(
    711         IAudioEndpointVolumeEx* This,
    712         LPCGUID pguidEventContext);
    713 
    714     HRESULT (STDMETHODCALLTYPE *QueryHardwareSupport)(
    715         IAudioEndpointVolumeEx* This,
    716         DWORD *pdwHardwareSupportMask);
    717 
    718     HRESULT (STDMETHODCALLTYPE *GetVolumeRange)(
    719         IAudioEndpointVolumeEx* This,
    720         FLOAT *pflVolumeMindB,
    721         FLOAT *pflVolumeMaxdB,
    722         FLOAT *pflVolumeIncrementdB);
    723 
    724     /*** IAudioEndpointVolumeEx methods ***/
    725     HRESULT (STDMETHODCALLTYPE *GetVolumeRangeChannel)(
    726         IAudioEndpointVolumeEx* This,
    727         UINT iChannel,
    728         FLOAT *pflVolumeMindB,
    729         FLOAT *pflVolumeMaxdB,
    730         FLOAT *pflVolumeIncrementdB);
    731 
    732     END_INTERFACE
    733 } IAudioEndpointVolumeExVtbl;
    734 interface IAudioEndpointVolumeEx {
    735     CONST_VTBL IAudioEndpointVolumeExVtbl* lpVtbl;
    736 };
    737 
    738 #ifdef COBJMACROS
    739 #ifndef WIDL_C_INLINE_WRAPPERS
    740 /*** IUnknown methods ***/
    741 #define IAudioEndpointVolumeEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    742 #define IAudioEndpointVolumeEx_AddRef(This) (This)->lpVtbl->AddRef(This)
    743 #define IAudioEndpointVolumeEx_Release(This) (This)->lpVtbl->Release(This)
    744 /*** IAudioEndpointVolume methods ***/
    745 #define IAudioEndpointVolumeEx_RegisterControlChangeNotify(This,pNotify) (This)->lpVtbl->RegisterControlChangeNotify(This,pNotify)
    746 #define IAudioEndpointVolumeEx_UnregisterControlChangeNotify(This,pNotify) (This)->lpVtbl->UnregisterControlChangeNotify(This,pNotify)
    747 #define IAudioEndpointVolumeEx_GetChannelCount(This,pnChannelCount) (This)->lpVtbl->GetChannelCount(This,pnChannelCount)
    748 #define IAudioEndpointVolumeEx_SetMasterVolumeLevel(This,fLevelDB,pguidEventContext) (This)->lpVtbl->SetMasterVolumeLevel(This,fLevelDB,pguidEventContext)
    749 #define IAudioEndpointVolumeEx_SetMasterVolumeLevelScalar(This,fLevel,pguidEventContext) (This)->lpVtbl->SetMasterVolumeLevelScalar(This,fLevel,pguidEventContext)
    750 #define IAudioEndpointVolumeEx_GetMasterVolumeLevel(This,fLevelDB) (This)->lpVtbl->GetMasterVolumeLevel(This,fLevelDB)
    751 #define IAudioEndpointVolumeEx_GetMasterVolumeLevelScalar(This,fLevel) (This)->lpVtbl->GetMasterVolumeLevelScalar(This,fLevel)
    752 #define IAudioEndpointVolumeEx_SetChannelVolumeLevel(This,nChannel,fLevelDB,pguidEventContext) (This)->lpVtbl->SetChannelVolumeLevel(This,nChannel,fLevelDB,pguidEventContext)
    753 #define IAudioEndpointVolumeEx_SetChannelVolumeLevelScalar(This,nChannel,fLevel,pguidEventContext) (This)->lpVtbl->SetChannelVolumeLevelScalar(This,nChannel,fLevel,pguidEventContext)
    754 #define IAudioEndpointVolumeEx_GetChannelVolumeLevel(This,nChannel,fLevelDB) (This)->lpVtbl->GetChannelVolumeLevel(This,nChannel,fLevelDB)
    755 #define IAudioEndpointVolumeEx_GetChannelVolumeLevelScalar(This,nChannel,fLevel) (This)->lpVtbl->GetChannelVolumeLevelScalar(This,nChannel,fLevel)
    756 #define IAudioEndpointVolumeEx_SetMute(This,bMute,pguidEventContext) (This)->lpVtbl->SetMute(This,bMute,pguidEventContext)
    757 #define IAudioEndpointVolumeEx_GetMute(This,bMute) (This)->lpVtbl->GetMute(This,bMute)
    758 #define IAudioEndpointVolumeEx_GetVolumeStepInfo(This,pnStep,pnStepCount) (This)->lpVtbl->GetVolumeStepInfo(This,pnStep,pnStepCount)
    759 #define IAudioEndpointVolumeEx_VolumeStepUp(This,pguidEventContext) (This)->lpVtbl->VolumeStepUp(This,pguidEventContext)
    760 #define IAudioEndpointVolumeEx_VolumeStepDown(This,pguidEventContext) (This)->lpVtbl->VolumeStepDown(This,pguidEventContext)
    761 #define IAudioEndpointVolumeEx_QueryHardwareSupport(This,pdwHardwareSupportMask) (This)->lpVtbl->QueryHardwareSupport(This,pdwHardwareSupportMask)
    762 #define IAudioEndpointVolumeEx_GetVolumeRange(This,pflVolumeMindB,pflVolumeMaxdB,pflVolumeIncrementdB) (This)->lpVtbl->GetVolumeRange(This,pflVolumeMindB,pflVolumeMaxdB,pflVolumeIncrementdB)
    763 /*** IAudioEndpointVolumeEx methods ***/
    764 #define IAudioEndpointVolumeEx_GetVolumeRangeChannel(This,iChannel,pflVolumeMindB,pflVolumeMaxdB,pflVolumeIncrementdB) (This)->lpVtbl->GetVolumeRangeChannel(This,iChannel,pflVolumeMindB,pflVolumeMaxdB,pflVolumeIncrementdB)
    765 #else
    766 /*** IUnknown methods ***/
    767 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_QueryInterface(IAudioEndpointVolumeEx* This,REFIID riid,void **ppvObject) {
    768     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    769 }
    770 static FORCEINLINE ULONG IAudioEndpointVolumeEx_AddRef(IAudioEndpointVolumeEx* This) {
    771     return This->lpVtbl->AddRef(This);
    772 }
    773 static FORCEINLINE ULONG IAudioEndpointVolumeEx_Release(IAudioEndpointVolumeEx* This) {
    774     return This->lpVtbl->Release(This);
    775 }
    776 /*** IAudioEndpointVolume methods ***/
    777 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_RegisterControlChangeNotify(IAudioEndpointVolumeEx* This,IAudioEndpointVolumeCallback *pNotify) {
    778     return This->lpVtbl->RegisterControlChangeNotify(This,pNotify);
    779 }
    780 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_UnregisterControlChangeNotify(IAudioEndpointVolumeEx* This,IAudioEndpointVolumeCallback *pNotify) {
    781     return This->lpVtbl->UnregisterControlChangeNotify(This,pNotify);
    782 }
    783 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_GetChannelCount(IAudioEndpointVolumeEx* This,UINT *pnChannelCount) {
    784     return This->lpVtbl->GetChannelCount(This,pnChannelCount);
    785 }
    786 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_SetMasterVolumeLevel(IAudioEndpointVolumeEx* This,FLOAT fLevelDB,LPCGUID pguidEventContext) {
    787     return This->lpVtbl->SetMasterVolumeLevel(This,fLevelDB,pguidEventContext);
    788 }
    789 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_SetMasterVolumeLevelScalar(IAudioEndpointVolumeEx* This,FLOAT fLevel,LPCGUID pguidEventContext) {
    790     return This->lpVtbl->SetMasterVolumeLevelScalar(This,fLevel,pguidEventContext);
    791 }
    792 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_GetMasterVolumeLevel(IAudioEndpointVolumeEx* This,FLOAT *fLevelDB) {
    793     return This->lpVtbl->GetMasterVolumeLevel(This,fLevelDB);
    794 }
    795 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_GetMasterVolumeLevelScalar(IAudioEndpointVolumeEx* This,FLOAT *fLevel) {
    796     return This->lpVtbl->GetMasterVolumeLevelScalar(This,fLevel);
    797 }
    798 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_SetChannelVolumeLevel(IAudioEndpointVolumeEx* This,UINT nChannel,FLOAT fLevelDB,LPCGUID pguidEventContext) {
    799     return This->lpVtbl->SetChannelVolumeLevel(This,nChannel,fLevelDB,pguidEventContext);
    800 }
    801 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_SetChannelVolumeLevelScalar(IAudioEndpointVolumeEx* This,UINT nChannel,FLOAT fLevel,LPCGUID pguidEventContext) {
    802     return This->lpVtbl->SetChannelVolumeLevelScalar(This,nChannel,fLevel,pguidEventContext);
    803 }
    804 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_GetChannelVolumeLevel(IAudioEndpointVolumeEx* This,UINT nChannel,FLOAT *fLevelDB) {
    805     return This->lpVtbl->GetChannelVolumeLevel(This,nChannel,fLevelDB);
    806 }
    807 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_GetChannelVolumeLevelScalar(IAudioEndpointVolumeEx* This,UINT nChannel,FLOAT *fLevel) {
    808     return This->lpVtbl->GetChannelVolumeLevelScalar(This,nChannel,fLevel);
    809 }
    810 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_SetMute(IAudioEndpointVolumeEx* This,WINBOOL bMute,LPCGUID pguidEventContext) {
    811     return This->lpVtbl->SetMute(This,bMute,pguidEventContext);
    812 }
    813 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_GetMute(IAudioEndpointVolumeEx* This,WINBOOL *bMute) {
    814     return This->lpVtbl->GetMute(This,bMute);
    815 }
    816 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_GetVolumeStepInfo(IAudioEndpointVolumeEx* This,UINT *pnStep,UINT *pnStepCount) {
    817     return This->lpVtbl->GetVolumeStepInfo(This,pnStep,pnStepCount);
    818 }
    819 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_VolumeStepUp(IAudioEndpointVolumeEx* This,LPCGUID pguidEventContext) {
    820     return This->lpVtbl->VolumeStepUp(This,pguidEventContext);
    821 }
    822 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_VolumeStepDown(IAudioEndpointVolumeEx* This,LPCGUID pguidEventContext) {
    823     return This->lpVtbl->VolumeStepDown(This,pguidEventContext);
    824 }
    825 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_QueryHardwareSupport(IAudioEndpointVolumeEx* This,DWORD *pdwHardwareSupportMask) {
    826     return This->lpVtbl->QueryHardwareSupport(This,pdwHardwareSupportMask);
    827 }
    828 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_GetVolumeRange(IAudioEndpointVolumeEx* This,FLOAT *pflVolumeMindB,FLOAT *pflVolumeMaxdB,FLOAT *pflVolumeIncrementdB) {
    829     return This->lpVtbl->GetVolumeRange(This,pflVolumeMindB,pflVolumeMaxdB,pflVolumeIncrementdB);
    830 }
    831 /*** IAudioEndpointVolumeEx methods ***/
    832 static FORCEINLINE HRESULT IAudioEndpointVolumeEx_GetVolumeRangeChannel(IAudioEndpointVolumeEx* This,UINT iChannel,FLOAT *pflVolumeMindB,FLOAT *pflVolumeMaxdB,FLOAT *pflVolumeIncrementdB) {
    833     return This->lpVtbl->GetVolumeRangeChannel(This,iChannel,pflVolumeMindB,pflVolumeMaxdB,pflVolumeIncrementdB);
    834 }
    835 #endif
    836 #endif
    837 
    838 #endif
    839 
    840 HRESULT STDMETHODCALLTYPE IAudioEndpointVolumeEx_GetVolumeRangeChannel_Proxy(
    841     IAudioEndpointVolumeEx* This,
    842     UINT iChannel,
    843     FLOAT *pflVolumeMindB,
    844     FLOAT *pflVolumeMaxdB,
    845     FLOAT *pflVolumeIncrementdB);
    846 void __RPC_STUB IAudioEndpointVolumeEx_GetVolumeRangeChannel_Stub(
    847     IRpcStubBuffer* This,
    848     IRpcChannelBuffer* pRpcChannelBuffer,
    849     PRPC_MESSAGE pRpcMessage,
    850     DWORD* pdwStubPhase);
    851 
    852 #endif  /* __IAudioEndpointVolumeEx_INTERFACE_DEFINED__ */
    853 
    854 /* Begin additional prototypes for all interfaces */
    855 
    856 
    857 /* End additional prototypes */
    858 
    859 #ifdef __cplusplus
    860 }
    861 #endif
    862 
    863 #endif /* __endpointvolume_h__ */
    864