Home | History | Annotate | Download | only in include
      1 /*** Autogenerated by WIDL 1.6 from include/audioclient.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 __audioclient_h__
     16 #define __audioclient_h__
     17 
     18 /* Forward declarations */
     19 
     20 #ifndef __IAudioClient_FWD_DEFINED__
     21 #define __IAudioClient_FWD_DEFINED__
     22 typedef interface IAudioClient IAudioClient;
     23 #endif
     24 
     25 #ifndef __IAudioClient2_FWD_DEFINED__
     26 #define __IAudioClient2_FWD_DEFINED__
     27 typedef interface IAudioClient2 IAudioClient2;
     28 #endif
     29 
     30 #ifndef __IAudioRenderClient_FWD_DEFINED__
     31 #define __IAudioRenderClient_FWD_DEFINED__
     32 typedef interface IAudioRenderClient IAudioRenderClient;
     33 #endif
     34 
     35 #ifndef __IAudioCaptureClient_FWD_DEFINED__
     36 #define __IAudioCaptureClient_FWD_DEFINED__
     37 typedef interface IAudioCaptureClient IAudioCaptureClient;
     38 #endif
     39 
     40 #ifndef __IAudioClock_FWD_DEFINED__
     41 #define __IAudioClock_FWD_DEFINED__
     42 typedef interface IAudioClock IAudioClock;
     43 #endif
     44 
     45 #ifndef __IAudioClock2_FWD_DEFINED__
     46 #define __IAudioClock2_FWD_DEFINED__
     47 typedef interface IAudioClock2 IAudioClock2;
     48 #endif
     49 
     50 #ifndef __IAudioClockAdjustment_FWD_DEFINED__
     51 #define __IAudioClockAdjustment_FWD_DEFINED__
     52 typedef interface IAudioClockAdjustment IAudioClockAdjustment;
     53 #endif
     54 
     55 #ifndef __ISimpleAudioVolume_FWD_DEFINED__
     56 #define __ISimpleAudioVolume_FWD_DEFINED__
     57 typedef interface ISimpleAudioVolume ISimpleAudioVolume;
     58 #endif
     59 
     60 #ifndef __IAudioStreamVolume_FWD_DEFINED__
     61 #define __IAudioStreamVolume_FWD_DEFINED__
     62 typedef interface IAudioStreamVolume IAudioStreamVolume;
     63 #endif
     64 
     65 #ifndef __IChannelAudioVolume_FWD_DEFINED__
     66 #define __IChannelAudioVolume_FWD_DEFINED__
     67 typedef interface IChannelAudioVolume IChannelAudioVolume;
     68 #endif
     69 
     70 /* Headers for imported files */
     71 
     72 #include <wtypes.h>
     73 #include <unknwn.h>
     74 #include <audiosessiontypes.h>
     75 
     76 #ifdef __cplusplus
     77 extern "C" {
     78 #endif
     79 
     80 #include <winapifamily.h>
     81 
     82 
     83 #if 0
     84 typedef struct WAVEFORMATEX {
     85     WORD wFormatTag;
     86     WORD nChannels;
     87     DWORD nSamplesPerSec;
     88     DWORD nAvgBytesPerSec;
     89     WORD nBlockAlign;
     90     WORD wBitsPerSample;
     91     WORD cbSize;
     92 } WAVEFORMATEX;
     93 
     94 typedef LONGLONG REFERENCE_TIME;
     95 #else
     96 #define _IKsControl_
     97 
     98 #include <mmreg.h>
     99 #include <ks.h>
    100 #include <ksmedia.h>
    101 #endif
    102 
    103 
    104 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
    105 enum _AUDCLNT_BUFFERFLAGS {
    106     AUDCLNT_BUFFERFLAGS_DATA_DISCONTINUITY = 0x1,
    107     AUDCLNT_BUFFERFLAGS_SILENT = 0x2,
    108     AUDCLNT_BUFFERFLAGS_TIMESTAMP_ERROR = 0x4
    109 };
    110 
    111 
    112 typedef struct AudioClientProperties {
    113     UINT32 cbSize;
    114     WINBOOL bIsOffload;
    115     AUDIO_STREAM_CATEGORY eCategory;
    116 } AudioClientProperties;
    117 
    118 /*****************************************************************************
    119  * IAudioClient interface
    120  */
    121 #ifndef __IAudioClient_INTERFACE_DEFINED__
    122 #define __IAudioClient_INTERFACE_DEFINED__
    123 
    124 DEFINE_GUID(IID_IAudioClient, 0x1cb9ad4c, 0xdbfa, 0x4c32, 0xb1,0x78, 0xc2,0xf5,0x68,0xa7,0x03,0xb2);
    125 #if defined(__cplusplus) && !defined(CINTERFACE)
    126 MIDL_INTERFACE("1cb9ad4c-dbfa-4c32-b178-c2f568a703b2")
    127 IAudioClient : public IUnknown
    128 {
    129     virtual HRESULT STDMETHODCALLTYPE Initialize(
    130         AUDCLNT_SHAREMODE ShareMode,
    131         DWORD StreamFlags,
    132         REFERENCE_TIME hnsBufferDuration,
    133         REFERENCE_TIME hnsPeriodicity,
    134         const WAVEFORMATEX *pFormat,
    135         LPCGUID AudioSessionGuid) = 0;
    136 
    137     virtual HRESULT STDMETHODCALLTYPE GetBufferSize(
    138         UINT32 *pNumBufferFrames) = 0;
    139 
    140     virtual HRESULT STDMETHODCALLTYPE GetStreamLatency(
    141         REFERENCE_TIME *phnsLatency) = 0;
    142 
    143     virtual HRESULT STDMETHODCALLTYPE GetCurrentPadding(
    144         UINT32 *pNumPaddingFrames) = 0;
    145 
    146     virtual HRESULT STDMETHODCALLTYPE IsFormatSupported(
    147         AUDCLNT_SHAREMODE ShareMode,
    148         const WAVEFORMATEX *pFormat,
    149         WAVEFORMATEX **ppClosestMatch) = 0;
    150 
    151     virtual HRESULT STDMETHODCALLTYPE GetMixFormat(
    152         WAVEFORMATEX **ppDeviceFormat) = 0;
    153 
    154     virtual HRESULT STDMETHODCALLTYPE GetDevicePeriod(
    155         REFERENCE_TIME *phnsDefaultDevicePeriod,
    156         REFERENCE_TIME *phnsMinimumDevicePeriod) = 0;
    157 
    158     virtual HRESULT STDMETHODCALLTYPE Start(
    159         ) = 0;
    160 
    161     virtual HRESULT STDMETHODCALLTYPE Stop(
    162         ) = 0;
    163 
    164     virtual HRESULT STDMETHODCALLTYPE Reset(
    165         ) = 0;
    166 
    167     virtual HRESULT STDMETHODCALLTYPE SetEventHandle(
    168         HANDLE eventHandle) = 0;
    169 
    170     virtual HRESULT STDMETHODCALLTYPE GetService(
    171         REFIID riid,
    172         void **ppv) = 0;
    173 
    174 };
    175 #ifdef __CRT_UUID_DECL
    176 __CRT_UUID_DECL(IAudioClient, 0x1cb9ad4c, 0xdbfa, 0x4c32, 0xb1,0x78, 0xc2,0xf5,0x68,0xa7,0x03,0xb2)
    177 #endif
    178 #else
    179 typedef struct IAudioClientVtbl {
    180     BEGIN_INTERFACE
    181 
    182     /*** IUnknown methods ***/
    183     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    184         IAudioClient* This,
    185         REFIID riid,
    186         void **ppvObject);
    187 
    188     ULONG (STDMETHODCALLTYPE *AddRef)(
    189         IAudioClient* This);
    190 
    191     ULONG (STDMETHODCALLTYPE *Release)(
    192         IAudioClient* This);
    193 
    194     /*** IAudioClient methods ***/
    195     HRESULT (STDMETHODCALLTYPE *Initialize)(
    196         IAudioClient* This,
    197         AUDCLNT_SHAREMODE ShareMode,
    198         DWORD StreamFlags,
    199         REFERENCE_TIME hnsBufferDuration,
    200         REFERENCE_TIME hnsPeriodicity,
    201         const WAVEFORMATEX *pFormat,
    202         LPCGUID AudioSessionGuid);
    203 
    204     HRESULT (STDMETHODCALLTYPE *GetBufferSize)(
    205         IAudioClient* This,
    206         UINT32 *pNumBufferFrames);
    207 
    208     HRESULT (STDMETHODCALLTYPE *GetStreamLatency)(
    209         IAudioClient* This,
    210         REFERENCE_TIME *phnsLatency);
    211 
    212     HRESULT (STDMETHODCALLTYPE *GetCurrentPadding)(
    213         IAudioClient* This,
    214         UINT32 *pNumPaddingFrames);
    215 
    216     HRESULT (STDMETHODCALLTYPE *IsFormatSupported)(
    217         IAudioClient* This,
    218         AUDCLNT_SHAREMODE ShareMode,
    219         const WAVEFORMATEX *pFormat,
    220         WAVEFORMATEX **ppClosestMatch);
    221 
    222     HRESULT (STDMETHODCALLTYPE *GetMixFormat)(
    223         IAudioClient* This,
    224         WAVEFORMATEX **ppDeviceFormat);
    225 
    226     HRESULT (STDMETHODCALLTYPE *GetDevicePeriod)(
    227         IAudioClient* This,
    228         REFERENCE_TIME *phnsDefaultDevicePeriod,
    229         REFERENCE_TIME *phnsMinimumDevicePeriod);
    230 
    231     HRESULT (STDMETHODCALLTYPE *Start)(
    232         IAudioClient* This);
    233 
    234     HRESULT (STDMETHODCALLTYPE *Stop)(
    235         IAudioClient* This);
    236 
    237     HRESULT (STDMETHODCALLTYPE *Reset)(
    238         IAudioClient* This);
    239 
    240     HRESULT (STDMETHODCALLTYPE *SetEventHandle)(
    241         IAudioClient* This,
    242         HANDLE eventHandle);
    243 
    244     HRESULT (STDMETHODCALLTYPE *GetService)(
    245         IAudioClient* This,
    246         REFIID riid,
    247         void **ppv);
    248 
    249     END_INTERFACE
    250 } IAudioClientVtbl;
    251 interface IAudioClient {
    252     CONST_VTBL IAudioClientVtbl* lpVtbl;
    253 };
    254 
    255 #ifdef COBJMACROS
    256 #ifndef WIDL_C_INLINE_WRAPPERS
    257 /*** IUnknown methods ***/
    258 #define IAudioClient_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    259 #define IAudioClient_AddRef(This) (This)->lpVtbl->AddRef(This)
    260 #define IAudioClient_Release(This) (This)->lpVtbl->Release(This)
    261 /*** IAudioClient methods ***/
    262 #define IAudioClient_Initialize(This,ShareMode,StreamFlags,hnsBufferDuration,hnsPeriodicity,pFormat,AudioSessionGuid) (This)->lpVtbl->Initialize(This,ShareMode,StreamFlags,hnsBufferDuration,hnsPeriodicity,pFormat,AudioSessionGuid)
    263 #define IAudioClient_GetBufferSize(This,pNumBufferFrames) (This)->lpVtbl->GetBufferSize(This,pNumBufferFrames)
    264 #define IAudioClient_GetStreamLatency(This,phnsLatency) (This)->lpVtbl->GetStreamLatency(This,phnsLatency)
    265 #define IAudioClient_GetCurrentPadding(This,pNumPaddingFrames) (This)->lpVtbl->GetCurrentPadding(This,pNumPaddingFrames)
    266 #define IAudioClient_IsFormatSupported(This,ShareMode,pFormat,ppClosestMatch) (This)->lpVtbl->IsFormatSupported(This,ShareMode,pFormat,ppClosestMatch)
    267 #define IAudioClient_GetMixFormat(This,ppDeviceFormat) (This)->lpVtbl->GetMixFormat(This,ppDeviceFormat)
    268 #define IAudioClient_GetDevicePeriod(This,phnsDefaultDevicePeriod,phnsMinimumDevicePeriod) (This)->lpVtbl->GetDevicePeriod(This,phnsDefaultDevicePeriod,phnsMinimumDevicePeriod)
    269 #define IAudioClient_Start(This) (This)->lpVtbl->Start(This)
    270 #define IAudioClient_Stop(This) (This)->lpVtbl->Stop(This)
    271 #define IAudioClient_Reset(This) (This)->lpVtbl->Reset(This)
    272 #define IAudioClient_SetEventHandle(This,eventHandle) (This)->lpVtbl->SetEventHandle(This,eventHandle)
    273 #define IAudioClient_GetService(This,riid,ppv) (This)->lpVtbl->GetService(This,riid,ppv)
    274 #else
    275 /*** IUnknown methods ***/
    276 static FORCEINLINE HRESULT IAudioClient_QueryInterface(IAudioClient* This,REFIID riid,void **ppvObject) {
    277     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    278 }
    279 static FORCEINLINE ULONG IAudioClient_AddRef(IAudioClient* This) {
    280     return This->lpVtbl->AddRef(This);
    281 }
    282 static FORCEINLINE ULONG IAudioClient_Release(IAudioClient* This) {
    283     return This->lpVtbl->Release(This);
    284 }
    285 /*** IAudioClient methods ***/
    286 static FORCEINLINE HRESULT IAudioClient_Initialize(IAudioClient* This,AUDCLNT_SHAREMODE ShareMode,DWORD StreamFlags,REFERENCE_TIME hnsBufferDuration,REFERENCE_TIME hnsPeriodicity,const WAVEFORMATEX *pFormat,LPCGUID AudioSessionGuid) {
    287     return This->lpVtbl->Initialize(This,ShareMode,StreamFlags,hnsBufferDuration,hnsPeriodicity,pFormat,AudioSessionGuid);
    288 }
    289 static FORCEINLINE HRESULT IAudioClient_GetBufferSize(IAudioClient* This,UINT32 *pNumBufferFrames) {
    290     return This->lpVtbl->GetBufferSize(This,pNumBufferFrames);
    291 }
    292 static FORCEINLINE HRESULT IAudioClient_GetStreamLatency(IAudioClient* This,REFERENCE_TIME *phnsLatency) {
    293     return This->lpVtbl->GetStreamLatency(This,phnsLatency);
    294 }
    295 static FORCEINLINE HRESULT IAudioClient_GetCurrentPadding(IAudioClient* This,UINT32 *pNumPaddingFrames) {
    296     return This->lpVtbl->GetCurrentPadding(This,pNumPaddingFrames);
    297 }
    298 static FORCEINLINE HRESULT IAudioClient_IsFormatSupported(IAudioClient* This,AUDCLNT_SHAREMODE ShareMode,const WAVEFORMATEX *pFormat,WAVEFORMATEX **ppClosestMatch) {
    299     return This->lpVtbl->IsFormatSupported(This,ShareMode,pFormat,ppClosestMatch);
    300 }
    301 static FORCEINLINE HRESULT IAudioClient_GetMixFormat(IAudioClient* This,WAVEFORMATEX **ppDeviceFormat) {
    302     return This->lpVtbl->GetMixFormat(This,ppDeviceFormat);
    303 }
    304 static FORCEINLINE HRESULT IAudioClient_GetDevicePeriod(IAudioClient* This,REFERENCE_TIME *phnsDefaultDevicePeriod,REFERENCE_TIME *phnsMinimumDevicePeriod) {
    305     return This->lpVtbl->GetDevicePeriod(This,phnsDefaultDevicePeriod,phnsMinimumDevicePeriod);
    306 }
    307 static FORCEINLINE HRESULT IAudioClient_Start(IAudioClient* This) {
    308     return This->lpVtbl->Start(This);
    309 }
    310 static FORCEINLINE HRESULT IAudioClient_Stop(IAudioClient* This) {
    311     return This->lpVtbl->Stop(This);
    312 }
    313 static FORCEINLINE HRESULT IAudioClient_Reset(IAudioClient* This) {
    314     return This->lpVtbl->Reset(This);
    315 }
    316 static FORCEINLINE HRESULT IAudioClient_SetEventHandle(IAudioClient* This,HANDLE eventHandle) {
    317     return This->lpVtbl->SetEventHandle(This,eventHandle);
    318 }
    319 static FORCEINLINE HRESULT IAudioClient_GetService(IAudioClient* This,REFIID riid,void **ppv) {
    320     return This->lpVtbl->GetService(This,riid,ppv);
    321 }
    322 #endif
    323 #endif
    324 
    325 #endif
    326 
    327 HRESULT STDMETHODCALLTYPE IAudioClient_Initialize_Proxy(
    328     IAudioClient* This,
    329     AUDCLNT_SHAREMODE ShareMode,
    330     DWORD StreamFlags,
    331     REFERENCE_TIME hnsBufferDuration,
    332     REFERENCE_TIME hnsPeriodicity,
    333     const WAVEFORMATEX *pFormat,
    334     LPCGUID AudioSessionGuid);
    335 void __RPC_STUB IAudioClient_Initialize_Stub(
    336     IRpcStubBuffer* This,
    337     IRpcChannelBuffer* pRpcChannelBuffer,
    338     PRPC_MESSAGE pRpcMessage,
    339     DWORD* pdwStubPhase);
    340 HRESULT STDMETHODCALLTYPE IAudioClient_GetBufferSize_Proxy(
    341     IAudioClient* This,
    342     UINT32 *pNumBufferFrames);
    343 void __RPC_STUB IAudioClient_GetBufferSize_Stub(
    344     IRpcStubBuffer* This,
    345     IRpcChannelBuffer* pRpcChannelBuffer,
    346     PRPC_MESSAGE pRpcMessage,
    347     DWORD* pdwStubPhase);
    348 HRESULT STDMETHODCALLTYPE IAudioClient_GetStreamLatency_Proxy(
    349     IAudioClient* This,
    350     REFERENCE_TIME *phnsLatency);
    351 void __RPC_STUB IAudioClient_GetStreamLatency_Stub(
    352     IRpcStubBuffer* This,
    353     IRpcChannelBuffer* pRpcChannelBuffer,
    354     PRPC_MESSAGE pRpcMessage,
    355     DWORD* pdwStubPhase);
    356 HRESULT STDMETHODCALLTYPE IAudioClient_GetCurrentPadding_Proxy(
    357     IAudioClient* This,
    358     UINT32 *pNumPaddingFrames);
    359 void __RPC_STUB IAudioClient_GetCurrentPadding_Stub(
    360     IRpcStubBuffer* This,
    361     IRpcChannelBuffer* pRpcChannelBuffer,
    362     PRPC_MESSAGE pRpcMessage,
    363     DWORD* pdwStubPhase);
    364 HRESULT STDMETHODCALLTYPE IAudioClient_IsFormatSupported_Proxy(
    365     IAudioClient* This,
    366     AUDCLNT_SHAREMODE ShareMode,
    367     const WAVEFORMATEX *pFormat,
    368     WAVEFORMATEX **ppClosestMatch);
    369 void __RPC_STUB IAudioClient_IsFormatSupported_Stub(
    370     IRpcStubBuffer* This,
    371     IRpcChannelBuffer* pRpcChannelBuffer,
    372     PRPC_MESSAGE pRpcMessage,
    373     DWORD* pdwStubPhase);
    374 HRESULT STDMETHODCALLTYPE IAudioClient_GetMixFormat_Proxy(
    375     IAudioClient* This,
    376     WAVEFORMATEX **ppDeviceFormat);
    377 void __RPC_STUB IAudioClient_GetMixFormat_Stub(
    378     IRpcStubBuffer* This,
    379     IRpcChannelBuffer* pRpcChannelBuffer,
    380     PRPC_MESSAGE pRpcMessage,
    381     DWORD* pdwStubPhase);
    382 HRESULT STDMETHODCALLTYPE IAudioClient_GetDevicePeriod_Proxy(
    383     IAudioClient* This,
    384     REFERENCE_TIME *phnsDefaultDevicePeriod,
    385     REFERENCE_TIME *phnsMinimumDevicePeriod);
    386 void __RPC_STUB IAudioClient_GetDevicePeriod_Stub(
    387     IRpcStubBuffer* This,
    388     IRpcChannelBuffer* pRpcChannelBuffer,
    389     PRPC_MESSAGE pRpcMessage,
    390     DWORD* pdwStubPhase);
    391 HRESULT STDMETHODCALLTYPE IAudioClient_Start_Proxy(
    392     IAudioClient* This);
    393 void __RPC_STUB IAudioClient_Start_Stub(
    394     IRpcStubBuffer* This,
    395     IRpcChannelBuffer* pRpcChannelBuffer,
    396     PRPC_MESSAGE pRpcMessage,
    397     DWORD* pdwStubPhase);
    398 HRESULT STDMETHODCALLTYPE IAudioClient_Stop_Proxy(
    399     IAudioClient* This);
    400 void __RPC_STUB IAudioClient_Stop_Stub(
    401     IRpcStubBuffer* This,
    402     IRpcChannelBuffer* pRpcChannelBuffer,
    403     PRPC_MESSAGE pRpcMessage,
    404     DWORD* pdwStubPhase);
    405 HRESULT STDMETHODCALLTYPE IAudioClient_Reset_Proxy(
    406     IAudioClient* This);
    407 void __RPC_STUB IAudioClient_Reset_Stub(
    408     IRpcStubBuffer* This,
    409     IRpcChannelBuffer* pRpcChannelBuffer,
    410     PRPC_MESSAGE pRpcMessage,
    411     DWORD* pdwStubPhase);
    412 HRESULT STDMETHODCALLTYPE IAudioClient_SetEventHandle_Proxy(
    413     IAudioClient* This,
    414     HANDLE eventHandle);
    415 void __RPC_STUB IAudioClient_SetEventHandle_Stub(
    416     IRpcStubBuffer* This,
    417     IRpcChannelBuffer* pRpcChannelBuffer,
    418     PRPC_MESSAGE pRpcMessage,
    419     DWORD* pdwStubPhase);
    420 HRESULT STDMETHODCALLTYPE IAudioClient_GetService_Proxy(
    421     IAudioClient* This,
    422     REFIID riid,
    423     void **ppv);
    424 void __RPC_STUB IAudioClient_GetService_Stub(
    425     IRpcStubBuffer* This,
    426     IRpcChannelBuffer* pRpcChannelBuffer,
    427     PRPC_MESSAGE pRpcMessage,
    428     DWORD* pdwStubPhase);
    429 
    430 #endif  /* __IAudioClient_INTERFACE_DEFINED__ */
    431 
    432 
    433 /*****************************************************************************
    434  * IAudioClient2 interface
    435  */
    436 #ifndef __IAudioClient2_INTERFACE_DEFINED__
    437 #define __IAudioClient2_INTERFACE_DEFINED__
    438 
    439 DEFINE_GUID(IID_IAudioClient2, 0x726778cd, 0xf60a, 0x4eda, 0x82,0xde, 0xe4,0x76,0x10,0xcd,0x78,0xaa);
    440 #if defined(__cplusplus) && !defined(CINTERFACE)
    441 MIDL_INTERFACE("726778cd-f60a-4eda-82de-e47610cd78aa")
    442 IAudioClient2 : public IAudioClient
    443 {
    444     virtual HRESULT STDMETHODCALLTYPE IsOffloadCapable(
    445         AUDIO_STREAM_CATEGORY Category,
    446         WINBOOL *pbOffloadCapable) = 0;
    447 
    448     virtual HRESULT STDMETHODCALLTYPE SetClientProperties(
    449         const AudioClientProperties *pProperties) = 0;
    450 
    451     virtual HRESULT STDMETHODCALLTYPE GetBufferSizeLimits(
    452         const WAVEFORMATEX *pFormat,
    453         WINBOOL bEventDriven,
    454         REFERENCE_TIME *phnsMinBufferDuration,
    455         REFERENCE_TIME *phnsMaxBufferDuration) = 0;
    456 
    457 };
    458 #ifdef __CRT_UUID_DECL
    459 __CRT_UUID_DECL(IAudioClient2, 0x726778cd, 0xf60a, 0x4eda, 0x82,0xde, 0xe4,0x76,0x10,0xcd,0x78,0xaa)
    460 #endif
    461 #else
    462 typedef struct IAudioClient2Vtbl {
    463     BEGIN_INTERFACE
    464 
    465     /*** IUnknown methods ***/
    466     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    467         IAudioClient2* This,
    468         REFIID riid,
    469         void **ppvObject);
    470 
    471     ULONG (STDMETHODCALLTYPE *AddRef)(
    472         IAudioClient2* This);
    473 
    474     ULONG (STDMETHODCALLTYPE *Release)(
    475         IAudioClient2* This);
    476 
    477     /*** IAudioClient methods ***/
    478     HRESULT (STDMETHODCALLTYPE *Initialize)(
    479         IAudioClient2* This,
    480         AUDCLNT_SHAREMODE ShareMode,
    481         DWORD StreamFlags,
    482         REFERENCE_TIME hnsBufferDuration,
    483         REFERENCE_TIME hnsPeriodicity,
    484         const WAVEFORMATEX *pFormat,
    485         LPCGUID AudioSessionGuid);
    486 
    487     HRESULT (STDMETHODCALLTYPE *GetBufferSize)(
    488         IAudioClient2* This,
    489         UINT32 *pNumBufferFrames);
    490 
    491     HRESULT (STDMETHODCALLTYPE *GetStreamLatency)(
    492         IAudioClient2* This,
    493         REFERENCE_TIME *phnsLatency);
    494 
    495     HRESULT (STDMETHODCALLTYPE *GetCurrentPadding)(
    496         IAudioClient2* This,
    497         UINT32 *pNumPaddingFrames);
    498 
    499     HRESULT (STDMETHODCALLTYPE *IsFormatSupported)(
    500         IAudioClient2* This,
    501         AUDCLNT_SHAREMODE ShareMode,
    502         const WAVEFORMATEX *pFormat,
    503         WAVEFORMATEX **ppClosestMatch);
    504 
    505     HRESULT (STDMETHODCALLTYPE *GetMixFormat)(
    506         IAudioClient2* This,
    507         WAVEFORMATEX **ppDeviceFormat);
    508 
    509     HRESULT (STDMETHODCALLTYPE *GetDevicePeriod)(
    510         IAudioClient2* This,
    511         REFERENCE_TIME *phnsDefaultDevicePeriod,
    512         REFERENCE_TIME *phnsMinimumDevicePeriod);
    513 
    514     HRESULT (STDMETHODCALLTYPE *Start)(
    515         IAudioClient2* This);
    516 
    517     HRESULT (STDMETHODCALLTYPE *Stop)(
    518         IAudioClient2* This);
    519 
    520     HRESULT (STDMETHODCALLTYPE *Reset)(
    521         IAudioClient2* This);
    522 
    523     HRESULT (STDMETHODCALLTYPE *SetEventHandle)(
    524         IAudioClient2* This,
    525         HANDLE eventHandle);
    526 
    527     HRESULT (STDMETHODCALLTYPE *GetService)(
    528         IAudioClient2* This,
    529         REFIID riid,
    530         void **ppv);
    531 
    532     /*** IAudioClient2 methods ***/
    533     HRESULT (STDMETHODCALLTYPE *IsOffloadCapable)(
    534         IAudioClient2* This,
    535         AUDIO_STREAM_CATEGORY Category,
    536         WINBOOL *pbOffloadCapable);
    537 
    538     HRESULT (STDMETHODCALLTYPE *SetClientProperties)(
    539         IAudioClient2* This,
    540         const AudioClientProperties *pProperties);
    541 
    542     HRESULT (STDMETHODCALLTYPE *GetBufferSizeLimits)(
    543         IAudioClient2* This,
    544         const WAVEFORMATEX *pFormat,
    545         WINBOOL bEventDriven,
    546         REFERENCE_TIME *phnsMinBufferDuration,
    547         REFERENCE_TIME *phnsMaxBufferDuration);
    548 
    549     END_INTERFACE
    550 } IAudioClient2Vtbl;
    551 interface IAudioClient2 {
    552     CONST_VTBL IAudioClient2Vtbl* lpVtbl;
    553 };
    554 
    555 #ifdef COBJMACROS
    556 #ifndef WIDL_C_INLINE_WRAPPERS
    557 /*** IUnknown methods ***/
    558 #define IAudioClient2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    559 #define IAudioClient2_AddRef(This) (This)->lpVtbl->AddRef(This)
    560 #define IAudioClient2_Release(This) (This)->lpVtbl->Release(This)
    561 /*** IAudioClient methods ***/
    562 #define IAudioClient2_Initialize(This,ShareMode,StreamFlags,hnsBufferDuration,hnsPeriodicity,pFormat,AudioSessionGuid) (This)->lpVtbl->Initialize(This,ShareMode,StreamFlags,hnsBufferDuration,hnsPeriodicity,pFormat,AudioSessionGuid)
    563 #define IAudioClient2_GetBufferSize(This,pNumBufferFrames) (This)->lpVtbl->GetBufferSize(This,pNumBufferFrames)
    564 #define IAudioClient2_GetStreamLatency(This,phnsLatency) (This)->lpVtbl->GetStreamLatency(This,phnsLatency)
    565 #define IAudioClient2_GetCurrentPadding(This,pNumPaddingFrames) (This)->lpVtbl->GetCurrentPadding(This,pNumPaddingFrames)
    566 #define IAudioClient2_IsFormatSupported(This,ShareMode,pFormat,ppClosestMatch) (This)->lpVtbl->IsFormatSupported(This,ShareMode,pFormat,ppClosestMatch)
    567 #define IAudioClient2_GetMixFormat(This,ppDeviceFormat) (This)->lpVtbl->GetMixFormat(This,ppDeviceFormat)
    568 #define IAudioClient2_GetDevicePeriod(This,phnsDefaultDevicePeriod,phnsMinimumDevicePeriod) (This)->lpVtbl->GetDevicePeriod(This,phnsDefaultDevicePeriod,phnsMinimumDevicePeriod)
    569 #define IAudioClient2_Start(This) (This)->lpVtbl->Start(This)
    570 #define IAudioClient2_Stop(This) (This)->lpVtbl->Stop(This)
    571 #define IAudioClient2_Reset(This) (This)->lpVtbl->Reset(This)
    572 #define IAudioClient2_SetEventHandle(This,eventHandle) (This)->lpVtbl->SetEventHandle(This,eventHandle)
    573 #define IAudioClient2_GetService(This,riid,ppv) (This)->lpVtbl->GetService(This,riid,ppv)
    574 /*** IAudioClient2 methods ***/
    575 #define IAudioClient2_IsOffloadCapable(This,Category,pbOffloadCapable) (This)->lpVtbl->IsOffloadCapable(This,Category,pbOffloadCapable)
    576 #define IAudioClient2_SetClientProperties(This,pProperties) (This)->lpVtbl->SetClientProperties(This,pProperties)
    577 #define IAudioClient2_GetBufferSizeLimits(This,pFormat,bEventDriven,phnsMinBufferDuration,phnsMaxBufferDuration) (This)->lpVtbl->GetBufferSizeLimits(This,pFormat,bEventDriven,phnsMinBufferDuration,phnsMaxBufferDuration)
    578 #else
    579 /*** IUnknown methods ***/
    580 static FORCEINLINE HRESULT IAudioClient2_QueryInterface(IAudioClient2* This,REFIID riid,void **ppvObject) {
    581     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    582 }
    583 static FORCEINLINE ULONG IAudioClient2_AddRef(IAudioClient2* This) {
    584     return This->lpVtbl->AddRef(This);
    585 }
    586 static FORCEINLINE ULONG IAudioClient2_Release(IAudioClient2* This) {
    587     return This->lpVtbl->Release(This);
    588 }
    589 /*** IAudioClient methods ***/
    590 static FORCEINLINE HRESULT IAudioClient2_Initialize(IAudioClient2* This,AUDCLNT_SHAREMODE ShareMode,DWORD StreamFlags,REFERENCE_TIME hnsBufferDuration,REFERENCE_TIME hnsPeriodicity,const WAVEFORMATEX *pFormat,LPCGUID AudioSessionGuid) {
    591     return This->lpVtbl->Initialize(This,ShareMode,StreamFlags,hnsBufferDuration,hnsPeriodicity,pFormat,AudioSessionGuid);
    592 }
    593 static FORCEINLINE HRESULT IAudioClient2_GetBufferSize(IAudioClient2* This,UINT32 *pNumBufferFrames) {
    594     return This->lpVtbl->GetBufferSize(This,pNumBufferFrames);
    595 }
    596 static FORCEINLINE HRESULT IAudioClient2_GetStreamLatency(IAudioClient2* This,REFERENCE_TIME *phnsLatency) {
    597     return This->lpVtbl->GetStreamLatency(This,phnsLatency);
    598 }
    599 static FORCEINLINE HRESULT IAudioClient2_GetCurrentPadding(IAudioClient2* This,UINT32 *pNumPaddingFrames) {
    600     return This->lpVtbl->GetCurrentPadding(This,pNumPaddingFrames);
    601 }
    602 static FORCEINLINE HRESULT IAudioClient2_IsFormatSupported(IAudioClient2* This,AUDCLNT_SHAREMODE ShareMode,const WAVEFORMATEX *pFormat,WAVEFORMATEX **ppClosestMatch) {
    603     return This->lpVtbl->IsFormatSupported(This,ShareMode,pFormat,ppClosestMatch);
    604 }
    605 static FORCEINLINE HRESULT IAudioClient2_GetMixFormat(IAudioClient2* This,WAVEFORMATEX **ppDeviceFormat) {
    606     return This->lpVtbl->GetMixFormat(This,ppDeviceFormat);
    607 }
    608 static FORCEINLINE HRESULT IAudioClient2_GetDevicePeriod(IAudioClient2* This,REFERENCE_TIME *phnsDefaultDevicePeriod,REFERENCE_TIME *phnsMinimumDevicePeriod) {
    609     return This->lpVtbl->GetDevicePeriod(This,phnsDefaultDevicePeriod,phnsMinimumDevicePeriod);
    610 }
    611 static FORCEINLINE HRESULT IAudioClient2_Start(IAudioClient2* This) {
    612     return This->lpVtbl->Start(This);
    613 }
    614 static FORCEINLINE HRESULT IAudioClient2_Stop(IAudioClient2* This) {
    615     return This->lpVtbl->Stop(This);
    616 }
    617 static FORCEINLINE HRESULT IAudioClient2_Reset(IAudioClient2* This) {
    618     return This->lpVtbl->Reset(This);
    619 }
    620 static FORCEINLINE HRESULT IAudioClient2_SetEventHandle(IAudioClient2* This,HANDLE eventHandle) {
    621     return This->lpVtbl->SetEventHandle(This,eventHandle);
    622 }
    623 static FORCEINLINE HRESULT IAudioClient2_GetService(IAudioClient2* This,REFIID riid,void **ppv) {
    624     return This->lpVtbl->GetService(This,riid,ppv);
    625 }
    626 /*** IAudioClient2 methods ***/
    627 static FORCEINLINE HRESULT IAudioClient2_IsOffloadCapable(IAudioClient2* This,AUDIO_STREAM_CATEGORY Category,WINBOOL *pbOffloadCapable) {
    628     return This->lpVtbl->IsOffloadCapable(This,Category,pbOffloadCapable);
    629 }
    630 static FORCEINLINE HRESULT IAudioClient2_SetClientProperties(IAudioClient2* This,const AudioClientProperties *pProperties) {
    631     return This->lpVtbl->SetClientProperties(This,pProperties);
    632 }
    633 static FORCEINLINE HRESULT IAudioClient2_GetBufferSizeLimits(IAudioClient2* This,const WAVEFORMATEX *pFormat,WINBOOL bEventDriven,REFERENCE_TIME *phnsMinBufferDuration,REFERENCE_TIME *phnsMaxBufferDuration) {
    634     return This->lpVtbl->GetBufferSizeLimits(This,pFormat,bEventDriven,phnsMinBufferDuration,phnsMaxBufferDuration);
    635 }
    636 #endif
    637 #endif
    638 
    639 #endif
    640 
    641 HRESULT STDMETHODCALLTYPE IAudioClient2_IsOffloadCapable_Proxy(
    642     IAudioClient2* This,
    643     AUDIO_STREAM_CATEGORY Category,
    644     WINBOOL *pbOffloadCapable);
    645 void __RPC_STUB IAudioClient2_IsOffloadCapable_Stub(
    646     IRpcStubBuffer* This,
    647     IRpcChannelBuffer* pRpcChannelBuffer,
    648     PRPC_MESSAGE pRpcMessage,
    649     DWORD* pdwStubPhase);
    650 HRESULT STDMETHODCALLTYPE IAudioClient2_SetClientProperties_Proxy(
    651     IAudioClient2* This,
    652     const AudioClientProperties *pProperties);
    653 void __RPC_STUB IAudioClient2_SetClientProperties_Stub(
    654     IRpcStubBuffer* This,
    655     IRpcChannelBuffer* pRpcChannelBuffer,
    656     PRPC_MESSAGE pRpcMessage,
    657     DWORD* pdwStubPhase);
    658 HRESULT STDMETHODCALLTYPE IAudioClient2_GetBufferSizeLimits_Proxy(
    659     IAudioClient2* This,
    660     const WAVEFORMATEX *pFormat,
    661     WINBOOL bEventDriven,
    662     REFERENCE_TIME *phnsMinBufferDuration,
    663     REFERENCE_TIME *phnsMaxBufferDuration);
    664 void __RPC_STUB IAudioClient2_GetBufferSizeLimits_Stub(
    665     IRpcStubBuffer* This,
    666     IRpcChannelBuffer* pRpcChannelBuffer,
    667     PRPC_MESSAGE pRpcMessage,
    668     DWORD* pdwStubPhase);
    669 
    670 #endif  /* __IAudioClient2_INTERFACE_DEFINED__ */
    671 
    672 
    673 /*****************************************************************************
    674  * IAudioRenderClient interface
    675  */
    676 #ifndef __IAudioRenderClient_INTERFACE_DEFINED__
    677 #define __IAudioRenderClient_INTERFACE_DEFINED__
    678 
    679 DEFINE_GUID(IID_IAudioRenderClient, 0xf294acfc, 0x3146, 0x4483, 0xa7,0xbf, 0xad,0xdc,0xa7,0xc2,0x60,0xe2);
    680 #if defined(__cplusplus) && !defined(CINTERFACE)
    681 MIDL_INTERFACE("f294acfc-3146-4483-a7bf-addca7c260e2")
    682 IAudioRenderClient : public IUnknown
    683 {
    684     virtual HRESULT STDMETHODCALLTYPE GetBuffer(
    685         UINT32 NumFramesRequested,
    686         BYTE **ppData) = 0;
    687 
    688     virtual HRESULT STDMETHODCALLTYPE ReleaseBuffer(
    689         UINT32 NumFramesWritten,
    690         DWORD dwFlags) = 0;
    691 
    692 };
    693 #ifdef __CRT_UUID_DECL
    694 __CRT_UUID_DECL(IAudioRenderClient, 0xf294acfc, 0x3146, 0x4483, 0xa7,0xbf, 0xad,0xdc,0xa7,0xc2,0x60,0xe2)
    695 #endif
    696 #else
    697 typedef struct IAudioRenderClientVtbl {
    698     BEGIN_INTERFACE
    699 
    700     /*** IUnknown methods ***/
    701     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    702         IAudioRenderClient* This,
    703         REFIID riid,
    704         void **ppvObject);
    705 
    706     ULONG (STDMETHODCALLTYPE *AddRef)(
    707         IAudioRenderClient* This);
    708 
    709     ULONG (STDMETHODCALLTYPE *Release)(
    710         IAudioRenderClient* This);
    711 
    712     /*** IAudioRenderClient methods ***/
    713     HRESULT (STDMETHODCALLTYPE *GetBuffer)(
    714         IAudioRenderClient* This,
    715         UINT32 NumFramesRequested,
    716         BYTE **ppData);
    717 
    718     HRESULT (STDMETHODCALLTYPE *ReleaseBuffer)(
    719         IAudioRenderClient* This,
    720         UINT32 NumFramesWritten,
    721         DWORD dwFlags);
    722 
    723     END_INTERFACE
    724 } IAudioRenderClientVtbl;
    725 interface IAudioRenderClient {
    726     CONST_VTBL IAudioRenderClientVtbl* lpVtbl;
    727 };
    728 
    729 #ifdef COBJMACROS
    730 #ifndef WIDL_C_INLINE_WRAPPERS
    731 /*** IUnknown methods ***/
    732 #define IAudioRenderClient_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    733 #define IAudioRenderClient_AddRef(This) (This)->lpVtbl->AddRef(This)
    734 #define IAudioRenderClient_Release(This) (This)->lpVtbl->Release(This)
    735 /*** IAudioRenderClient methods ***/
    736 #define IAudioRenderClient_GetBuffer(This,NumFramesRequested,ppData) (This)->lpVtbl->GetBuffer(This,NumFramesRequested,ppData)
    737 #define IAudioRenderClient_ReleaseBuffer(This,NumFramesWritten,dwFlags) (This)->lpVtbl->ReleaseBuffer(This,NumFramesWritten,dwFlags)
    738 #else
    739 /*** IUnknown methods ***/
    740 static FORCEINLINE HRESULT IAudioRenderClient_QueryInterface(IAudioRenderClient* This,REFIID riid,void **ppvObject) {
    741     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    742 }
    743 static FORCEINLINE ULONG IAudioRenderClient_AddRef(IAudioRenderClient* This) {
    744     return This->lpVtbl->AddRef(This);
    745 }
    746 static FORCEINLINE ULONG IAudioRenderClient_Release(IAudioRenderClient* This) {
    747     return This->lpVtbl->Release(This);
    748 }
    749 /*** IAudioRenderClient methods ***/
    750 static FORCEINLINE HRESULT IAudioRenderClient_GetBuffer(IAudioRenderClient* This,UINT32 NumFramesRequested,BYTE **ppData) {
    751     return This->lpVtbl->GetBuffer(This,NumFramesRequested,ppData);
    752 }
    753 static FORCEINLINE HRESULT IAudioRenderClient_ReleaseBuffer(IAudioRenderClient* This,UINT32 NumFramesWritten,DWORD dwFlags) {
    754     return This->lpVtbl->ReleaseBuffer(This,NumFramesWritten,dwFlags);
    755 }
    756 #endif
    757 #endif
    758 
    759 #endif
    760 
    761 HRESULT STDMETHODCALLTYPE IAudioRenderClient_GetBuffer_Proxy(
    762     IAudioRenderClient* This,
    763     UINT32 NumFramesRequested,
    764     BYTE **ppData);
    765 void __RPC_STUB IAudioRenderClient_GetBuffer_Stub(
    766     IRpcStubBuffer* This,
    767     IRpcChannelBuffer* pRpcChannelBuffer,
    768     PRPC_MESSAGE pRpcMessage,
    769     DWORD* pdwStubPhase);
    770 HRESULT STDMETHODCALLTYPE IAudioRenderClient_ReleaseBuffer_Proxy(
    771     IAudioRenderClient* This,
    772     UINT32 NumFramesWritten,
    773     DWORD dwFlags);
    774 void __RPC_STUB IAudioRenderClient_ReleaseBuffer_Stub(
    775     IRpcStubBuffer* This,
    776     IRpcChannelBuffer* pRpcChannelBuffer,
    777     PRPC_MESSAGE pRpcMessage,
    778     DWORD* pdwStubPhase);
    779 
    780 #endif  /* __IAudioRenderClient_INTERFACE_DEFINED__ */
    781 
    782 
    783 /*****************************************************************************
    784  * IAudioCaptureClient interface
    785  */
    786 #ifndef __IAudioCaptureClient_INTERFACE_DEFINED__
    787 #define __IAudioCaptureClient_INTERFACE_DEFINED__
    788 
    789 DEFINE_GUID(IID_IAudioCaptureClient, 0xc8adbd64, 0xe71e, 0x48a0, 0xa4,0xde, 0x18,0x5c,0x39,0x5c,0xd3,0x17);
    790 #if defined(__cplusplus) && !defined(CINTERFACE)
    791 MIDL_INTERFACE("c8adbd64-e71e-48a0-a4de-185c395cd317")
    792 IAudioCaptureClient : public IUnknown
    793 {
    794     virtual HRESULT STDMETHODCALLTYPE GetBuffer(
    795         BYTE **ppData,
    796         UINT32 *pNumFramesToRead,
    797         DWORD *pdwFlags,
    798         UINT64 *pu64DevicePosition,
    799         UINT64 *pu64QPCPosition) = 0;
    800 
    801     virtual HRESULT STDMETHODCALLTYPE ReleaseBuffer(
    802         UINT32 NumFramesRead) = 0;
    803 
    804     virtual HRESULT STDMETHODCALLTYPE GetNextPacketSize(
    805         UINT32 *pNumFramesInNextPacket) = 0;
    806 
    807 };
    808 #ifdef __CRT_UUID_DECL
    809 __CRT_UUID_DECL(IAudioCaptureClient, 0xc8adbd64, 0xe71e, 0x48a0, 0xa4,0xde, 0x18,0x5c,0x39,0x5c,0xd3,0x17)
    810 #endif
    811 #else
    812 typedef struct IAudioCaptureClientVtbl {
    813     BEGIN_INTERFACE
    814 
    815     /*** IUnknown methods ***/
    816     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    817         IAudioCaptureClient* This,
    818         REFIID riid,
    819         void **ppvObject);
    820 
    821     ULONG (STDMETHODCALLTYPE *AddRef)(
    822         IAudioCaptureClient* This);
    823 
    824     ULONG (STDMETHODCALLTYPE *Release)(
    825         IAudioCaptureClient* This);
    826 
    827     /*** IAudioCaptureClient methods ***/
    828     HRESULT (STDMETHODCALLTYPE *GetBuffer)(
    829         IAudioCaptureClient* This,
    830         BYTE **ppData,
    831         UINT32 *pNumFramesToRead,
    832         DWORD *pdwFlags,
    833         UINT64 *pu64DevicePosition,
    834         UINT64 *pu64QPCPosition);
    835 
    836     HRESULT (STDMETHODCALLTYPE *ReleaseBuffer)(
    837         IAudioCaptureClient* This,
    838         UINT32 NumFramesRead);
    839 
    840     HRESULT (STDMETHODCALLTYPE *GetNextPacketSize)(
    841         IAudioCaptureClient* This,
    842         UINT32 *pNumFramesInNextPacket);
    843 
    844     END_INTERFACE
    845 } IAudioCaptureClientVtbl;
    846 interface IAudioCaptureClient {
    847     CONST_VTBL IAudioCaptureClientVtbl* lpVtbl;
    848 };
    849 
    850 #ifdef COBJMACROS
    851 #ifndef WIDL_C_INLINE_WRAPPERS
    852 /*** IUnknown methods ***/
    853 #define IAudioCaptureClient_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    854 #define IAudioCaptureClient_AddRef(This) (This)->lpVtbl->AddRef(This)
    855 #define IAudioCaptureClient_Release(This) (This)->lpVtbl->Release(This)
    856 /*** IAudioCaptureClient methods ***/
    857 #define IAudioCaptureClient_GetBuffer(This,ppData,pNumFramesToRead,pdwFlags,pu64DevicePosition,pu64QPCPosition) (This)->lpVtbl->GetBuffer(This,ppData,pNumFramesToRead,pdwFlags,pu64DevicePosition,pu64QPCPosition)
    858 #define IAudioCaptureClient_ReleaseBuffer(This,NumFramesRead) (This)->lpVtbl->ReleaseBuffer(This,NumFramesRead)
    859 #define IAudioCaptureClient_GetNextPacketSize(This,pNumFramesInNextPacket) (This)->lpVtbl->GetNextPacketSize(This,pNumFramesInNextPacket)
    860 #else
    861 /*** IUnknown methods ***/
    862 static FORCEINLINE HRESULT IAudioCaptureClient_QueryInterface(IAudioCaptureClient* This,REFIID riid,void **ppvObject) {
    863     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    864 }
    865 static FORCEINLINE ULONG IAudioCaptureClient_AddRef(IAudioCaptureClient* This) {
    866     return This->lpVtbl->AddRef(This);
    867 }
    868 static FORCEINLINE ULONG IAudioCaptureClient_Release(IAudioCaptureClient* This) {
    869     return This->lpVtbl->Release(This);
    870 }
    871 /*** IAudioCaptureClient methods ***/
    872 static FORCEINLINE HRESULT IAudioCaptureClient_GetBuffer(IAudioCaptureClient* This,BYTE **ppData,UINT32 *pNumFramesToRead,DWORD *pdwFlags,UINT64 *pu64DevicePosition,UINT64 *pu64QPCPosition) {
    873     return This->lpVtbl->GetBuffer(This,ppData,pNumFramesToRead,pdwFlags,pu64DevicePosition,pu64QPCPosition);
    874 }
    875 static FORCEINLINE HRESULT IAudioCaptureClient_ReleaseBuffer(IAudioCaptureClient* This,UINT32 NumFramesRead) {
    876     return This->lpVtbl->ReleaseBuffer(This,NumFramesRead);
    877 }
    878 static FORCEINLINE HRESULT IAudioCaptureClient_GetNextPacketSize(IAudioCaptureClient* This,UINT32 *pNumFramesInNextPacket) {
    879     return This->lpVtbl->GetNextPacketSize(This,pNumFramesInNextPacket);
    880 }
    881 #endif
    882 #endif
    883 
    884 #endif
    885 
    886 HRESULT STDMETHODCALLTYPE IAudioCaptureClient_GetBuffer_Proxy(
    887     IAudioCaptureClient* This,
    888     BYTE **ppData,
    889     UINT32 *pNumFramesToRead,
    890     DWORD *pdwFlags,
    891     UINT64 *pu64DevicePosition,
    892     UINT64 *pu64QPCPosition);
    893 void __RPC_STUB IAudioCaptureClient_GetBuffer_Stub(
    894     IRpcStubBuffer* This,
    895     IRpcChannelBuffer* pRpcChannelBuffer,
    896     PRPC_MESSAGE pRpcMessage,
    897     DWORD* pdwStubPhase);
    898 HRESULT STDMETHODCALLTYPE IAudioCaptureClient_ReleaseBuffer_Proxy(
    899     IAudioCaptureClient* This,
    900     UINT32 NumFramesRead);
    901 void __RPC_STUB IAudioCaptureClient_ReleaseBuffer_Stub(
    902     IRpcStubBuffer* This,
    903     IRpcChannelBuffer* pRpcChannelBuffer,
    904     PRPC_MESSAGE pRpcMessage,
    905     DWORD* pdwStubPhase);
    906 HRESULT STDMETHODCALLTYPE IAudioCaptureClient_GetNextPacketSize_Proxy(
    907     IAudioCaptureClient* This,
    908     UINT32 *pNumFramesInNextPacket);
    909 void __RPC_STUB IAudioCaptureClient_GetNextPacketSize_Stub(
    910     IRpcStubBuffer* This,
    911     IRpcChannelBuffer* pRpcChannelBuffer,
    912     PRPC_MESSAGE pRpcMessage,
    913     DWORD* pdwStubPhase);
    914 
    915 #endif  /* __IAudioCaptureClient_INTERFACE_DEFINED__ */
    916 
    917 
    918 #define AUDIOCLOCK_CHARACTERISTIC_FIXED_FREQ  0x1
    919 
    920 /*****************************************************************************
    921  * IAudioClock interface
    922  */
    923 #ifndef __IAudioClock_INTERFACE_DEFINED__
    924 #define __IAudioClock_INTERFACE_DEFINED__
    925 
    926 DEFINE_GUID(IID_IAudioClock, 0xcd63314f, 0x3fba, 0x4a1b, 0x81,0x2c, 0xef,0x96,0x35,0x87,0x28,0xe7);
    927 #if defined(__cplusplus) && !defined(CINTERFACE)
    928 MIDL_INTERFACE("cd63314f-3fba-4a1b-812c-ef96358728e7")
    929 IAudioClock : public IUnknown
    930 {
    931     virtual HRESULT STDMETHODCALLTYPE GetFrequency(
    932         UINT64 *pu64Frequency) = 0;
    933 
    934     virtual HRESULT STDMETHODCALLTYPE GetPosition(
    935         UINT64 *pu64Position,
    936         UINT64 *pu64QPCPosition) = 0;
    937 
    938     virtual HRESULT STDMETHODCALLTYPE GetCharacteristics(
    939         DWORD *pdwCharacteristics) = 0;
    940 
    941 };
    942 #ifdef __CRT_UUID_DECL
    943 __CRT_UUID_DECL(IAudioClock, 0xcd63314f, 0x3fba, 0x4a1b, 0x81,0x2c, 0xef,0x96,0x35,0x87,0x28,0xe7)
    944 #endif
    945 #else
    946 typedef struct IAudioClockVtbl {
    947     BEGIN_INTERFACE
    948 
    949     /*** IUnknown methods ***/
    950     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    951         IAudioClock* This,
    952         REFIID riid,
    953         void **ppvObject);
    954 
    955     ULONG (STDMETHODCALLTYPE *AddRef)(
    956         IAudioClock* This);
    957 
    958     ULONG (STDMETHODCALLTYPE *Release)(
    959         IAudioClock* This);
    960 
    961     /*** IAudioClock methods ***/
    962     HRESULT (STDMETHODCALLTYPE *GetFrequency)(
    963         IAudioClock* This,
    964         UINT64 *pu64Frequency);
    965 
    966     HRESULT (STDMETHODCALLTYPE *GetPosition)(
    967         IAudioClock* This,
    968         UINT64 *pu64Position,
    969         UINT64 *pu64QPCPosition);
    970 
    971     HRESULT (STDMETHODCALLTYPE *GetCharacteristics)(
    972         IAudioClock* This,
    973         DWORD *pdwCharacteristics);
    974 
    975     END_INTERFACE
    976 } IAudioClockVtbl;
    977 interface IAudioClock {
    978     CONST_VTBL IAudioClockVtbl* lpVtbl;
    979 };
    980 
    981 #ifdef COBJMACROS
    982 #ifndef WIDL_C_INLINE_WRAPPERS
    983 /*** IUnknown methods ***/
    984 #define IAudioClock_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    985 #define IAudioClock_AddRef(This) (This)->lpVtbl->AddRef(This)
    986 #define IAudioClock_Release(This) (This)->lpVtbl->Release(This)
    987 /*** IAudioClock methods ***/
    988 #define IAudioClock_GetFrequency(This,pu64Frequency) (This)->lpVtbl->GetFrequency(This,pu64Frequency)
    989 #define IAudioClock_GetPosition(This,pu64Position,pu64QPCPosition) (This)->lpVtbl->GetPosition(This,pu64Position,pu64QPCPosition)
    990 #define IAudioClock_GetCharacteristics(This,pdwCharacteristics) (This)->lpVtbl->GetCharacteristics(This,pdwCharacteristics)
    991 #else
    992 /*** IUnknown methods ***/
    993 static FORCEINLINE HRESULT IAudioClock_QueryInterface(IAudioClock* This,REFIID riid,void **ppvObject) {
    994     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    995 }
    996 static FORCEINLINE ULONG IAudioClock_AddRef(IAudioClock* This) {
    997     return This->lpVtbl->AddRef(This);
    998 }
    999 static FORCEINLINE ULONG IAudioClock_Release(IAudioClock* This) {
   1000     return This->lpVtbl->Release(This);
   1001 }
   1002 /*** IAudioClock methods ***/
   1003 static FORCEINLINE HRESULT IAudioClock_GetFrequency(IAudioClock* This,UINT64 *pu64Frequency) {
   1004     return This->lpVtbl->GetFrequency(This,pu64Frequency);
   1005 }
   1006 static FORCEINLINE HRESULT IAudioClock_GetPosition(IAudioClock* This,UINT64 *pu64Position,UINT64 *pu64QPCPosition) {
   1007     return This->lpVtbl->GetPosition(This,pu64Position,pu64QPCPosition);
   1008 }
   1009 static FORCEINLINE HRESULT IAudioClock_GetCharacteristics(IAudioClock* This,DWORD *pdwCharacteristics) {
   1010     return This->lpVtbl->GetCharacteristics(This,pdwCharacteristics);
   1011 }
   1012 #endif
   1013 #endif
   1014 
   1015 #endif
   1016 
   1017 HRESULT STDMETHODCALLTYPE IAudioClock_GetFrequency_Proxy(
   1018     IAudioClock* This,
   1019     UINT64 *pu64Frequency);
   1020 void __RPC_STUB IAudioClock_GetFrequency_Stub(
   1021     IRpcStubBuffer* This,
   1022     IRpcChannelBuffer* pRpcChannelBuffer,
   1023     PRPC_MESSAGE pRpcMessage,
   1024     DWORD* pdwStubPhase);
   1025 HRESULT STDMETHODCALLTYPE IAudioClock_GetPosition_Proxy(
   1026     IAudioClock* This,
   1027     UINT64 *pu64Position,
   1028     UINT64 *pu64QPCPosition);
   1029 void __RPC_STUB IAudioClock_GetPosition_Stub(
   1030     IRpcStubBuffer* This,
   1031     IRpcChannelBuffer* pRpcChannelBuffer,
   1032     PRPC_MESSAGE pRpcMessage,
   1033     DWORD* pdwStubPhase);
   1034 HRESULT STDMETHODCALLTYPE IAudioClock_GetCharacteristics_Proxy(
   1035     IAudioClock* This,
   1036     DWORD *pdwCharacteristics);
   1037 void __RPC_STUB IAudioClock_GetCharacteristics_Stub(
   1038     IRpcStubBuffer* This,
   1039     IRpcChannelBuffer* pRpcChannelBuffer,
   1040     PRPC_MESSAGE pRpcMessage,
   1041     DWORD* pdwStubPhase);
   1042 
   1043 #endif  /* __IAudioClock_INTERFACE_DEFINED__ */
   1044 
   1045 #endif
   1046 
   1047 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
   1048 /*****************************************************************************
   1049  * IAudioClock2 interface
   1050  */
   1051 #ifndef __IAudioClock2_INTERFACE_DEFINED__
   1052 #define __IAudioClock2_INTERFACE_DEFINED__
   1053 
   1054 DEFINE_GUID(IID_IAudioClock2, 0x6f49ff73, 0x6727, 0x49ac, 0xa0,0x08, 0xd9,0x8c,0xf5,0xe7,0x00,0x48);
   1055 #if defined(__cplusplus) && !defined(CINTERFACE)
   1056 MIDL_INTERFACE("6f49ff73-6727-49ac-a008-d98cf5e70048")
   1057 IAudioClock2 : public IUnknown
   1058 {
   1059     virtual HRESULT STDMETHODCALLTYPE GetDevicePosition(
   1060         UINT64 *DevicePosition,
   1061         UINT64 *QPCPosition) = 0;
   1062 
   1063 };
   1064 #ifdef __CRT_UUID_DECL
   1065 __CRT_UUID_DECL(IAudioClock2, 0x6f49ff73, 0x6727, 0x49ac, 0xa0,0x08, 0xd9,0x8c,0xf5,0xe7,0x00,0x48)
   1066 #endif
   1067 #else
   1068 typedef struct IAudioClock2Vtbl {
   1069     BEGIN_INTERFACE
   1070 
   1071     /*** IUnknown methods ***/
   1072     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1073         IAudioClock2* This,
   1074         REFIID riid,
   1075         void **ppvObject);
   1076 
   1077     ULONG (STDMETHODCALLTYPE *AddRef)(
   1078         IAudioClock2* This);
   1079 
   1080     ULONG (STDMETHODCALLTYPE *Release)(
   1081         IAudioClock2* This);
   1082 
   1083     /*** IAudioClock2 methods ***/
   1084     HRESULT (STDMETHODCALLTYPE *GetDevicePosition)(
   1085         IAudioClock2* This,
   1086         UINT64 *DevicePosition,
   1087         UINT64 *QPCPosition);
   1088 
   1089     END_INTERFACE
   1090 } IAudioClock2Vtbl;
   1091 interface IAudioClock2 {
   1092     CONST_VTBL IAudioClock2Vtbl* lpVtbl;
   1093 };
   1094 
   1095 #ifdef COBJMACROS
   1096 #ifndef WIDL_C_INLINE_WRAPPERS
   1097 /*** IUnknown methods ***/
   1098 #define IAudioClock2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1099 #define IAudioClock2_AddRef(This) (This)->lpVtbl->AddRef(This)
   1100 #define IAudioClock2_Release(This) (This)->lpVtbl->Release(This)
   1101 /*** IAudioClock2 methods ***/
   1102 #define IAudioClock2_GetDevicePosition(This,DevicePosition,QPCPosition) (This)->lpVtbl->GetDevicePosition(This,DevicePosition,QPCPosition)
   1103 #else
   1104 /*** IUnknown methods ***/
   1105 static FORCEINLINE HRESULT IAudioClock2_QueryInterface(IAudioClock2* This,REFIID riid,void **ppvObject) {
   1106     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1107 }
   1108 static FORCEINLINE ULONG IAudioClock2_AddRef(IAudioClock2* This) {
   1109     return This->lpVtbl->AddRef(This);
   1110 }
   1111 static FORCEINLINE ULONG IAudioClock2_Release(IAudioClock2* This) {
   1112     return This->lpVtbl->Release(This);
   1113 }
   1114 /*** IAudioClock2 methods ***/
   1115 static FORCEINLINE HRESULT IAudioClock2_GetDevicePosition(IAudioClock2* This,UINT64 *DevicePosition,UINT64 *QPCPosition) {
   1116     return This->lpVtbl->GetDevicePosition(This,DevicePosition,QPCPosition);
   1117 }
   1118 #endif
   1119 #endif
   1120 
   1121 #endif
   1122 
   1123 HRESULT STDMETHODCALLTYPE IAudioClock2_GetDevicePosition_Proxy(
   1124     IAudioClock2* This,
   1125     UINT64 *DevicePosition,
   1126     UINT64 *QPCPosition);
   1127 void __RPC_STUB IAudioClock2_GetDevicePosition_Stub(
   1128     IRpcStubBuffer* This,
   1129     IRpcChannelBuffer* pRpcChannelBuffer,
   1130     PRPC_MESSAGE pRpcMessage,
   1131     DWORD* pdwStubPhase);
   1132 
   1133 #endif  /* __IAudioClock2_INTERFACE_DEFINED__ */
   1134 
   1135 
   1136 /*****************************************************************************
   1137  * IAudioClockAdjustment interface
   1138  */
   1139 #ifndef __IAudioClockAdjustment_INTERFACE_DEFINED__
   1140 #define __IAudioClockAdjustment_INTERFACE_DEFINED__
   1141 
   1142 DEFINE_GUID(IID_IAudioClockAdjustment, 0xf6e4c0a0, 0x46d9, 0x4fb8, 0xbe,0x21, 0x57,0xa3,0xef,0x2b,0x62,0x6c);
   1143 #if defined(__cplusplus) && !defined(CINTERFACE)
   1144 MIDL_INTERFACE("f6e4c0a0-46d9-4fb8-be21-57a3ef2b626c")
   1145 IAudioClockAdjustment : public IUnknown
   1146 {
   1147     virtual HRESULT STDMETHODCALLTYPE SetSampleRate(
   1148         float flSampleRate) = 0;
   1149 
   1150 };
   1151 #ifdef __CRT_UUID_DECL
   1152 __CRT_UUID_DECL(IAudioClockAdjustment, 0xf6e4c0a0, 0x46d9, 0x4fb8, 0xbe,0x21, 0x57,0xa3,0xef,0x2b,0x62,0x6c)
   1153 #endif
   1154 #else
   1155 typedef struct IAudioClockAdjustmentVtbl {
   1156     BEGIN_INTERFACE
   1157 
   1158     /*** IUnknown methods ***/
   1159     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1160         IAudioClockAdjustment* This,
   1161         REFIID riid,
   1162         void **ppvObject);
   1163 
   1164     ULONG (STDMETHODCALLTYPE *AddRef)(
   1165         IAudioClockAdjustment* This);
   1166 
   1167     ULONG (STDMETHODCALLTYPE *Release)(
   1168         IAudioClockAdjustment* This);
   1169 
   1170     /*** IAudioClockAdjustment methods ***/
   1171     HRESULT (STDMETHODCALLTYPE *SetSampleRate)(
   1172         IAudioClockAdjustment* This,
   1173         float flSampleRate);
   1174 
   1175     END_INTERFACE
   1176 } IAudioClockAdjustmentVtbl;
   1177 interface IAudioClockAdjustment {
   1178     CONST_VTBL IAudioClockAdjustmentVtbl* lpVtbl;
   1179 };
   1180 
   1181 #ifdef COBJMACROS
   1182 #ifndef WIDL_C_INLINE_WRAPPERS
   1183 /*** IUnknown methods ***/
   1184 #define IAudioClockAdjustment_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1185 #define IAudioClockAdjustment_AddRef(This) (This)->lpVtbl->AddRef(This)
   1186 #define IAudioClockAdjustment_Release(This) (This)->lpVtbl->Release(This)
   1187 /*** IAudioClockAdjustment methods ***/
   1188 #define IAudioClockAdjustment_SetSampleRate(This,flSampleRate) (This)->lpVtbl->SetSampleRate(This,flSampleRate)
   1189 #else
   1190 /*** IUnknown methods ***/
   1191 static FORCEINLINE HRESULT IAudioClockAdjustment_QueryInterface(IAudioClockAdjustment* This,REFIID riid,void **ppvObject) {
   1192     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1193 }
   1194 static FORCEINLINE ULONG IAudioClockAdjustment_AddRef(IAudioClockAdjustment* This) {
   1195     return This->lpVtbl->AddRef(This);
   1196 }
   1197 static FORCEINLINE ULONG IAudioClockAdjustment_Release(IAudioClockAdjustment* This) {
   1198     return This->lpVtbl->Release(This);
   1199 }
   1200 /*** IAudioClockAdjustment methods ***/
   1201 static FORCEINLINE HRESULT IAudioClockAdjustment_SetSampleRate(IAudioClockAdjustment* This,float flSampleRate) {
   1202     return This->lpVtbl->SetSampleRate(This,flSampleRate);
   1203 }
   1204 #endif
   1205 #endif
   1206 
   1207 #endif
   1208 
   1209 HRESULT STDMETHODCALLTYPE IAudioClockAdjustment_SetSampleRate_Proxy(
   1210     IAudioClockAdjustment* This,
   1211     float flSampleRate);
   1212 void __RPC_STUB IAudioClockAdjustment_SetSampleRate_Stub(
   1213     IRpcStubBuffer* This,
   1214     IRpcChannelBuffer* pRpcChannelBuffer,
   1215     PRPC_MESSAGE pRpcMessage,
   1216     DWORD* pdwStubPhase);
   1217 
   1218 #endif  /* __IAudioClockAdjustment_INTERFACE_DEFINED__ */
   1219 
   1220 #endif
   1221 
   1222 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
   1223 /*****************************************************************************
   1224  * ISimpleAudioVolume interface
   1225  */
   1226 #ifndef __ISimpleAudioVolume_INTERFACE_DEFINED__
   1227 #define __ISimpleAudioVolume_INTERFACE_DEFINED__
   1228 
   1229 DEFINE_GUID(IID_ISimpleAudioVolume, 0x87ce5498, 0x68d6, 0x44e5, 0x92,0x15, 0x6d,0xa4,0x7e,0xf8,0x83,0xd8);
   1230 #if defined(__cplusplus) && !defined(CINTERFACE)
   1231 MIDL_INTERFACE("87ce5498-68d6-44e5-9215-6da47ef883d8")
   1232 ISimpleAudioVolume : public IUnknown
   1233 {
   1234     virtual HRESULT STDMETHODCALLTYPE SetMasterVolume(
   1235         float fLevel,
   1236         LPCGUID EventContext) = 0;
   1237 
   1238     virtual HRESULT STDMETHODCALLTYPE GetMasterVolume(
   1239         float *pfLevel) = 0;
   1240 
   1241     virtual HRESULT STDMETHODCALLTYPE SetMute(
   1242         const WINBOOL bMute,
   1243         LPCGUID EventContext) = 0;
   1244 
   1245     virtual HRESULT STDMETHODCALLTYPE GetMute(
   1246         WINBOOL *pbMute) = 0;
   1247 
   1248 };
   1249 #ifdef __CRT_UUID_DECL
   1250 __CRT_UUID_DECL(ISimpleAudioVolume, 0x87ce5498, 0x68d6, 0x44e5, 0x92,0x15, 0x6d,0xa4,0x7e,0xf8,0x83,0xd8)
   1251 #endif
   1252 #else
   1253 typedef struct ISimpleAudioVolumeVtbl {
   1254     BEGIN_INTERFACE
   1255 
   1256     /*** IUnknown methods ***/
   1257     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1258         ISimpleAudioVolume* This,
   1259         REFIID riid,
   1260         void **ppvObject);
   1261 
   1262     ULONG (STDMETHODCALLTYPE *AddRef)(
   1263         ISimpleAudioVolume* This);
   1264 
   1265     ULONG (STDMETHODCALLTYPE *Release)(
   1266         ISimpleAudioVolume* This);
   1267 
   1268     /*** ISimpleAudioVolume methods ***/
   1269     HRESULT (STDMETHODCALLTYPE *SetMasterVolume)(
   1270         ISimpleAudioVolume* This,
   1271         float fLevel,
   1272         LPCGUID EventContext);
   1273 
   1274     HRESULT (STDMETHODCALLTYPE *GetMasterVolume)(
   1275         ISimpleAudioVolume* This,
   1276         float *pfLevel);
   1277 
   1278     HRESULT (STDMETHODCALLTYPE *SetMute)(
   1279         ISimpleAudioVolume* This,
   1280         const WINBOOL bMute,
   1281         LPCGUID EventContext);
   1282 
   1283     HRESULT (STDMETHODCALLTYPE *GetMute)(
   1284         ISimpleAudioVolume* This,
   1285         WINBOOL *pbMute);
   1286 
   1287     END_INTERFACE
   1288 } ISimpleAudioVolumeVtbl;
   1289 interface ISimpleAudioVolume {
   1290     CONST_VTBL ISimpleAudioVolumeVtbl* lpVtbl;
   1291 };
   1292 
   1293 #ifdef COBJMACROS
   1294 #ifndef WIDL_C_INLINE_WRAPPERS
   1295 /*** IUnknown methods ***/
   1296 #define ISimpleAudioVolume_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1297 #define ISimpleAudioVolume_AddRef(This) (This)->lpVtbl->AddRef(This)
   1298 #define ISimpleAudioVolume_Release(This) (This)->lpVtbl->Release(This)
   1299 /*** ISimpleAudioVolume methods ***/
   1300 #define ISimpleAudioVolume_SetMasterVolume(This,fLevel,EventContext) (This)->lpVtbl->SetMasterVolume(This,fLevel,EventContext)
   1301 #define ISimpleAudioVolume_GetMasterVolume(This,pfLevel) (This)->lpVtbl->GetMasterVolume(This,pfLevel)
   1302 #define ISimpleAudioVolume_SetMute(This,bMute,EventContext) (This)->lpVtbl->SetMute(This,bMute,EventContext)
   1303 #define ISimpleAudioVolume_GetMute(This,pbMute) (This)->lpVtbl->GetMute(This,pbMute)
   1304 #else
   1305 /*** IUnknown methods ***/
   1306 static FORCEINLINE HRESULT ISimpleAudioVolume_QueryInterface(ISimpleAudioVolume* This,REFIID riid,void **ppvObject) {
   1307     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1308 }
   1309 static FORCEINLINE ULONG ISimpleAudioVolume_AddRef(ISimpleAudioVolume* This) {
   1310     return This->lpVtbl->AddRef(This);
   1311 }
   1312 static FORCEINLINE ULONG ISimpleAudioVolume_Release(ISimpleAudioVolume* This) {
   1313     return This->lpVtbl->Release(This);
   1314 }
   1315 /*** ISimpleAudioVolume methods ***/
   1316 static FORCEINLINE HRESULT ISimpleAudioVolume_SetMasterVolume(ISimpleAudioVolume* This,float fLevel,LPCGUID EventContext) {
   1317     return This->lpVtbl->SetMasterVolume(This,fLevel,EventContext);
   1318 }
   1319 static FORCEINLINE HRESULT ISimpleAudioVolume_GetMasterVolume(ISimpleAudioVolume* This,float *pfLevel) {
   1320     return This->lpVtbl->GetMasterVolume(This,pfLevel);
   1321 }
   1322 static FORCEINLINE HRESULT ISimpleAudioVolume_SetMute(ISimpleAudioVolume* This,const WINBOOL bMute,LPCGUID EventContext) {
   1323     return This->lpVtbl->SetMute(This,bMute,EventContext);
   1324 }
   1325 static FORCEINLINE HRESULT ISimpleAudioVolume_GetMute(ISimpleAudioVolume* This,WINBOOL *pbMute) {
   1326     return This->lpVtbl->GetMute(This,pbMute);
   1327 }
   1328 #endif
   1329 #endif
   1330 
   1331 #endif
   1332 
   1333 HRESULT STDMETHODCALLTYPE ISimpleAudioVolume_SetMasterVolume_Proxy(
   1334     ISimpleAudioVolume* This,
   1335     float fLevel,
   1336     LPCGUID EventContext);
   1337 void __RPC_STUB ISimpleAudioVolume_SetMasterVolume_Stub(
   1338     IRpcStubBuffer* This,
   1339     IRpcChannelBuffer* pRpcChannelBuffer,
   1340     PRPC_MESSAGE pRpcMessage,
   1341     DWORD* pdwStubPhase);
   1342 HRESULT STDMETHODCALLTYPE ISimpleAudioVolume_GetMasterVolume_Proxy(
   1343     ISimpleAudioVolume* This,
   1344     float *pfLevel);
   1345 void __RPC_STUB ISimpleAudioVolume_GetMasterVolume_Stub(
   1346     IRpcStubBuffer* This,
   1347     IRpcChannelBuffer* pRpcChannelBuffer,
   1348     PRPC_MESSAGE pRpcMessage,
   1349     DWORD* pdwStubPhase);
   1350 HRESULT STDMETHODCALLTYPE ISimpleAudioVolume_SetMute_Proxy(
   1351     ISimpleAudioVolume* This,
   1352     const WINBOOL bMute,
   1353     LPCGUID EventContext);
   1354 void __RPC_STUB ISimpleAudioVolume_SetMute_Stub(
   1355     IRpcStubBuffer* This,
   1356     IRpcChannelBuffer* pRpcChannelBuffer,
   1357     PRPC_MESSAGE pRpcMessage,
   1358     DWORD* pdwStubPhase);
   1359 HRESULT STDMETHODCALLTYPE ISimpleAudioVolume_GetMute_Proxy(
   1360     ISimpleAudioVolume* This,
   1361     WINBOOL *pbMute);
   1362 void __RPC_STUB ISimpleAudioVolume_GetMute_Stub(
   1363     IRpcStubBuffer* This,
   1364     IRpcChannelBuffer* pRpcChannelBuffer,
   1365     PRPC_MESSAGE pRpcMessage,
   1366     DWORD* pdwStubPhase);
   1367 
   1368 #endif  /* __ISimpleAudioVolume_INTERFACE_DEFINED__ */
   1369 
   1370 #endif
   1371 
   1372 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
   1373 /*****************************************************************************
   1374  * IAudioStreamVolume interface
   1375  */
   1376 #ifndef __IAudioStreamVolume_INTERFACE_DEFINED__
   1377 #define __IAudioStreamVolume_INTERFACE_DEFINED__
   1378 
   1379 DEFINE_GUID(IID_IAudioStreamVolume, 0x93014887, 0x242d, 0x4068, 0x8a,0x15, 0xcf,0x5e,0x93,0xb9,0x0f,0xe3);
   1380 #if defined(__cplusplus) && !defined(CINTERFACE)
   1381 MIDL_INTERFACE("93014887-242d-4068-8a15-cf5e93b90fe3")
   1382 IAudioStreamVolume : public IUnknown
   1383 {
   1384     virtual HRESULT STDMETHODCALLTYPE GetChannelCount(
   1385         UINT32 *pdwCount) = 0;
   1386 
   1387     virtual HRESULT STDMETHODCALLTYPE SetChannelVolume(
   1388         UINT32 dwIndex,
   1389         const float fLevel) = 0;
   1390 
   1391     virtual HRESULT STDMETHODCALLTYPE GetChannelVolume(
   1392         UINT32 dwIndex,
   1393         float *pfLevel) = 0;
   1394 
   1395     virtual HRESULT STDMETHODCALLTYPE SetAllVolumes(
   1396         UINT32 dwCount,
   1397         const float *pfVolumes) = 0;
   1398 
   1399     virtual HRESULT STDMETHODCALLTYPE GetAllVolumes(
   1400         UINT32 dwCount,
   1401         float *pfVolumes) = 0;
   1402 
   1403 };
   1404 #ifdef __CRT_UUID_DECL
   1405 __CRT_UUID_DECL(IAudioStreamVolume, 0x93014887, 0x242d, 0x4068, 0x8a,0x15, 0xcf,0x5e,0x93,0xb9,0x0f,0xe3)
   1406 #endif
   1407 #else
   1408 typedef struct IAudioStreamVolumeVtbl {
   1409     BEGIN_INTERFACE
   1410 
   1411     /*** IUnknown methods ***/
   1412     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1413         IAudioStreamVolume* This,
   1414         REFIID riid,
   1415         void **ppvObject);
   1416 
   1417     ULONG (STDMETHODCALLTYPE *AddRef)(
   1418         IAudioStreamVolume* This);
   1419 
   1420     ULONG (STDMETHODCALLTYPE *Release)(
   1421         IAudioStreamVolume* This);
   1422 
   1423     /*** IAudioStreamVolume methods ***/
   1424     HRESULT (STDMETHODCALLTYPE *GetChannelCount)(
   1425         IAudioStreamVolume* This,
   1426         UINT32 *pdwCount);
   1427 
   1428     HRESULT (STDMETHODCALLTYPE *SetChannelVolume)(
   1429         IAudioStreamVolume* This,
   1430         UINT32 dwIndex,
   1431         const float fLevel);
   1432 
   1433     HRESULT (STDMETHODCALLTYPE *GetChannelVolume)(
   1434         IAudioStreamVolume* This,
   1435         UINT32 dwIndex,
   1436         float *pfLevel);
   1437 
   1438     HRESULT (STDMETHODCALLTYPE *SetAllVolumes)(
   1439         IAudioStreamVolume* This,
   1440         UINT32 dwCount,
   1441         const float *pfVolumes);
   1442 
   1443     HRESULT (STDMETHODCALLTYPE *GetAllVolumes)(
   1444         IAudioStreamVolume* This,
   1445         UINT32 dwCount,
   1446         float *pfVolumes);
   1447 
   1448     END_INTERFACE
   1449 } IAudioStreamVolumeVtbl;
   1450 interface IAudioStreamVolume {
   1451     CONST_VTBL IAudioStreamVolumeVtbl* lpVtbl;
   1452 };
   1453 
   1454 #ifdef COBJMACROS
   1455 #ifndef WIDL_C_INLINE_WRAPPERS
   1456 /*** IUnknown methods ***/
   1457 #define IAudioStreamVolume_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1458 #define IAudioStreamVolume_AddRef(This) (This)->lpVtbl->AddRef(This)
   1459 #define IAudioStreamVolume_Release(This) (This)->lpVtbl->Release(This)
   1460 /*** IAudioStreamVolume methods ***/
   1461 #define IAudioStreamVolume_GetChannelCount(This,pdwCount) (This)->lpVtbl->GetChannelCount(This,pdwCount)
   1462 #define IAudioStreamVolume_SetChannelVolume(This,dwIndex,fLevel) (This)->lpVtbl->SetChannelVolume(This,dwIndex,fLevel)
   1463 #define IAudioStreamVolume_GetChannelVolume(This,dwIndex,pfLevel) (This)->lpVtbl->GetChannelVolume(This,dwIndex,pfLevel)
   1464 #define IAudioStreamVolume_SetAllVolumes(This,dwCount,pfVolumes) (This)->lpVtbl->SetAllVolumes(This,dwCount,pfVolumes)
   1465 #define IAudioStreamVolume_GetAllVolumes(This,dwCount,pfVolumes) (This)->lpVtbl->GetAllVolumes(This,dwCount,pfVolumes)
   1466 #else
   1467 /*** IUnknown methods ***/
   1468 static FORCEINLINE HRESULT IAudioStreamVolume_QueryInterface(IAudioStreamVolume* This,REFIID riid,void **ppvObject) {
   1469     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1470 }
   1471 static FORCEINLINE ULONG IAudioStreamVolume_AddRef(IAudioStreamVolume* This) {
   1472     return This->lpVtbl->AddRef(This);
   1473 }
   1474 static FORCEINLINE ULONG IAudioStreamVolume_Release(IAudioStreamVolume* This) {
   1475     return This->lpVtbl->Release(This);
   1476 }
   1477 /*** IAudioStreamVolume methods ***/
   1478 static FORCEINLINE HRESULT IAudioStreamVolume_GetChannelCount(IAudioStreamVolume* This,UINT32 *pdwCount) {
   1479     return This->lpVtbl->GetChannelCount(This,pdwCount);
   1480 }
   1481 static FORCEINLINE HRESULT IAudioStreamVolume_SetChannelVolume(IAudioStreamVolume* This,UINT32 dwIndex,const float fLevel) {
   1482     return This->lpVtbl->SetChannelVolume(This,dwIndex,fLevel);
   1483 }
   1484 static FORCEINLINE HRESULT IAudioStreamVolume_GetChannelVolume(IAudioStreamVolume* This,UINT32 dwIndex,float *pfLevel) {
   1485     return This->lpVtbl->GetChannelVolume(This,dwIndex,pfLevel);
   1486 }
   1487 static FORCEINLINE HRESULT IAudioStreamVolume_SetAllVolumes(IAudioStreamVolume* This,UINT32 dwCount,const float *pfVolumes) {
   1488     return This->lpVtbl->SetAllVolumes(This,dwCount,pfVolumes);
   1489 }
   1490 static FORCEINLINE HRESULT IAudioStreamVolume_GetAllVolumes(IAudioStreamVolume* This,UINT32 dwCount,float *pfVolumes) {
   1491     return This->lpVtbl->GetAllVolumes(This,dwCount,pfVolumes);
   1492 }
   1493 #endif
   1494 #endif
   1495 
   1496 #endif
   1497 
   1498 HRESULT STDMETHODCALLTYPE IAudioStreamVolume_GetChannelCount_Proxy(
   1499     IAudioStreamVolume* This,
   1500     UINT32 *pdwCount);
   1501 void __RPC_STUB IAudioStreamVolume_GetChannelCount_Stub(
   1502     IRpcStubBuffer* This,
   1503     IRpcChannelBuffer* pRpcChannelBuffer,
   1504     PRPC_MESSAGE pRpcMessage,
   1505     DWORD* pdwStubPhase);
   1506 HRESULT STDMETHODCALLTYPE IAudioStreamVolume_SetChannelVolume_Proxy(
   1507     IAudioStreamVolume* This,
   1508     UINT32 dwIndex,
   1509     const float fLevel);
   1510 void __RPC_STUB IAudioStreamVolume_SetChannelVolume_Stub(
   1511     IRpcStubBuffer* This,
   1512     IRpcChannelBuffer* pRpcChannelBuffer,
   1513     PRPC_MESSAGE pRpcMessage,
   1514     DWORD* pdwStubPhase);
   1515 HRESULT STDMETHODCALLTYPE IAudioStreamVolume_GetChannelVolume_Proxy(
   1516     IAudioStreamVolume* This,
   1517     UINT32 dwIndex,
   1518     float *pfLevel);
   1519 void __RPC_STUB IAudioStreamVolume_GetChannelVolume_Stub(
   1520     IRpcStubBuffer* This,
   1521     IRpcChannelBuffer* pRpcChannelBuffer,
   1522     PRPC_MESSAGE pRpcMessage,
   1523     DWORD* pdwStubPhase);
   1524 HRESULT STDMETHODCALLTYPE IAudioStreamVolume_SetAllVolumes_Proxy(
   1525     IAudioStreamVolume* This,
   1526     UINT32 dwCount,
   1527     const float *pfVolumes);
   1528 void __RPC_STUB IAudioStreamVolume_SetAllVolumes_Stub(
   1529     IRpcStubBuffer* This,
   1530     IRpcChannelBuffer* pRpcChannelBuffer,
   1531     PRPC_MESSAGE pRpcMessage,
   1532     DWORD* pdwStubPhase);
   1533 HRESULT STDMETHODCALLTYPE IAudioStreamVolume_GetAllVolumes_Proxy(
   1534     IAudioStreamVolume* This,
   1535     UINT32 dwCount,
   1536     float *pfVolumes);
   1537 void __RPC_STUB IAudioStreamVolume_GetAllVolumes_Stub(
   1538     IRpcStubBuffer* This,
   1539     IRpcChannelBuffer* pRpcChannelBuffer,
   1540     PRPC_MESSAGE pRpcMessage,
   1541     DWORD* pdwStubPhase);
   1542 
   1543 #endif  /* __IAudioStreamVolume_INTERFACE_DEFINED__ */
   1544 
   1545 
   1546 /*****************************************************************************
   1547  * IChannelAudioVolume interface
   1548  */
   1549 #ifndef __IChannelAudioVolume_INTERFACE_DEFINED__
   1550 #define __IChannelAudioVolume_INTERFACE_DEFINED__
   1551 
   1552 DEFINE_GUID(IID_IChannelAudioVolume, 0x1c158861, 0xb533, 0x4b30, 0xb1,0xcf, 0xe8,0x53,0xe5,0x1c,0x59,0xb8);
   1553 #if defined(__cplusplus) && !defined(CINTERFACE)
   1554 MIDL_INTERFACE("1c158861-b533-4b30-b1cf-e853e51c59b8")
   1555 IChannelAudioVolume : public IUnknown
   1556 {
   1557     virtual HRESULT STDMETHODCALLTYPE GetChannelCount(
   1558         UINT32 *pdwCount) = 0;
   1559 
   1560     virtual HRESULT STDMETHODCALLTYPE SetChannelVolume(
   1561         UINT32 dwIndex,
   1562         const float fLevel,
   1563         LPCGUID EventContext) = 0;
   1564 
   1565     virtual HRESULT STDMETHODCALLTYPE GetChannelVolume(
   1566         UINT32 dwIndex,
   1567         float *pfLevel) = 0;
   1568 
   1569     virtual HRESULT STDMETHODCALLTYPE SetAllVolumes(
   1570         UINT32 dwCount,
   1571         const float *pfVolumes,
   1572         LPCGUID EventContext) = 0;
   1573 
   1574     virtual HRESULT STDMETHODCALLTYPE GetAllVolumes(
   1575         UINT32 dwCount,
   1576         float *pfVolumes) = 0;
   1577 
   1578 };
   1579 #ifdef __CRT_UUID_DECL
   1580 __CRT_UUID_DECL(IChannelAudioVolume, 0x1c158861, 0xb533, 0x4b30, 0xb1,0xcf, 0xe8,0x53,0xe5,0x1c,0x59,0xb8)
   1581 #endif
   1582 #else
   1583 typedef struct IChannelAudioVolumeVtbl {
   1584     BEGIN_INTERFACE
   1585 
   1586     /*** IUnknown methods ***/
   1587     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1588         IChannelAudioVolume* This,
   1589         REFIID riid,
   1590         void **ppvObject);
   1591 
   1592     ULONG (STDMETHODCALLTYPE *AddRef)(
   1593         IChannelAudioVolume* This);
   1594 
   1595     ULONG (STDMETHODCALLTYPE *Release)(
   1596         IChannelAudioVolume* This);
   1597 
   1598     /*** IChannelAudioVolume methods ***/
   1599     HRESULT (STDMETHODCALLTYPE *GetChannelCount)(
   1600         IChannelAudioVolume* This,
   1601         UINT32 *pdwCount);
   1602 
   1603     HRESULT (STDMETHODCALLTYPE *SetChannelVolume)(
   1604         IChannelAudioVolume* This,
   1605         UINT32 dwIndex,
   1606         const float fLevel,
   1607         LPCGUID EventContext);
   1608 
   1609     HRESULT (STDMETHODCALLTYPE *GetChannelVolume)(
   1610         IChannelAudioVolume* This,
   1611         UINT32 dwIndex,
   1612         float *pfLevel);
   1613 
   1614     HRESULT (STDMETHODCALLTYPE *SetAllVolumes)(
   1615         IChannelAudioVolume* This,
   1616         UINT32 dwCount,
   1617         const float *pfVolumes,
   1618         LPCGUID EventContext);
   1619 
   1620     HRESULT (STDMETHODCALLTYPE *GetAllVolumes)(
   1621         IChannelAudioVolume* This,
   1622         UINT32 dwCount,
   1623         float *pfVolumes);
   1624 
   1625     END_INTERFACE
   1626 } IChannelAudioVolumeVtbl;
   1627 interface IChannelAudioVolume {
   1628     CONST_VTBL IChannelAudioVolumeVtbl* lpVtbl;
   1629 };
   1630 
   1631 #ifdef COBJMACROS
   1632 #ifndef WIDL_C_INLINE_WRAPPERS
   1633 /*** IUnknown methods ***/
   1634 #define IChannelAudioVolume_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1635 #define IChannelAudioVolume_AddRef(This) (This)->lpVtbl->AddRef(This)
   1636 #define IChannelAudioVolume_Release(This) (This)->lpVtbl->Release(This)
   1637 /*** IChannelAudioVolume methods ***/
   1638 #define IChannelAudioVolume_GetChannelCount(This,pdwCount) (This)->lpVtbl->GetChannelCount(This,pdwCount)
   1639 #define IChannelAudioVolume_SetChannelVolume(This,dwIndex,fLevel,EventContext) (This)->lpVtbl->SetChannelVolume(This,dwIndex,fLevel,EventContext)
   1640 #define IChannelAudioVolume_GetChannelVolume(This,dwIndex,pfLevel) (This)->lpVtbl->GetChannelVolume(This,dwIndex,pfLevel)
   1641 #define IChannelAudioVolume_SetAllVolumes(This,dwCount,pfVolumes,EventContext) (This)->lpVtbl->SetAllVolumes(This,dwCount,pfVolumes,EventContext)
   1642 #define IChannelAudioVolume_GetAllVolumes(This,dwCount,pfVolumes) (This)->lpVtbl->GetAllVolumes(This,dwCount,pfVolumes)
   1643 #else
   1644 /*** IUnknown methods ***/
   1645 static FORCEINLINE HRESULT IChannelAudioVolume_QueryInterface(IChannelAudioVolume* This,REFIID riid,void **ppvObject) {
   1646     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1647 }
   1648 static FORCEINLINE ULONG IChannelAudioVolume_AddRef(IChannelAudioVolume* This) {
   1649     return This->lpVtbl->AddRef(This);
   1650 }
   1651 static FORCEINLINE ULONG IChannelAudioVolume_Release(IChannelAudioVolume* This) {
   1652     return This->lpVtbl->Release(This);
   1653 }
   1654 /*** IChannelAudioVolume methods ***/
   1655 static FORCEINLINE HRESULT IChannelAudioVolume_GetChannelCount(IChannelAudioVolume* This,UINT32 *pdwCount) {
   1656     return This->lpVtbl->GetChannelCount(This,pdwCount);
   1657 }
   1658 static FORCEINLINE HRESULT IChannelAudioVolume_SetChannelVolume(IChannelAudioVolume* This,UINT32 dwIndex,const float fLevel,LPCGUID EventContext) {
   1659     return This->lpVtbl->SetChannelVolume(This,dwIndex,fLevel,EventContext);
   1660 }
   1661 static FORCEINLINE HRESULT IChannelAudioVolume_GetChannelVolume(IChannelAudioVolume* This,UINT32 dwIndex,float *pfLevel) {
   1662     return This->lpVtbl->GetChannelVolume(This,dwIndex,pfLevel);
   1663 }
   1664 static FORCEINLINE HRESULT IChannelAudioVolume_SetAllVolumes(IChannelAudioVolume* This,UINT32 dwCount,const float *pfVolumes,LPCGUID EventContext) {
   1665     return This->lpVtbl->SetAllVolumes(This,dwCount,pfVolumes,EventContext);
   1666 }
   1667 static FORCEINLINE HRESULT IChannelAudioVolume_GetAllVolumes(IChannelAudioVolume* This,UINT32 dwCount,float *pfVolumes) {
   1668     return This->lpVtbl->GetAllVolumes(This,dwCount,pfVolumes);
   1669 }
   1670 #endif
   1671 #endif
   1672 
   1673 #endif
   1674 
   1675 HRESULT STDMETHODCALLTYPE IChannelAudioVolume_GetChannelCount_Proxy(
   1676     IChannelAudioVolume* This,
   1677     UINT32 *pdwCount);
   1678 void __RPC_STUB IChannelAudioVolume_GetChannelCount_Stub(
   1679     IRpcStubBuffer* This,
   1680     IRpcChannelBuffer* pRpcChannelBuffer,
   1681     PRPC_MESSAGE pRpcMessage,
   1682     DWORD* pdwStubPhase);
   1683 HRESULT STDMETHODCALLTYPE IChannelAudioVolume_SetChannelVolume_Proxy(
   1684     IChannelAudioVolume* This,
   1685     UINT32 dwIndex,
   1686     const float fLevel,
   1687     LPCGUID EventContext);
   1688 void __RPC_STUB IChannelAudioVolume_SetChannelVolume_Stub(
   1689     IRpcStubBuffer* This,
   1690     IRpcChannelBuffer* pRpcChannelBuffer,
   1691     PRPC_MESSAGE pRpcMessage,
   1692     DWORD* pdwStubPhase);
   1693 HRESULT STDMETHODCALLTYPE IChannelAudioVolume_GetChannelVolume_Proxy(
   1694     IChannelAudioVolume* This,
   1695     UINT32 dwIndex,
   1696     float *pfLevel);
   1697 void __RPC_STUB IChannelAudioVolume_GetChannelVolume_Stub(
   1698     IRpcStubBuffer* This,
   1699     IRpcChannelBuffer* pRpcChannelBuffer,
   1700     PRPC_MESSAGE pRpcMessage,
   1701     DWORD* pdwStubPhase);
   1702 HRESULT STDMETHODCALLTYPE IChannelAudioVolume_SetAllVolumes_Proxy(
   1703     IChannelAudioVolume* This,
   1704     UINT32 dwCount,
   1705     const float *pfVolumes,
   1706     LPCGUID EventContext);
   1707 void __RPC_STUB IChannelAudioVolume_SetAllVolumes_Stub(
   1708     IRpcStubBuffer* This,
   1709     IRpcChannelBuffer* pRpcChannelBuffer,
   1710     PRPC_MESSAGE pRpcMessage,
   1711     DWORD* pdwStubPhase);
   1712 HRESULT STDMETHODCALLTYPE IChannelAudioVolume_GetAllVolumes_Proxy(
   1713     IChannelAudioVolume* This,
   1714     UINT32 dwCount,
   1715     float *pfVolumes);
   1716 void __RPC_STUB IChannelAudioVolume_GetAllVolumes_Stub(
   1717     IRpcStubBuffer* This,
   1718     IRpcChannelBuffer* pRpcChannelBuffer,
   1719     PRPC_MESSAGE pRpcMessage,
   1720     DWORD* pdwStubPhase);
   1721 
   1722 #endif  /* __IChannelAudioVolume_INTERFACE_DEFINED__ */
   1723 
   1724 #endif
   1725 
   1726 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
   1727 #define AUDCLNT_ERR(n) MAKE_HRESULT(SEVERITY_ERROR, FACILITY_AUDCLNT, n)
   1728 #define AUDCLNT_SUCCESS(n) MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_AUDCLNT, n)
   1729 
   1730 #define AUDCLNT_E_NOT_INITIALIZED AUDCLNT_ERR(0x1)
   1731 #define AUDCLNT_E_ALREADY_INITIALIZED AUDCLNT_ERR(0x2)
   1732 #define AUDCLNT_E_WRONG_ENDPOINT_TYPE AUDCLNT_ERR(0x3)
   1733 #define AUDCLNT_E_DEVICE_INVALIDATED AUDCLNT_ERR(0x4)
   1734 #define AUDCLNT_E_NOT_STOPPED AUDCLNT_ERR(0x5)
   1735 #define AUDCLNT_E_BUFFER_TOO_LARGE AUDCLNT_ERR(0x6)
   1736 #define AUDCLNT_E_OUT_OF_ORDER AUDCLNT_ERR(0x7)
   1737 #define AUDCLNT_E_UNSUPPORTED_FORMAT AUDCLNT_ERR(0x8)
   1738 #define AUDCLNT_E_INVALID_SIZE AUDCLNT_ERR(0x9)
   1739 #define AUDCLNT_E_DEVICE_IN_USE AUDCLNT_ERR(0xa)
   1740 #define AUDCLNT_E_BUFFER_OPERATION_PENDING AUDCLNT_ERR(0xb)
   1741 #define AUDCLNT_E_THREAD_NOT_REGISTERED AUDCLNT_ERR(0xc)
   1742 #define AUDCLNT_E_EXCLUSIVE_MODE_NOT_ALLOWED AUDCLNT_ERR(0xe)
   1743 #define AUDCLNT_E_ENDPOINT_CREATE_FAILED AUDCLNT_ERR(0xf)
   1744 #define AUDCLNT_E_SERVICE_NOT_RUNNING AUDCLNT_ERR(0x10)
   1745 #define AUDCLNT_E_EVENTHANDLE_NOT_EXPECTED AUDCLNT_ERR(0x11)
   1746 #define AUDCLNT_E_EXCLUSIVE_MODE_ONLY AUDCLNT_ERR(0x12)
   1747 #define AUDCLNT_E_BUFDURATION_PERIOD_NOT_EQUAL AUDCLNT_ERR(0x13)
   1748 #define AUDCLNT_E_EVENTHANDLE_NOT_SET AUDCLNT_ERR(0x14)
   1749 #define AUDCLNT_E_INCORRECT_BUFFER_SIZE AUDCLNT_ERR(0x15)
   1750 #define AUDCLNT_E_BUFFER_SIZE_ERROR AUDCLNT_ERR(0x16)
   1751 #define AUDCLNT_E_CPUUSAGE_EXCEEDED AUDCLNT_ERR(0x17)
   1752 #define AUDCLNT_E_BUFFER_ERROR AUDCLNT_ERR(0x18)
   1753 #define AUDCLNT_E_BUFFER_SIZE_NOT_ALIGNED AUDCLNT_ERR(0x19)
   1754 #define AUDCLNT_E_INVALID_DEVICE_PERIOD AUDCLNT_ERR(0x20)
   1755 #define AUDCLNT_E_INVALID_STREAM_FLAG AUDCLNT_ERR(0x21)
   1756 #define AUDCLNT_E_ENDPOINT_OFFLOAD_NOT_CAPABLE AUDCLNT_ERR(0x22)
   1757 #define AUDCLNT_E_OUT_OF_OFFLOAD_RESOURCES AUDCLNT_ERR(0x23)
   1758 #define AUDCLNT_E_OFFLOAD_MODE_ONLY AUDCLNT_ERR(0x24)
   1759 #define AUDCLNT_E_NONOFFLOAD_MODE_ONLY AUDCLNT_ERR(0x25)
   1760 #define AUDCLNT_E_RESOURCES_INVALIDATED AUDCLNT_ERR(0x26)
   1761 #define AUDCLNT_S_BUFFER_EMPTY AUDCLNT_SUCCESS(0x1)
   1762 #define AUDCLNT_S_THREAD_ALREADY_REGISTERED AUDCLNT_SUCCESS(0x2)
   1763 #define AUDCLNT_S_POSITION_STALLED AUDCLNT_SUCCESS(0x3)
   1764 #endif
   1765 /* Begin additional prototypes for all interfaces */
   1766 
   1767 
   1768 /* End additional prototypes */
   1769 
   1770 #ifdef __cplusplus
   1771 }
   1772 #endif
   1773 
   1774 #endif /* __audioclient_h__ */
   1775