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