1 /*** Autogenerated by WIDL 1.6 from include/audiopolicy.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 __audiopolicy_h__
16 #define __audiopolicy_h__
17 
18 /* Forward declarations */
19 
20 #ifndef __IAudioSessionEvents_FWD_DEFINED__
21 #define __IAudioSessionEvents_FWD_DEFINED__
22 typedef interface IAudioSessionEvents IAudioSessionEvents;
23 #endif
24 
25 #ifndef __IAudioSessionControl_FWD_DEFINED__
26 #define __IAudioSessionControl_FWD_DEFINED__
27 typedef interface IAudioSessionControl IAudioSessionControl;
28 #endif
29 
30 #ifndef __IAudioSessionControl2_FWD_DEFINED__
31 #define __IAudioSessionControl2_FWD_DEFINED__
32 typedef interface IAudioSessionControl2 IAudioSessionControl2;
33 #endif
34 
35 #ifndef __IAudioSessionManager_FWD_DEFINED__
36 #define __IAudioSessionManager_FWD_DEFINED__
37 typedef interface IAudioSessionManager IAudioSessionManager;
38 #endif
39 
40 #ifndef __IAudioVolumeDuckNotification_FWD_DEFINED__
41 #define __IAudioVolumeDuckNotification_FWD_DEFINED__
42 typedef interface IAudioVolumeDuckNotification IAudioVolumeDuckNotification;
43 #endif
44 
45 #ifndef __IAudioSessionNotification_FWD_DEFINED__
46 #define __IAudioSessionNotification_FWD_DEFINED__
47 typedef interface IAudioSessionNotification IAudioSessionNotification;
48 #endif
49 
50 #ifndef __IAudioSessionEnumerator_FWD_DEFINED__
51 #define __IAudioSessionEnumerator_FWD_DEFINED__
52 typedef interface IAudioSessionEnumerator IAudioSessionEnumerator;
53 #endif
54 
55 #ifndef __IAudioSessionManager2_FWD_DEFINED__
56 #define __IAudioSessionManager2_FWD_DEFINED__
57 typedef interface IAudioSessionManager2 IAudioSessionManager2;
58 #endif
59 
60 /* Headers for imported files */
61 
62 #include <oaidl.h>
63 #include <ocidl.h>
64 #include <propidl.h>
65 #include <audiosessiontypes.h>
66 #include <audioclient.h>
67 
68 #ifdef __cplusplus
69 extern "C" {
70 #endif
71 
72 #include <winapifamily.h>
73 
74 
75 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
76 typedef enum AudioSessionDisconnectReason {
77     DisconnectReasonDeviceRemoval = 0,
78     DisconnectReasonServerShutdown = 1,
79     DisconnectReasonFormatChanged = 2,
80     DisconnectReasonSessionLogoff = 3,
81     DisconnectReasonSessionDisconnected = 4,
82     DisconnectReasonExclusiveModeOverride = 5
83 } AudioSessionDisconnectReason;
84 
85 /*****************************************************************************
86  * IAudioSessionEvents interface
87  */
88 #ifndef __IAudioSessionEvents_INTERFACE_DEFINED__
89 #define __IAudioSessionEvents_INTERFACE_DEFINED__
90 
91 DEFINE_GUID(IID_IAudioSessionEvents, 0x24918acc, 0x64b3, 0x37c1, 0x8c,0xa9, 0x74,0xa6,0x6e,0x99,0x57,0xa8);
92 #if defined(__cplusplus) && !defined(CINTERFACE)
93 MIDL_INTERFACE("24918acc-64b3-37c1-8ca9-74a66e9957a8")
94 IAudioSessionEvents : public IUnknown
95 {
96     virtual HRESULT STDMETHODCALLTYPE OnDisplayNameChanged(
97         LPCWSTR NewDisplayName,
98         LPCGUID EventContext) = 0;
99 
100     virtual HRESULT STDMETHODCALLTYPE OnIconPathChanged(
101         LPCWSTR NewIconPath,
102         LPCGUID EventContext) = 0;
103 
104     virtual HRESULT STDMETHODCALLTYPE OnSimpleVolumeChanged(
105         float NewVolume,
106         WINBOOL NewMute,
107         LPCGUID EventContext) = 0;
108 
109     virtual HRESULT STDMETHODCALLTYPE OnChannelVolumeChanged(
110         DWORD ChannelCount,
111         float NewChannelVolumeArray[],
112         DWORD ChangedChannel,
113         LPCGUID EventContext) = 0;
114 
115     virtual HRESULT STDMETHODCALLTYPE OnGroupingParamChanged(
116         LPCGUID NewGroupingParam,
117         LPCGUID EventContext) = 0;
118 
119     virtual HRESULT STDMETHODCALLTYPE OnStateChanged(
120         AudioSessionState NewState) = 0;
121 
122     virtual HRESULT STDMETHODCALLTYPE OnSessionDisconnected(
123         AudioSessionDisconnectReason DisconnectReason) = 0;
124 
125 };
126 #ifdef __CRT_UUID_DECL
127 __CRT_UUID_DECL(IAudioSessionEvents, 0x24918acc, 0x64b3, 0x37c1, 0x8c,0xa9, 0x74,0xa6,0x6e,0x99,0x57,0xa8)
128 #endif
129 #else
130 typedef struct IAudioSessionEventsVtbl {
131     BEGIN_INTERFACE
132 
133     /*** IUnknown methods ***/
134     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
135         IAudioSessionEvents* This,
136         REFIID riid,
137         void **ppvObject);
138 
139     ULONG (STDMETHODCALLTYPE *AddRef)(
140         IAudioSessionEvents* This);
141 
142     ULONG (STDMETHODCALLTYPE *Release)(
143         IAudioSessionEvents* This);
144 
145     /*** IAudioSessionEvents methods ***/
146     HRESULT (STDMETHODCALLTYPE *OnDisplayNameChanged)(
147         IAudioSessionEvents* This,
148         LPCWSTR NewDisplayName,
149         LPCGUID EventContext);
150 
151     HRESULT (STDMETHODCALLTYPE *OnIconPathChanged)(
152         IAudioSessionEvents* This,
153         LPCWSTR NewIconPath,
154         LPCGUID EventContext);
155 
156     HRESULT (STDMETHODCALLTYPE *OnSimpleVolumeChanged)(
157         IAudioSessionEvents* This,
158         float NewVolume,
159         WINBOOL NewMute,
160         LPCGUID EventContext);
161 
162     HRESULT (STDMETHODCALLTYPE *OnChannelVolumeChanged)(
163         IAudioSessionEvents* This,
164         DWORD ChannelCount,
165         float NewChannelVolumeArray[],
166         DWORD ChangedChannel,
167         LPCGUID EventContext);
168 
169     HRESULT (STDMETHODCALLTYPE *OnGroupingParamChanged)(
170         IAudioSessionEvents* This,
171         LPCGUID NewGroupingParam,
172         LPCGUID EventContext);
173 
174     HRESULT (STDMETHODCALLTYPE *OnStateChanged)(
175         IAudioSessionEvents* This,
176         AudioSessionState NewState);
177 
178     HRESULT (STDMETHODCALLTYPE *OnSessionDisconnected)(
179         IAudioSessionEvents* This,
180         AudioSessionDisconnectReason DisconnectReason);
181 
182     END_INTERFACE
183 } IAudioSessionEventsVtbl;
184 interface IAudioSessionEvents {
185     CONST_VTBL IAudioSessionEventsVtbl* lpVtbl;
186 };
187 
188 #ifdef COBJMACROS
189 #ifndef WIDL_C_INLINE_WRAPPERS
190 /*** IUnknown methods ***/
191 #define IAudioSessionEvents_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
192 #define IAudioSessionEvents_AddRef(This) (This)->lpVtbl->AddRef(This)
193 #define IAudioSessionEvents_Release(This) (This)->lpVtbl->Release(This)
194 /*** IAudioSessionEvents methods ***/
195 #define IAudioSessionEvents_OnDisplayNameChanged(This,NewDisplayName,EventContext) (This)->lpVtbl->OnDisplayNameChanged(This,NewDisplayName,EventContext)
196 #define IAudioSessionEvents_OnIconPathChanged(This,NewIconPath,EventContext) (This)->lpVtbl->OnIconPathChanged(This,NewIconPath,EventContext)
197 #define IAudioSessionEvents_OnSimpleVolumeChanged(This,NewVolume,NewMute,EventContext) (This)->lpVtbl->OnSimpleVolumeChanged(This,NewVolume,NewMute,EventContext)
198 #define IAudioSessionEvents_OnChannelVolumeChanged(This,ChannelCount,NewChannelVolumeArray,ChangedChannel,EventContext) (This)->lpVtbl->OnChannelVolumeChanged(This,ChannelCount,NewChannelVolumeArray,ChangedChannel,EventContext)
199 #define IAudioSessionEvents_OnGroupingParamChanged(This,NewGroupingParam,EventContext) (This)->lpVtbl->OnGroupingParamChanged(This,NewGroupingParam,EventContext)
200 #define IAudioSessionEvents_OnStateChanged(This,NewState) (This)->lpVtbl->OnStateChanged(This,NewState)
201 #define IAudioSessionEvents_OnSessionDisconnected(This,DisconnectReason) (This)->lpVtbl->OnSessionDisconnected(This,DisconnectReason)
202 #else
203 /*** IUnknown methods ***/
204 static FORCEINLINE HRESULT IAudioSessionEvents_QueryInterface(IAudioSessionEvents* This,REFIID riid,void **ppvObject) {
205     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
206 }
207 static FORCEINLINE ULONG IAudioSessionEvents_AddRef(IAudioSessionEvents* This) {
208     return This->lpVtbl->AddRef(This);
209 }
210 static FORCEINLINE ULONG IAudioSessionEvents_Release(IAudioSessionEvents* This) {
211     return This->lpVtbl->Release(This);
212 }
213 /*** IAudioSessionEvents methods ***/
214 static FORCEINLINE HRESULT IAudioSessionEvents_OnDisplayNameChanged(IAudioSessionEvents* This,LPCWSTR NewDisplayName,LPCGUID EventContext) {
215     return This->lpVtbl->OnDisplayNameChanged(This,NewDisplayName,EventContext);
216 }
217 static FORCEINLINE HRESULT IAudioSessionEvents_OnIconPathChanged(IAudioSessionEvents* This,LPCWSTR NewIconPath,LPCGUID EventContext) {
218     return This->lpVtbl->OnIconPathChanged(This,NewIconPath,EventContext);
219 }
220 static FORCEINLINE HRESULT IAudioSessionEvents_OnSimpleVolumeChanged(IAudioSessionEvents* This,float NewVolume,WINBOOL NewMute,LPCGUID EventContext) {
221     return This->lpVtbl->OnSimpleVolumeChanged(This,NewVolume,NewMute,EventContext);
222 }
223 static FORCEINLINE HRESULT IAudioSessionEvents_OnChannelVolumeChanged(IAudioSessionEvents* This,DWORD ChannelCount,float NewChannelVolumeArray[],DWORD ChangedChannel,LPCGUID EventContext) {
224     return This->lpVtbl->OnChannelVolumeChanged(This,ChannelCount,NewChannelVolumeArray,ChangedChannel,EventContext);
225 }
226 static FORCEINLINE HRESULT IAudioSessionEvents_OnGroupingParamChanged(IAudioSessionEvents* This,LPCGUID NewGroupingParam,LPCGUID EventContext) {
227     return This->lpVtbl->OnGroupingParamChanged(This,NewGroupingParam,EventContext);
228 }
229 static FORCEINLINE HRESULT IAudioSessionEvents_OnStateChanged(IAudioSessionEvents* This,AudioSessionState NewState) {
230     return This->lpVtbl->OnStateChanged(This,NewState);
231 }
232 static FORCEINLINE HRESULT IAudioSessionEvents_OnSessionDisconnected(IAudioSessionEvents* This,AudioSessionDisconnectReason DisconnectReason) {
233     return This->lpVtbl->OnSessionDisconnected(This,DisconnectReason);
234 }
235 #endif
236 #endif
237 
238 #endif
239 
240 HRESULT STDMETHODCALLTYPE IAudioSessionEvents_OnDisplayNameChanged_Proxy(
241     IAudioSessionEvents* This,
242     LPCWSTR NewDisplayName,
243     LPCGUID EventContext);
244 void __RPC_STUB IAudioSessionEvents_OnDisplayNameChanged_Stub(
245     IRpcStubBuffer* This,
246     IRpcChannelBuffer* pRpcChannelBuffer,
247     PRPC_MESSAGE pRpcMessage,
248     DWORD* pdwStubPhase);
249 HRESULT STDMETHODCALLTYPE IAudioSessionEvents_OnIconPathChanged_Proxy(
250     IAudioSessionEvents* This,
251     LPCWSTR NewIconPath,
252     LPCGUID EventContext);
253 void __RPC_STUB IAudioSessionEvents_OnIconPathChanged_Stub(
254     IRpcStubBuffer* This,
255     IRpcChannelBuffer* pRpcChannelBuffer,
256     PRPC_MESSAGE pRpcMessage,
257     DWORD* pdwStubPhase);
258 HRESULT STDMETHODCALLTYPE IAudioSessionEvents_OnSimpleVolumeChanged_Proxy(
259     IAudioSessionEvents* This,
260     float NewVolume,
261     WINBOOL NewMute,
262     LPCGUID EventContext);
263 void __RPC_STUB IAudioSessionEvents_OnSimpleVolumeChanged_Stub(
264     IRpcStubBuffer* This,
265     IRpcChannelBuffer* pRpcChannelBuffer,
266     PRPC_MESSAGE pRpcMessage,
267     DWORD* pdwStubPhase);
268 HRESULT STDMETHODCALLTYPE IAudioSessionEvents_OnChannelVolumeChanged_Proxy(
269     IAudioSessionEvents* This,
270     DWORD ChannelCount,
271     float NewChannelVolumeArray[],
272     DWORD ChangedChannel,
273     LPCGUID EventContext);
274 void __RPC_STUB IAudioSessionEvents_OnChannelVolumeChanged_Stub(
275     IRpcStubBuffer* This,
276     IRpcChannelBuffer* pRpcChannelBuffer,
277     PRPC_MESSAGE pRpcMessage,
278     DWORD* pdwStubPhase);
279 HRESULT STDMETHODCALLTYPE IAudioSessionEvents_OnGroupingParamChanged_Proxy(
280     IAudioSessionEvents* This,
281     LPCGUID NewGroupingParam,
282     LPCGUID EventContext);
283 void __RPC_STUB IAudioSessionEvents_OnGroupingParamChanged_Stub(
284     IRpcStubBuffer* This,
285     IRpcChannelBuffer* pRpcChannelBuffer,
286     PRPC_MESSAGE pRpcMessage,
287     DWORD* pdwStubPhase);
288 HRESULT STDMETHODCALLTYPE IAudioSessionEvents_OnStateChanged_Proxy(
289     IAudioSessionEvents* This,
290     AudioSessionState NewState);
291 void __RPC_STUB IAudioSessionEvents_OnStateChanged_Stub(
292     IRpcStubBuffer* This,
293     IRpcChannelBuffer* pRpcChannelBuffer,
294     PRPC_MESSAGE pRpcMessage,
295     DWORD* pdwStubPhase);
296 HRESULT STDMETHODCALLTYPE IAudioSessionEvents_OnSessionDisconnected_Proxy(
297     IAudioSessionEvents* This,
298     AudioSessionDisconnectReason DisconnectReason);
299 void __RPC_STUB IAudioSessionEvents_OnSessionDisconnected_Stub(
300     IRpcStubBuffer* This,
301     IRpcChannelBuffer* pRpcChannelBuffer,
302     PRPC_MESSAGE pRpcMessage,
303     DWORD* pdwStubPhase);
304 
305 #endif  /* __IAudioSessionEvents_INTERFACE_DEFINED__ */
306 
307 
308 /*****************************************************************************
309  * IAudioSessionControl interface
310  */
311 #ifndef __IAudioSessionControl_INTERFACE_DEFINED__
312 #define __IAudioSessionControl_INTERFACE_DEFINED__
313 
314 DEFINE_GUID(IID_IAudioSessionControl, 0xf4b1a599, 0x7266, 0x4319, 0xa8,0xca, 0xe7,0x0a,0xcb,0x11,0xe8,0xcd);
315 #if defined(__cplusplus) && !defined(CINTERFACE)
316 MIDL_INTERFACE("f4b1a599-7266-4319-a8ca-e70acb11e8cd")
317 IAudioSessionControl : public IUnknown
318 {
319     virtual HRESULT STDMETHODCALLTYPE GetState(
320         AudioSessionState *pRetVal) = 0;
321 
322     virtual HRESULT STDMETHODCALLTYPE GetDisplayName(
323         LPWSTR *pRetVal) = 0;
324 
325     virtual HRESULT STDMETHODCALLTYPE SetDisplayName(
326         LPCWSTR Value,
327         LPCGUID EventContext) = 0;
328 
329     virtual HRESULT STDMETHODCALLTYPE GetIconPath(
330         LPWSTR *pRetVal) = 0;
331 
332     virtual HRESULT STDMETHODCALLTYPE SetIconPath(
333         LPCWSTR Value,
334         LPCGUID EventContext) = 0;
335 
336     virtual HRESULT STDMETHODCALLTYPE GetGroupingParam(
337         GUID *pRetVal) = 0;
338 
339     virtual HRESULT STDMETHODCALLTYPE SetGroupingParam(
340         LPCGUID Override,
341         LPCGUID EventContext) = 0;
342 
343     virtual HRESULT STDMETHODCALLTYPE RegisterAudioSessionNotification(
344         IAudioSessionEvents *NewNotifications) = 0;
345 
346     virtual HRESULT STDMETHODCALLTYPE UnregisterAudioSessionNotification(
347         IAudioSessionEvents *NewNotifications) = 0;
348 
349 };
350 #ifdef __CRT_UUID_DECL
351 __CRT_UUID_DECL(IAudioSessionControl, 0xf4b1a599, 0x7266, 0x4319, 0xa8,0xca, 0xe7,0x0a,0xcb,0x11,0xe8,0xcd)
352 #endif
353 #else
354 typedef struct IAudioSessionControlVtbl {
355     BEGIN_INTERFACE
356 
357     /*** IUnknown methods ***/
358     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
359         IAudioSessionControl* This,
360         REFIID riid,
361         void **ppvObject);
362 
363     ULONG (STDMETHODCALLTYPE *AddRef)(
364         IAudioSessionControl* This);
365 
366     ULONG (STDMETHODCALLTYPE *Release)(
367         IAudioSessionControl* This);
368 
369     /*** IAudioSessionControl methods ***/
370     HRESULT (STDMETHODCALLTYPE *GetState)(
371         IAudioSessionControl* This,
372         AudioSessionState *pRetVal);
373 
374     HRESULT (STDMETHODCALLTYPE *GetDisplayName)(
375         IAudioSessionControl* This,
376         LPWSTR *pRetVal);
377 
378     HRESULT (STDMETHODCALLTYPE *SetDisplayName)(
379         IAudioSessionControl* This,
380         LPCWSTR Value,
381         LPCGUID EventContext);
382 
383     HRESULT (STDMETHODCALLTYPE *GetIconPath)(
384         IAudioSessionControl* This,
385         LPWSTR *pRetVal);
386 
387     HRESULT (STDMETHODCALLTYPE *SetIconPath)(
388         IAudioSessionControl* This,
389         LPCWSTR Value,
390         LPCGUID EventContext);
391 
392     HRESULT (STDMETHODCALLTYPE *GetGroupingParam)(
393         IAudioSessionControl* This,
394         GUID *pRetVal);
395 
396     HRESULT (STDMETHODCALLTYPE *SetGroupingParam)(
397         IAudioSessionControl* This,
398         LPCGUID Override,
399         LPCGUID EventContext);
400 
401     HRESULT (STDMETHODCALLTYPE *RegisterAudioSessionNotification)(
402         IAudioSessionControl* This,
403         IAudioSessionEvents *NewNotifications);
404 
405     HRESULT (STDMETHODCALLTYPE *UnregisterAudioSessionNotification)(
406         IAudioSessionControl* This,
407         IAudioSessionEvents *NewNotifications);
408 
409     END_INTERFACE
410 } IAudioSessionControlVtbl;
411 interface IAudioSessionControl {
412     CONST_VTBL IAudioSessionControlVtbl* lpVtbl;
413 };
414 
415 #ifdef COBJMACROS
416 #ifndef WIDL_C_INLINE_WRAPPERS
417 /*** IUnknown methods ***/
418 #define IAudioSessionControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
419 #define IAudioSessionControl_AddRef(This) (This)->lpVtbl->AddRef(This)
420 #define IAudioSessionControl_Release(This) (This)->lpVtbl->Release(This)
421 /*** IAudioSessionControl methods ***/
422 #define IAudioSessionControl_GetState(This,pRetVal) (This)->lpVtbl->GetState(This,pRetVal)
423 #define IAudioSessionControl_GetDisplayName(This,pRetVal) (This)->lpVtbl->GetDisplayName(This,pRetVal)
424 #define IAudioSessionControl_SetDisplayName(This,Value,EventContext) (This)->lpVtbl->SetDisplayName(This,Value,EventContext)
425 #define IAudioSessionControl_GetIconPath(This,pRetVal) (This)->lpVtbl->GetIconPath(This,pRetVal)
426 #define IAudioSessionControl_SetIconPath(This,Value,EventContext) (This)->lpVtbl->SetIconPath(This,Value,EventContext)
427 #define IAudioSessionControl_GetGroupingParam(This,pRetVal) (This)->lpVtbl->GetGroupingParam(This,pRetVal)
428 #define IAudioSessionControl_SetGroupingParam(This,Override,EventContext) (This)->lpVtbl->SetGroupingParam(This,Override,EventContext)
429 #define IAudioSessionControl_RegisterAudioSessionNotification(This,NewNotifications) (This)->lpVtbl->RegisterAudioSessionNotification(This,NewNotifications)
430 #define IAudioSessionControl_UnregisterAudioSessionNotification(This,NewNotifications) (This)->lpVtbl->UnregisterAudioSessionNotification(This,NewNotifications)
431 #else
432 /*** IUnknown methods ***/
433 static FORCEINLINE HRESULT IAudioSessionControl_QueryInterface(IAudioSessionControl* This,REFIID riid,void **ppvObject) {
434     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
435 }
436 static FORCEINLINE ULONG IAudioSessionControl_AddRef(IAudioSessionControl* This) {
437     return This->lpVtbl->AddRef(This);
438 }
439 static FORCEINLINE ULONG IAudioSessionControl_Release(IAudioSessionControl* This) {
440     return This->lpVtbl->Release(This);
441 }
442 /*** IAudioSessionControl methods ***/
443 static FORCEINLINE HRESULT IAudioSessionControl_GetState(IAudioSessionControl* This,AudioSessionState *pRetVal) {
444     return This->lpVtbl->GetState(This,pRetVal);
445 }
446 static FORCEINLINE HRESULT IAudioSessionControl_GetDisplayName(IAudioSessionControl* This,LPWSTR *pRetVal) {
447     return This->lpVtbl->GetDisplayName(This,pRetVal);
448 }
449 static FORCEINLINE HRESULT IAudioSessionControl_SetDisplayName(IAudioSessionControl* This,LPCWSTR Value,LPCGUID EventContext) {
450     return This->lpVtbl->SetDisplayName(This,Value,EventContext);
451 }
452 static FORCEINLINE HRESULT IAudioSessionControl_GetIconPath(IAudioSessionControl* This,LPWSTR *pRetVal) {
453     return This->lpVtbl->GetIconPath(This,pRetVal);
454 }
455 static FORCEINLINE HRESULT IAudioSessionControl_SetIconPath(IAudioSessionControl* This,LPCWSTR Value,LPCGUID EventContext) {
456     return This->lpVtbl->SetIconPath(This,Value,EventContext);
457 }
458 static FORCEINLINE HRESULT IAudioSessionControl_GetGroupingParam(IAudioSessionControl* This,GUID *pRetVal) {
459     return This->lpVtbl->GetGroupingParam(This,pRetVal);
460 }
461 static FORCEINLINE HRESULT IAudioSessionControl_SetGroupingParam(IAudioSessionControl* This,LPCGUID Override,LPCGUID EventContext) {
462     return This->lpVtbl->SetGroupingParam(This,Override,EventContext);
463 }
464 static FORCEINLINE HRESULT IAudioSessionControl_RegisterAudioSessionNotification(IAudioSessionControl* This,IAudioSessionEvents *NewNotifications) {
465     return This->lpVtbl->RegisterAudioSessionNotification(This,NewNotifications);
466 }
467 static FORCEINLINE HRESULT IAudioSessionControl_UnregisterAudioSessionNotification(IAudioSessionControl* This,IAudioSessionEvents *NewNotifications) {
468     return This->lpVtbl->UnregisterAudioSessionNotification(This,NewNotifications);
469 }
470 #endif
471 #endif
472 
473 #endif
474 
475 HRESULT STDMETHODCALLTYPE IAudioSessionControl_GetState_Proxy(
476     IAudioSessionControl* This,
477     AudioSessionState *pRetVal);
478 void __RPC_STUB IAudioSessionControl_GetState_Stub(
479     IRpcStubBuffer* This,
480     IRpcChannelBuffer* pRpcChannelBuffer,
481     PRPC_MESSAGE pRpcMessage,
482     DWORD* pdwStubPhase);
483 HRESULT STDMETHODCALLTYPE IAudioSessionControl_GetDisplayName_Proxy(
484     IAudioSessionControl* This,
485     LPWSTR *pRetVal);
486 void __RPC_STUB IAudioSessionControl_GetDisplayName_Stub(
487     IRpcStubBuffer* This,
488     IRpcChannelBuffer* pRpcChannelBuffer,
489     PRPC_MESSAGE pRpcMessage,
490     DWORD* pdwStubPhase);
491 HRESULT STDMETHODCALLTYPE IAudioSessionControl_SetDisplayName_Proxy(
492     IAudioSessionControl* This,
493     LPCWSTR Value,
494     LPCGUID EventContext);
495 void __RPC_STUB IAudioSessionControl_SetDisplayName_Stub(
496     IRpcStubBuffer* This,
497     IRpcChannelBuffer* pRpcChannelBuffer,
498     PRPC_MESSAGE pRpcMessage,
499     DWORD* pdwStubPhase);
500 HRESULT STDMETHODCALLTYPE IAudioSessionControl_GetIconPath_Proxy(
501     IAudioSessionControl* This,
502     LPWSTR *pRetVal);
503 void __RPC_STUB IAudioSessionControl_GetIconPath_Stub(
504     IRpcStubBuffer* This,
505     IRpcChannelBuffer* pRpcChannelBuffer,
506     PRPC_MESSAGE pRpcMessage,
507     DWORD* pdwStubPhase);
508 HRESULT STDMETHODCALLTYPE IAudioSessionControl_SetIconPath_Proxy(
509     IAudioSessionControl* This,
510     LPCWSTR Value,
511     LPCGUID EventContext);
512 void __RPC_STUB IAudioSessionControl_SetIconPath_Stub(
513     IRpcStubBuffer* This,
514     IRpcChannelBuffer* pRpcChannelBuffer,
515     PRPC_MESSAGE pRpcMessage,
516     DWORD* pdwStubPhase);
517 HRESULT STDMETHODCALLTYPE IAudioSessionControl_GetGroupingParam_Proxy(
518     IAudioSessionControl* This,
519     GUID *pRetVal);
520 void __RPC_STUB IAudioSessionControl_GetGroupingParam_Stub(
521     IRpcStubBuffer* This,
522     IRpcChannelBuffer* pRpcChannelBuffer,
523     PRPC_MESSAGE pRpcMessage,
524     DWORD* pdwStubPhase);
525 HRESULT STDMETHODCALLTYPE IAudioSessionControl_SetGroupingParam_Proxy(
526     IAudioSessionControl* This,
527     LPCGUID Override,
528     LPCGUID EventContext);
529 void __RPC_STUB IAudioSessionControl_SetGroupingParam_Stub(
530     IRpcStubBuffer* This,
531     IRpcChannelBuffer* pRpcChannelBuffer,
532     PRPC_MESSAGE pRpcMessage,
533     DWORD* pdwStubPhase);
534 HRESULT STDMETHODCALLTYPE IAudioSessionControl_RegisterAudioSessionNotification_Proxy(
535     IAudioSessionControl* This,
536     IAudioSessionEvents *NewNotifications);
537 void __RPC_STUB IAudioSessionControl_RegisterAudioSessionNotification_Stub(
538     IRpcStubBuffer* This,
539     IRpcChannelBuffer* pRpcChannelBuffer,
540     PRPC_MESSAGE pRpcMessage,
541     DWORD* pdwStubPhase);
542 HRESULT STDMETHODCALLTYPE IAudioSessionControl_UnregisterAudioSessionNotification_Proxy(
543     IAudioSessionControl* This,
544     IAudioSessionEvents *NewNotifications);
545 void __RPC_STUB IAudioSessionControl_UnregisterAudioSessionNotification_Stub(
546     IRpcStubBuffer* This,
547     IRpcChannelBuffer* pRpcChannelBuffer,
548     PRPC_MESSAGE pRpcMessage,
549     DWORD* pdwStubPhase);
550 
551 #endif  /* __IAudioSessionControl_INTERFACE_DEFINED__ */
552 
553 #endif
554 
555 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
556 /*****************************************************************************
557  * IAudioSessionControl2 interface
558  */
559 #ifndef __IAudioSessionControl2_INTERFACE_DEFINED__
560 #define __IAudioSessionControl2_INTERFACE_DEFINED__
561 
562 DEFINE_GUID(IID_IAudioSessionControl2, 0xbfb7ff88, 0x7239, 0x4fc9, 0x8f,0xa2, 0x07,0xc9,0x50,0xbe,0x9c,0x6d);
563 #if defined(__cplusplus) && !defined(CINTERFACE)
564 MIDL_INTERFACE("bfb7ff88-7239-4fc9-8fa2-07c950be9c6d")
565 IAudioSessionControl2 : public IAudioSessionControl
566 {
567     virtual HRESULT STDMETHODCALLTYPE GetSessionIdentifier(
568         LPWSTR *pRetVal) = 0;
569 
570     virtual HRESULT STDMETHODCALLTYPE GetSessionInstanceIdentifier(
571         LPWSTR *pRetVal) = 0;
572 
573     virtual HRESULT STDMETHODCALLTYPE GetProcessId(
574         DWORD *pRetVal) = 0;
575 
576     virtual HRESULT STDMETHODCALLTYPE IsSystemSoundsSession(
577         ) = 0;
578 
579     virtual HRESULT STDMETHODCALLTYPE SetDuckingPreference(
580         WINBOOL optOut) = 0;
581 
582 };
583 #ifdef __CRT_UUID_DECL
584 __CRT_UUID_DECL(IAudioSessionControl2, 0xbfb7ff88, 0x7239, 0x4fc9, 0x8f,0xa2, 0x07,0xc9,0x50,0xbe,0x9c,0x6d)
585 #endif
586 #else
587 typedef struct IAudioSessionControl2Vtbl {
588     BEGIN_INTERFACE
589 
590     /*** IUnknown methods ***/
591     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
592         IAudioSessionControl2* This,
593         REFIID riid,
594         void **ppvObject);
595 
596     ULONG (STDMETHODCALLTYPE *AddRef)(
597         IAudioSessionControl2* This);
598 
599     ULONG (STDMETHODCALLTYPE *Release)(
600         IAudioSessionControl2* This);
601 
602     /*** IAudioSessionControl methods ***/
603     HRESULT (STDMETHODCALLTYPE *GetState)(
604         IAudioSessionControl2* This,
605         AudioSessionState *pRetVal);
606 
607     HRESULT (STDMETHODCALLTYPE *GetDisplayName)(
608         IAudioSessionControl2* This,
609         LPWSTR *pRetVal);
610 
611     HRESULT (STDMETHODCALLTYPE *SetDisplayName)(
612         IAudioSessionControl2* This,
613         LPCWSTR Value,
614         LPCGUID EventContext);
615 
616     HRESULT (STDMETHODCALLTYPE *GetIconPath)(
617         IAudioSessionControl2* This,
618         LPWSTR *pRetVal);
619 
620     HRESULT (STDMETHODCALLTYPE *SetIconPath)(
621         IAudioSessionControl2* This,
622         LPCWSTR Value,
623         LPCGUID EventContext);
624 
625     HRESULT (STDMETHODCALLTYPE *GetGroupingParam)(
626         IAudioSessionControl2* This,
627         GUID *pRetVal);
628 
629     HRESULT (STDMETHODCALLTYPE *SetGroupingParam)(
630         IAudioSessionControl2* This,
631         LPCGUID Override,
632         LPCGUID EventContext);
633 
634     HRESULT (STDMETHODCALLTYPE *RegisterAudioSessionNotification)(
635         IAudioSessionControl2* This,
636         IAudioSessionEvents *NewNotifications);
637 
638     HRESULT (STDMETHODCALLTYPE *UnregisterAudioSessionNotification)(
639         IAudioSessionControl2* This,
640         IAudioSessionEvents *NewNotifications);
641 
642     /*** IAudioSessionControl2 methods ***/
643     HRESULT (STDMETHODCALLTYPE *GetSessionIdentifier)(
644         IAudioSessionControl2* This,
645         LPWSTR *pRetVal);
646 
647     HRESULT (STDMETHODCALLTYPE *GetSessionInstanceIdentifier)(
648         IAudioSessionControl2* This,
649         LPWSTR *pRetVal);
650 
651     HRESULT (STDMETHODCALLTYPE *GetProcessId)(
652         IAudioSessionControl2* This,
653         DWORD *pRetVal);
654 
655     HRESULT (STDMETHODCALLTYPE *IsSystemSoundsSession)(
656         IAudioSessionControl2* This);
657 
658     HRESULT (STDMETHODCALLTYPE *SetDuckingPreference)(
659         IAudioSessionControl2* This,
660         WINBOOL optOut);
661 
662     END_INTERFACE
663 } IAudioSessionControl2Vtbl;
664 interface IAudioSessionControl2 {
665     CONST_VTBL IAudioSessionControl2Vtbl* lpVtbl;
666 };
667 
668 #ifdef COBJMACROS
669 #ifndef WIDL_C_INLINE_WRAPPERS
670 /*** IUnknown methods ***/
671 #define IAudioSessionControl2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
672 #define IAudioSessionControl2_AddRef(This) (This)->lpVtbl->AddRef(This)
673 #define IAudioSessionControl2_Release(This) (This)->lpVtbl->Release(This)
674 /*** IAudioSessionControl methods ***/
675 #define IAudioSessionControl2_GetState(This,pRetVal) (This)->lpVtbl->GetState(This,pRetVal)
676 #define IAudioSessionControl2_GetDisplayName(This,pRetVal) (This)->lpVtbl->GetDisplayName(This,pRetVal)
677 #define IAudioSessionControl2_SetDisplayName(This,Value,EventContext) (This)->lpVtbl->SetDisplayName(This,Value,EventContext)
678 #define IAudioSessionControl2_GetIconPath(This,pRetVal) (This)->lpVtbl->GetIconPath(This,pRetVal)
679 #define IAudioSessionControl2_SetIconPath(This,Value,EventContext) (This)->lpVtbl->SetIconPath(This,Value,EventContext)
680 #define IAudioSessionControl2_GetGroupingParam(This,pRetVal) (This)->lpVtbl->GetGroupingParam(This,pRetVal)
681 #define IAudioSessionControl2_SetGroupingParam(This,Override,EventContext) (This)->lpVtbl->SetGroupingParam(This,Override,EventContext)
682 #define IAudioSessionControl2_RegisterAudioSessionNotification(This,NewNotifications) (This)->lpVtbl->RegisterAudioSessionNotification(This,NewNotifications)
683 #define IAudioSessionControl2_UnregisterAudioSessionNotification(This,NewNotifications) (This)->lpVtbl->UnregisterAudioSessionNotification(This,NewNotifications)
684 /*** IAudioSessionControl2 methods ***/
685 #define IAudioSessionControl2_GetSessionIdentifier(This,pRetVal) (This)->lpVtbl->GetSessionIdentifier(This,pRetVal)
686 #define IAudioSessionControl2_GetSessionInstanceIdentifier(This,pRetVal) (This)->lpVtbl->GetSessionInstanceIdentifier(This,pRetVal)
687 #define IAudioSessionControl2_GetProcessId(This,pRetVal) (This)->lpVtbl->GetProcessId(This,pRetVal)
688 #define IAudioSessionControl2_IsSystemSoundsSession(This) (This)->lpVtbl->IsSystemSoundsSession(This)
689 #define IAudioSessionControl2_SetDuckingPreference(This,optOut) (This)->lpVtbl->SetDuckingPreference(This,optOut)
690 #else
691 /*** IUnknown methods ***/
692 static FORCEINLINE HRESULT IAudioSessionControl2_QueryInterface(IAudioSessionControl2* This,REFIID riid,void **ppvObject) {
693     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
694 }
695 static FORCEINLINE ULONG IAudioSessionControl2_AddRef(IAudioSessionControl2* This) {
696     return This->lpVtbl->AddRef(This);
697 }
698 static FORCEINLINE ULONG IAudioSessionControl2_Release(IAudioSessionControl2* This) {
699     return This->lpVtbl->Release(This);
700 }
701 /*** IAudioSessionControl methods ***/
702 static FORCEINLINE HRESULT IAudioSessionControl2_GetState(IAudioSessionControl2* This,AudioSessionState *pRetVal) {
703     return This->lpVtbl->GetState(This,pRetVal);
704 }
705 static FORCEINLINE HRESULT IAudioSessionControl2_GetDisplayName(IAudioSessionControl2* This,LPWSTR *pRetVal) {
706     return This->lpVtbl->GetDisplayName(This,pRetVal);
707 }
708 static FORCEINLINE HRESULT IAudioSessionControl2_SetDisplayName(IAudioSessionControl2* This,LPCWSTR Value,LPCGUID EventContext) {
709     return This->lpVtbl->SetDisplayName(This,Value,EventContext);
710 }
711 static FORCEINLINE HRESULT IAudioSessionControl2_GetIconPath(IAudioSessionControl2* This,LPWSTR *pRetVal) {
712     return This->lpVtbl->GetIconPath(This,pRetVal);
713 }
714 static FORCEINLINE HRESULT IAudioSessionControl2_SetIconPath(IAudioSessionControl2* This,LPCWSTR Value,LPCGUID EventContext) {
715     return This->lpVtbl->SetIconPath(This,Value,EventContext);
716 }
717 static FORCEINLINE HRESULT IAudioSessionControl2_GetGroupingParam(IAudioSessionControl2* This,GUID *pRetVal) {
718     return This->lpVtbl->GetGroupingParam(This,pRetVal);
719 }
720 static FORCEINLINE HRESULT IAudioSessionControl2_SetGroupingParam(IAudioSessionControl2* This,LPCGUID Override,LPCGUID EventContext) {
721     return This->lpVtbl->SetGroupingParam(This,Override,EventContext);
722 }
723 static FORCEINLINE HRESULT IAudioSessionControl2_RegisterAudioSessionNotification(IAudioSessionControl2* This,IAudioSessionEvents *NewNotifications) {
724     return This->lpVtbl->RegisterAudioSessionNotification(This,NewNotifications);
725 }
726 static FORCEINLINE HRESULT IAudioSessionControl2_UnregisterAudioSessionNotification(IAudioSessionControl2* This,IAudioSessionEvents *NewNotifications) {
727     return This->lpVtbl->UnregisterAudioSessionNotification(This,NewNotifications);
728 }
729 /*** IAudioSessionControl2 methods ***/
730 static FORCEINLINE HRESULT IAudioSessionControl2_GetSessionIdentifier(IAudioSessionControl2* This,LPWSTR *pRetVal) {
731     return This->lpVtbl->GetSessionIdentifier(This,pRetVal);
732 }
733 static FORCEINLINE HRESULT IAudioSessionControl2_GetSessionInstanceIdentifier(IAudioSessionControl2* This,LPWSTR *pRetVal) {
734     return This->lpVtbl->GetSessionInstanceIdentifier(This,pRetVal);
735 }
736 static FORCEINLINE HRESULT IAudioSessionControl2_GetProcessId(IAudioSessionControl2* This,DWORD *pRetVal) {
737     return This->lpVtbl->GetProcessId(This,pRetVal);
738 }
739 static FORCEINLINE HRESULT IAudioSessionControl2_IsSystemSoundsSession(IAudioSessionControl2* This) {
740     return This->lpVtbl->IsSystemSoundsSession(This);
741 }
742 static FORCEINLINE HRESULT IAudioSessionControl2_SetDuckingPreference(IAudioSessionControl2* This,WINBOOL optOut) {
743     return This->lpVtbl->SetDuckingPreference(This,optOut);
744 }
745 #endif
746 #endif
747 
748 #endif
749 
750 HRESULT STDMETHODCALLTYPE IAudioSessionControl2_GetSessionIdentifier_Proxy(
751     IAudioSessionControl2* This,
752     LPWSTR *pRetVal);
753 void __RPC_STUB IAudioSessionControl2_GetSessionIdentifier_Stub(
754     IRpcStubBuffer* This,
755     IRpcChannelBuffer* pRpcChannelBuffer,
756     PRPC_MESSAGE pRpcMessage,
757     DWORD* pdwStubPhase);
758 HRESULT STDMETHODCALLTYPE IAudioSessionControl2_GetSessionInstanceIdentifier_Proxy(
759     IAudioSessionControl2* This,
760     LPWSTR *pRetVal);
761 void __RPC_STUB IAudioSessionControl2_GetSessionInstanceIdentifier_Stub(
762     IRpcStubBuffer* This,
763     IRpcChannelBuffer* pRpcChannelBuffer,
764     PRPC_MESSAGE pRpcMessage,
765     DWORD* pdwStubPhase);
766 HRESULT STDMETHODCALLTYPE IAudioSessionControl2_GetProcessId_Proxy(
767     IAudioSessionControl2* This,
768     DWORD *pRetVal);
769 void __RPC_STUB IAudioSessionControl2_GetProcessId_Stub(
770     IRpcStubBuffer* This,
771     IRpcChannelBuffer* pRpcChannelBuffer,
772     PRPC_MESSAGE pRpcMessage,
773     DWORD* pdwStubPhase);
774 HRESULT STDMETHODCALLTYPE IAudioSessionControl2_IsSystemSoundsSession_Proxy(
775     IAudioSessionControl2* This);
776 void __RPC_STUB IAudioSessionControl2_IsSystemSoundsSession_Stub(
777     IRpcStubBuffer* This,
778     IRpcChannelBuffer* pRpcChannelBuffer,
779     PRPC_MESSAGE pRpcMessage,
780     DWORD* pdwStubPhase);
781 HRESULT STDMETHODCALLTYPE IAudioSessionControl2_SetDuckingPreference_Proxy(
782     IAudioSessionControl2* This,
783     WINBOOL optOut);
784 void __RPC_STUB IAudioSessionControl2_SetDuckingPreference_Stub(
785     IRpcStubBuffer* This,
786     IRpcChannelBuffer* pRpcChannelBuffer,
787     PRPC_MESSAGE pRpcMessage,
788     DWORD* pdwStubPhase);
789 
790 #endif  /* __IAudioSessionControl2_INTERFACE_DEFINED__ */
791 
792 
793 /*****************************************************************************
794  * IAudioSessionManager interface
795  */
796 #ifndef __IAudioSessionManager_INTERFACE_DEFINED__
797 #define __IAudioSessionManager_INTERFACE_DEFINED__
798 
799 DEFINE_GUID(IID_IAudioSessionManager, 0xbfa971f1, 0x4d5e, 0x40bb, 0x93,0x5e, 0x96,0x70,0x39,0xbf,0xbe,0xe4);
800 #if defined(__cplusplus) && !defined(CINTERFACE)
801 MIDL_INTERFACE("bfa971f1-4d5e-40bb-935e-967039bfbee4")
802 IAudioSessionManager : public IUnknown
803 {
804     virtual HRESULT STDMETHODCALLTYPE GetAudioSessionControl(
805         LPCGUID AudioSessionGuid,
806         DWORD StreamFlags,
807         IAudioSessionControl **SessionControl) = 0;
808 
809     virtual HRESULT STDMETHODCALLTYPE GetSimpleAudioVolume(
810         LPCGUID AudioSessionGuid,
811         DWORD StreamFlags,
812         ISimpleAudioVolume **AudioVolume) = 0;
813 
814 };
815 #ifdef __CRT_UUID_DECL
816 __CRT_UUID_DECL(IAudioSessionManager, 0xbfa971f1, 0x4d5e, 0x40bb, 0x93,0x5e, 0x96,0x70,0x39,0xbf,0xbe,0xe4)
817 #endif
818 #else
819 typedef struct IAudioSessionManagerVtbl {
820     BEGIN_INTERFACE
821 
822     /*** IUnknown methods ***/
823     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
824         IAudioSessionManager* This,
825         REFIID riid,
826         void **ppvObject);
827 
828     ULONG (STDMETHODCALLTYPE *AddRef)(
829         IAudioSessionManager* This);
830 
831     ULONG (STDMETHODCALLTYPE *Release)(
832         IAudioSessionManager* This);
833 
834     /*** IAudioSessionManager methods ***/
835     HRESULT (STDMETHODCALLTYPE *GetAudioSessionControl)(
836         IAudioSessionManager* This,
837         LPCGUID AudioSessionGuid,
838         DWORD StreamFlags,
839         IAudioSessionControl **SessionControl);
840 
841     HRESULT (STDMETHODCALLTYPE *GetSimpleAudioVolume)(
842         IAudioSessionManager* This,
843         LPCGUID AudioSessionGuid,
844         DWORD StreamFlags,
845         ISimpleAudioVolume **AudioVolume);
846 
847     END_INTERFACE
848 } IAudioSessionManagerVtbl;
849 interface IAudioSessionManager {
850     CONST_VTBL IAudioSessionManagerVtbl* lpVtbl;
851 };
852 
853 #ifdef COBJMACROS
854 #ifndef WIDL_C_INLINE_WRAPPERS
855 /*** IUnknown methods ***/
856 #define IAudioSessionManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
857 #define IAudioSessionManager_AddRef(This) (This)->lpVtbl->AddRef(This)
858 #define IAudioSessionManager_Release(This) (This)->lpVtbl->Release(This)
859 /*** IAudioSessionManager methods ***/
860 #define IAudioSessionManager_GetAudioSessionControl(This,AudioSessionGuid,StreamFlags,SessionControl) (This)->lpVtbl->GetAudioSessionControl(This,AudioSessionGuid,StreamFlags,SessionControl)
861 #define IAudioSessionManager_GetSimpleAudioVolume(This,AudioSessionGuid,StreamFlags,AudioVolume) (This)->lpVtbl->GetSimpleAudioVolume(This,AudioSessionGuid,StreamFlags,AudioVolume)
862 #else
863 /*** IUnknown methods ***/
864 static FORCEINLINE HRESULT IAudioSessionManager_QueryInterface(IAudioSessionManager* This,REFIID riid,void **ppvObject) {
865     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
866 }
867 static FORCEINLINE ULONG IAudioSessionManager_AddRef(IAudioSessionManager* This) {
868     return This->lpVtbl->AddRef(This);
869 }
870 static FORCEINLINE ULONG IAudioSessionManager_Release(IAudioSessionManager* This) {
871     return This->lpVtbl->Release(This);
872 }
873 /*** IAudioSessionManager methods ***/
874 static FORCEINLINE HRESULT IAudioSessionManager_GetAudioSessionControl(IAudioSessionManager* This,LPCGUID AudioSessionGuid,DWORD StreamFlags,IAudioSessionControl **SessionControl) {
875     return This->lpVtbl->GetAudioSessionControl(This,AudioSessionGuid,StreamFlags,SessionControl);
876 }
877 static FORCEINLINE HRESULT IAudioSessionManager_GetSimpleAudioVolume(IAudioSessionManager* This,LPCGUID AudioSessionGuid,DWORD StreamFlags,ISimpleAudioVolume **AudioVolume) {
878     return This->lpVtbl->GetSimpleAudioVolume(This,AudioSessionGuid,StreamFlags,AudioVolume);
879 }
880 #endif
881 #endif
882 
883 #endif
884 
885 HRESULT STDMETHODCALLTYPE IAudioSessionManager_GetAudioSessionControl_Proxy(
886     IAudioSessionManager* This,
887     LPCGUID AudioSessionGuid,
888     DWORD StreamFlags,
889     IAudioSessionControl **SessionControl);
890 void __RPC_STUB IAudioSessionManager_GetAudioSessionControl_Stub(
891     IRpcStubBuffer* This,
892     IRpcChannelBuffer* pRpcChannelBuffer,
893     PRPC_MESSAGE pRpcMessage,
894     DWORD* pdwStubPhase);
895 HRESULT STDMETHODCALLTYPE IAudioSessionManager_GetSimpleAudioVolume_Proxy(
896     IAudioSessionManager* This,
897     LPCGUID AudioSessionGuid,
898     DWORD StreamFlags,
899     ISimpleAudioVolume **AudioVolume);
900 void __RPC_STUB IAudioSessionManager_GetSimpleAudioVolume_Stub(
901     IRpcStubBuffer* This,
902     IRpcChannelBuffer* pRpcChannelBuffer,
903     PRPC_MESSAGE pRpcMessage,
904     DWORD* pdwStubPhase);
905 
906 #endif  /* __IAudioSessionManager_INTERFACE_DEFINED__ */
907 
908 
909 /*****************************************************************************
910  * IAudioVolumeDuckNotification interface
911  */
912 #ifndef __IAudioVolumeDuckNotification_INTERFACE_DEFINED__
913 #define __IAudioVolumeDuckNotification_INTERFACE_DEFINED__
914 
915 DEFINE_GUID(IID_IAudioVolumeDuckNotification, 0xc3b284d4, 0x6d39, 0x4359, 0xb3,0xcf, 0xb5,0x6d,0xdb,0x3b,0xb3,0x9c);
916 #if defined(__cplusplus) && !defined(CINTERFACE)
917 MIDL_INTERFACE("c3b284d4-6d39-4359-b3cf-b56ddb3bb39c")
918 IAudioVolumeDuckNotification : public IUnknown
919 {
920     virtual HRESULT STDMETHODCALLTYPE OnVolumeDuckNotification(
921         LPCWSTR sessionID,
922         UINT32 countCommunicationSessions) = 0;
923 
924     virtual HRESULT STDMETHODCALLTYPE OnVolumeUnduckNotification(
925         LPCWSTR sessionID) = 0;
926 
927 };
928 #ifdef __CRT_UUID_DECL
929 __CRT_UUID_DECL(IAudioVolumeDuckNotification, 0xc3b284d4, 0x6d39, 0x4359, 0xb3,0xcf, 0xb5,0x6d,0xdb,0x3b,0xb3,0x9c)
930 #endif
931 #else
932 typedef struct IAudioVolumeDuckNotificationVtbl {
933     BEGIN_INTERFACE
934 
935     /*** IUnknown methods ***/
936     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
937         IAudioVolumeDuckNotification* This,
938         REFIID riid,
939         void **ppvObject);
940 
941     ULONG (STDMETHODCALLTYPE *AddRef)(
942         IAudioVolumeDuckNotification* This);
943 
944     ULONG (STDMETHODCALLTYPE *Release)(
945         IAudioVolumeDuckNotification* This);
946 
947     /*** IAudioVolumeDuckNotification methods ***/
948     HRESULT (STDMETHODCALLTYPE *OnVolumeDuckNotification)(
949         IAudioVolumeDuckNotification* This,
950         LPCWSTR sessionID,
951         UINT32 countCommunicationSessions);
952 
953     HRESULT (STDMETHODCALLTYPE *OnVolumeUnduckNotification)(
954         IAudioVolumeDuckNotification* This,
955         LPCWSTR sessionID);
956 
957     END_INTERFACE
958 } IAudioVolumeDuckNotificationVtbl;
959 interface IAudioVolumeDuckNotification {
960     CONST_VTBL IAudioVolumeDuckNotificationVtbl* lpVtbl;
961 };
962 
963 #ifdef COBJMACROS
964 #ifndef WIDL_C_INLINE_WRAPPERS
965 /*** IUnknown methods ***/
966 #define IAudioVolumeDuckNotification_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
967 #define IAudioVolumeDuckNotification_AddRef(This) (This)->lpVtbl->AddRef(This)
968 #define IAudioVolumeDuckNotification_Release(This) (This)->lpVtbl->Release(This)
969 /*** IAudioVolumeDuckNotification methods ***/
970 #define IAudioVolumeDuckNotification_OnVolumeDuckNotification(This,sessionID,countCommunicationSessions) (This)->lpVtbl->OnVolumeDuckNotification(This,sessionID,countCommunicationSessions)
971 #define IAudioVolumeDuckNotification_OnVolumeUnduckNotification(This,sessionID) (This)->lpVtbl->OnVolumeUnduckNotification(This,sessionID)
972 #else
973 /*** IUnknown methods ***/
974 static FORCEINLINE HRESULT IAudioVolumeDuckNotification_QueryInterface(IAudioVolumeDuckNotification* This,REFIID riid,void **ppvObject) {
975     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
976 }
977 static FORCEINLINE ULONG IAudioVolumeDuckNotification_AddRef(IAudioVolumeDuckNotification* This) {
978     return This->lpVtbl->AddRef(This);
979 }
980 static FORCEINLINE ULONG IAudioVolumeDuckNotification_Release(IAudioVolumeDuckNotification* This) {
981     return This->lpVtbl->Release(This);
982 }
983 /*** IAudioVolumeDuckNotification methods ***/
984 static FORCEINLINE HRESULT IAudioVolumeDuckNotification_OnVolumeDuckNotification(IAudioVolumeDuckNotification* This,LPCWSTR sessionID,UINT32 countCommunicationSessions) {
985     return This->lpVtbl->OnVolumeDuckNotification(This,sessionID,countCommunicationSessions);
986 }
987 static FORCEINLINE HRESULT IAudioVolumeDuckNotification_OnVolumeUnduckNotification(IAudioVolumeDuckNotification* This,LPCWSTR sessionID) {
988     return This->lpVtbl->OnVolumeUnduckNotification(This,sessionID);
989 }
990 #endif
991 #endif
992 
993 #endif
994 
995 HRESULT STDMETHODCALLTYPE IAudioVolumeDuckNotification_OnVolumeDuckNotification_Proxy(
996     IAudioVolumeDuckNotification* This,
997     LPCWSTR sessionID,
998     UINT32 countCommunicationSessions);
999 void __RPC_STUB IAudioVolumeDuckNotification_OnVolumeDuckNotification_Stub(
1000     IRpcStubBuffer* This,
1001     IRpcChannelBuffer* pRpcChannelBuffer,
1002     PRPC_MESSAGE pRpcMessage,
1003     DWORD* pdwStubPhase);
1004 HRESULT STDMETHODCALLTYPE IAudioVolumeDuckNotification_OnVolumeUnduckNotification_Proxy(
1005     IAudioVolumeDuckNotification* This,
1006     LPCWSTR sessionID);
1007 void __RPC_STUB IAudioVolumeDuckNotification_OnVolumeUnduckNotification_Stub(
1008     IRpcStubBuffer* This,
1009     IRpcChannelBuffer* pRpcChannelBuffer,
1010     PRPC_MESSAGE pRpcMessage,
1011     DWORD* pdwStubPhase);
1012 
1013 #endif  /* __IAudioVolumeDuckNotification_INTERFACE_DEFINED__ */
1014 
1015 
1016 /*****************************************************************************
1017  * IAudioSessionNotification interface
1018  */
1019 #ifndef __IAudioSessionNotification_INTERFACE_DEFINED__
1020 #define __IAudioSessionNotification_INTERFACE_DEFINED__
1021 
1022 DEFINE_GUID(IID_IAudioSessionNotification, 0x641dd20b, 0x4d41, 0x49cc, 0xab,0xa3, 0x17,0x4b,0x94,0x77,0xbb,0x08);
1023 #if defined(__cplusplus) && !defined(CINTERFACE)
1024 MIDL_INTERFACE("641dd20b-4d41-49cc-aba3-174b9477bb08")
1025 IAudioSessionNotification : public IUnknown
1026 {
1027     virtual HRESULT STDMETHODCALLTYPE OnSessionCreated(
1028         IAudioSessionControl *NewSession) = 0;
1029 
1030 };
1031 #ifdef __CRT_UUID_DECL
1032 __CRT_UUID_DECL(IAudioSessionNotification, 0x641dd20b, 0x4d41, 0x49cc, 0xab,0xa3, 0x17,0x4b,0x94,0x77,0xbb,0x08)
1033 #endif
1034 #else
1035 typedef struct IAudioSessionNotificationVtbl {
1036     BEGIN_INTERFACE
1037 
1038     /*** IUnknown methods ***/
1039     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1040         IAudioSessionNotification* This,
1041         REFIID riid,
1042         void **ppvObject);
1043 
1044     ULONG (STDMETHODCALLTYPE *AddRef)(
1045         IAudioSessionNotification* This);
1046 
1047     ULONG (STDMETHODCALLTYPE *Release)(
1048         IAudioSessionNotification* This);
1049 
1050     /*** IAudioSessionNotification methods ***/
1051     HRESULT (STDMETHODCALLTYPE *OnSessionCreated)(
1052         IAudioSessionNotification* This,
1053         IAudioSessionControl *NewSession);
1054 
1055     END_INTERFACE
1056 } IAudioSessionNotificationVtbl;
1057 interface IAudioSessionNotification {
1058     CONST_VTBL IAudioSessionNotificationVtbl* lpVtbl;
1059 };
1060 
1061 #ifdef COBJMACROS
1062 #ifndef WIDL_C_INLINE_WRAPPERS
1063 /*** IUnknown methods ***/
1064 #define IAudioSessionNotification_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1065 #define IAudioSessionNotification_AddRef(This) (This)->lpVtbl->AddRef(This)
1066 #define IAudioSessionNotification_Release(This) (This)->lpVtbl->Release(This)
1067 /*** IAudioSessionNotification methods ***/
1068 #define IAudioSessionNotification_OnSessionCreated(This,NewSession) (This)->lpVtbl->OnSessionCreated(This,NewSession)
1069 #else
1070 /*** IUnknown methods ***/
1071 static FORCEINLINE HRESULT IAudioSessionNotification_QueryInterface(IAudioSessionNotification* This,REFIID riid,void **ppvObject) {
1072     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1073 }
1074 static FORCEINLINE ULONG IAudioSessionNotification_AddRef(IAudioSessionNotification* This) {
1075     return This->lpVtbl->AddRef(This);
1076 }
1077 static FORCEINLINE ULONG IAudioSessionNotification_Release(IAudioSessionNotification* This) {
1078     return This->lpVtbl->Release(This);
1079 }
1080 /*** IAudioSessionNotification methods ***/
1081 static FORCEINLINE HRESULT IAudioSessionNotification_OnSessionCreated(IAudioSessionNotification* This,IAudioSessionControl *NewSession) {
1082     return This->lpVtbl->OnSessionCreated(This,NewSession);
1083 }
1084 #endif
1085 #endif
1086 
1087 #endif
1088 
1089 HRESULT STDMETHODCALLTYPE IAudioSessionNotification_OnSessionCreated_Proxy(
1090     IAudioSessionNotification* This,
1091     IAudioSessionControl *NewSession);
1092 void __RPC_STUB IAudioSessionNotification_OnSessionCreated_Stub(
1093     IRpcStubBuffer* This,
1094     IRpcChannelBuffer* pRpcChannelBuffer,
1095     PRPC_MESSAGE pRpcMessage,
1096     DWORD* pdwStubPhase);
1097 
1098 #endif  /* __IAudioSessionNotification_INTERFACE_DEFINED__ */
1099 
1100 
1101 /*****************************************************************************
1102  * IAudioSessionEnumerator interface
1103  */
1104 #ifndef __IAudioSessionEnumerator_INTERFACE_DEFINED__
1105 #define __IAudioSessionEnumerator_INTERFACE_DEFINED__
1106 
1107 DEFINE_GUID(IID_IAudioSessionEnumerator, 0xe2f5bb11, 0x0570, 0x40ca, 0xac,0xdd, 0x3a,0xa0,0x12,0x77,0xde,0xe8);
1108 #if defined(__cplusplus) && !defined(CINTERFACE)
1109 MIDL_INTERFACE("e2f5bb11-0570-40ca-acdd-3aa01277dee8")
1110 IAudioSessionEnumerator : public IUnknown
1111 {
1112     virtual HRESULT STDMETHODCALLTYPE GetCount(
1113         int *SessionCount) = 0;
1114 
1115     virtual HRESULT STDMETHODCALLTYPE GetSession(
1116         int SessionCount,
1117         IAudioSessionControl **Session) = 0;
1118 
1119 };
1120 #ifdef __CRT_UUID_DECL
1121 __CRT_UUID_DECL(IAudioSessionEnumerator, 0xe2f5bb11, 0x0570, 0x40ca, 0xac,0xdd, 0x3a,0xa0,0x12,0x77,0xde,0xe8)
1122 #endif
1123 #else
1124 typedef struct IAudioSessionEnumeratorVtbl {
1125     BEGIN_INTERFACE
1126 
1127     /*** IUnknown methods ***/
1128     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1129         IAudioSessionEnumerator* This,
1130         REFIID riid,
1131         void **ppvObject);
1132 
1133     ULONG (STDMETHODCALLTYPE *AddRef)(
1134         IAudioSessionEnumerator* This);
1135 
1136     ULONG (STDMETHODCALLTYPE *Release)(
1137         IAudioSessionEnumerator* This);
1138 
1139     /*** IAudioSessionEnumerator methods ***/
1140     HRESULT (STDMETHODCALLTYPE *GetCount)(
1141         IAudioSessionEnumerator* This,
1142         int *SessionCount);
1143 
1144     HRESULT (STDMETHODCALLTYPE *GetSession)(
1145         IAudioSessionEnumerator* This,
1146         int SessionCount,
1147         IAudioSessionControl **Session);
1148 
1149     END_INTERFACE
1150 } IAudioSessionEnumeratorVtbl;
1151 interface IAudioSessionEnumerator {
1152     CONST_VTBL IAudioSessionEnumeratorVtbl* lpVtbl;
1153 };
1154 
1155 #ifdef COBJMACROS
1156 #ifndef WIDL_C_INLINE_WRAPPERS
1157 /*** IUnknown methods ***/
1158 #define IAudioSessionEnumerator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1159 #define IAudioSessionEnumerator_AddRef(This) (This)->lpVtbl->AddRef(This)
1160 #define IAudioSessionEnumerator_Release(This) (This)->lpVtbl->Release(This)
1161 /*** IAudioSessionEnumerator methods ***/
1162 #define IAudioSessionEnumerator_GetCount(This,SessionCount) (This)->lpVtbl->GetCount(This,SessionCount)
1163 #define IAudioSessionEnumerator_GetSession(This,SessionCount,Session) (This)->lpVtbl->GetSession(This,SessionCount,Session)
1164 #else
1165 /*** IUnknown methods ***/
1166 static FORCEINLINE HRESULT IAudioSessionEnumerator_QueryInterface(IAudioSessionEnumerator* This,REFIID riid,void **ppvObject) {
1167     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1168 }
1169 static FORCEINLINE ULONG IAudioSessionEnumerator_AddRef(IAudioSessionEnumerator* This) {
1170     return This->lpVtbl->AddRef(This);
1171 }
1172 static FORCEINLINE ULONG IAudioSessionEnumerator_Release(IAudioSessionEnumerator* This) {
1173     return This->lpVtbl->Release(This);
1174 }
1175 /*** IAudioSessionEnumerator methods ***/
1176 static FORCEINLINE HRESULT IAudioSessionEnumerator_GetCount(IAudioSessionEnumerator* This,int *SessionCount) {
1177     return This->lpVtbl->GetCount(This,SessionCount);
1178 }
1179 static FORCEINLINE HRESULT IAudioSessionEnumerator_GetSession(IAudioSessionEnumerator* This,int SessionCount,IAudioSessionControl **Session) {
1180     return This->lpVtbl->GetSession(This,SessionCount,Session);
1181 }
1182 #endif
1183 #endif
1184 
1185 #endif
1186 
1187 HRESULT STDMETHODCALLTYPE IAudioSessionEnumerator_GetCount_Proxy(
1188     IAudioSessionEnumerator* This,
1189     int *SessionCount);
1190 void __RPC_STUB IAudioSessionEnumerator_GetCount_Stub(
1191     IRpcStubBuffer* This,
1192     IRpcChannelBuffer* pRpcChannelBuffer,
1193     PRPC_MESSAGE pRpcMessage,
1194     DWORD* pdwStubPhase);
1195 HRESULT STDMETHODCALLTYPE IAudioSessionEnumerator_GetSession_Proxy(
1196     IAudioSessionEnumerator* This,
1197     int SessionCount,
1198     IAudioSessionControl **Session);
1199 void __RPC_STUB IAudioSessionEnumerator_GetSession_Stub(
1200     IRpcStubBuffer* This,
1201     IRpcChannelBuffer* pRpcChannelBuffer,
1202     PRPC_MESSAGE pRpcMessage,
1203     DWORD* pdwStubPhase);
1204 
1205 #endif  /* __IAudioSessionEnumerator_INTERFACE_DEFINED__ */
1206 
1207 
1208 /*****************************************************************************
1209  * IAudioSessionManager2 interface
1210  */
1211 #ifndef __IAudioSessionManager2_INTERFACE_DEFINED__
1212 #define __IAudioSessionManager2_INTERFACE_DEFINED__
1213 
1214 DEFINE_GUID(IID_IAudioSessionManager2, 0x77aa99a0, 0x1bd6, 0x484f, 0x8b,0xc7, 0x2c,0x65,0x4c,0x9a,0x9b,0x6f);
1215 #if defined(__cplusplus) && !defined(CINTERFACE)
1216 MIDL_INTERFACE("77aa99a0-1bd6-484f-8bc7-2c654c9a9b6f")
1217 IAudioSessionManager2 : public IAudioSessionManager
1218 {
1219     virtual HRESULT STDMETHODCALLTYPE GetSessionEnumerator(
1220         IAudioSessionEnumerator **SessionEnum) = 0;
1221 
1222     virtual HRESULT STDMETHODCALLTYPE RegisterSessionNotification(
1223         IAudioSessionNotification *SessionNotification) = 0;
1224 
1225     virtual HRESULT STDMETHODCALLTYPE UnregisterSessionNotification(
1226         IAudioSessionNotification *SessionNotification) = 0;
1227 
1228     virtual HRESULT STDMETHODCALLTYPE RegisterDuckNotification(
1229         LPCWSTR sessionID,
1230         IAudioVolumeDuckNotification *duckNotification) = 0;
1231 
1232     virtual HRESULT STDMETHODCALLTYPE UnregisterDuckNotification(
1233         IAudioVolumeDuckNotification *duckNotification) = 0;
1234 
1235 };
1236 #ifdef __CRT_UUID_DECL
1237 __CRT_UUID_DECL(IAudioSessionManager2, 0x77aa99a0, 0x1bd6, 0x484f, 0x8b,0xc7, 0x2c,0x65,0x4c,0x9a,0x9b,0x6f)
1238 #endif
1239 #else
1240 typedef struct IAudioSessionManager2Vtbl {
1241     BEGIN_INTERFACE
1242 
1243     /*** IUnknown methods ***/
1244     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1245         IAudioSessionManager2* This,
1246         REFIID riid,
1247         void **ppvObject);
1248 
1249     ULONG (STDMETHODCALLTYPE *AddRef)(
1250         IAudioSessionManager2* This);
1251 
1252     ULONG (STDMETHODCALLTYPE *Release)(
1253         IAudioSessionManager2* This);
1254 
1255     /*** IAudioSessionManager methods ***/
1256     HRESULT (STDMETHODCALLTYPE *GetAudioSessionControl)(
1257         IAudioSessionManager2* This,
1258         LPCGUID AudioSessionGuid,
1259         DWORD StreamFlags,
1260         IAudioSessionControl **SessionControl);
1261 
1262     HRESULT (STDMETHODCALLTYPE *GetSimpleAudioVolume)(
1263         IAudioSessionManager2* This,
1264         LPCGUID AudioSessionGuid,
1265         DWORD StreamFlags,
1266         ISimpleAudioVolume **AudioVolume);
1267 
1268     /*** IAudioSessionManager2 methods ***/
1269     HRESULT (STDMETHODCALLTYPE *GetSessionEnumerator)(
1270         IAudioSessionManager2* This,
1271         IAudioSessionEnumerator **SessionEnum);
1272 
1273     HRESULT (STDMETHODCALLTYPE *RegisterSessionNotification)(
1274         IAudioSessionManager2* This,
1275         IAudioSessionNotification *SessionNotification);
1276 
1277     HRESULT (STDMETHODCALLTYPE *UnregisterSessionNotification)(
1278         IAudioSessionManager2* This,
1279         IAudioSessionNotification *SessionNotification);
1280 
1281     HRESULT (STDMETHODCALLTYPE *RegisterDuckNotification)(
1282         IAudioSessionManager2* This,
1283         LPCWSTR sessionID,
1284         IAudioVolumeDuckNotification *duckNotification);
1285 
1286     HRESULT (STDMETHODCALLTYPE *UnregisterDuckNotification)(
1287         IAudioSessionManager2* This,
1288         IAudioVolumeDuckNotification *duckNotification);
1289 
1290     END_INTERFACE
1291 } IAudioSessionManager2Vtbl;
1292 interface IAudioSessionManager2 {
1293     CONST_VTBL IAudioSessionManager2Vtbl* lpVtbl;
1294 };
1295 
1296 #ifdef COBJMACROS
1297 #ifndef WIDL_C_INLINE_WRAPPERS
1298 /*** IUnknown methods ***/
1299 #define IAudioSessionManager2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1300 #define IAudioSessionManager2_AddRef(This) (This)->lpVtbl->AddRef(This)
1301 #define IAudioSessionManager2_Release(This) (This)->lpVtbl->Release(This)
1302 /*** IAudioSessionManager methods ***/
1303 #define IAudioSessionManager2_GetAudioSessionControl(This,AudioSessionGuid,StreamFlags,SessionControl) (This)->lpVtbl->GetAudioSessionControl(This,AudioSessionGuid,StreamFlags,SessionControl)
1304 #define IAudioSessionManager2_GetSimpleAudioVolume(This,AudioSessionGuid,StreamFlags,AudioVolume) (This)->lpVtbl->GetSimpleAudioVolume(This,AudioSessionGuid,StreamFlags,AudioVolume)
1305 /*** IAudioSessionManager2 methods ***/
1306 #define IAudioSessionManager2_GetSessionEnumerator(This,SessionEnum) (This)->lpVtbl->GetSessionEnumerator(This,SessionEnum)
1307 #define IAudioSessionManager2_RegisterSessionNotification(This,SessionNotification) (This)->lpVtbl->RegisterSessionNotification(This,SessionNotification)
1308 #define IAudioSessionManager2_UnregisterSessionNotification(This,SessionNotification) (This)->lpVtbl->UnregisterSessionNotification(This,SessionNotification)
1309 #define IAudioSessionManager2_RegisterDuckNotification(This,sessionID,duckNotification) (This)->lpVtbl->RegisterDuckNotification(This,sessionID,duckNotification)
1310 #define IAudioSessionManager2_UnregisterDuckNotification(This,duckNotification) (This)->lpVtbl->UnregisterDuckNotification(This,duckNotification)
1311 #else
1312 /*** IUnknown methods ***/
1313 static FORCEINLINE HRESULT IAudioSessionManager2_QueryInterface(IAudioSessionManager2* This,REFIID riid,void **ppvObject) {
1314     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1315 }
1316 static FORCEINLINE ULONG IAudioSessionManager2_AddRef(IAudioSessionManager2* This) {
1317     return This->lpVtbl->AddRef(This);
1318 }
1319 static FORCEINLINE ULONG IAudioSessionManager2_Release(IAudioSessionManager2* This) {
1320     return This->lpVtbl->Release(This);
1321 }
1322 /*** IAudioSessionManager methods ***/
1323 static FORCEINLINE HRESULT IAudioSessionManager2_GetAudioSessionControl(IAudioSessionManager2* This,LPCGUID AudioSessionGuid,DWORD StreamFlags,IAudioSessionControl **SessionControl) {
1324     return This->lpVtbl->GetAudioSessionControl(This,AudioSessionGuid,StreamFlags,SessionControl);
1325 }
1326 static FORCEINLINE HRESULT IAudioSessionManager2_GetSimpleAudioVolume(IAudioSessionManager2* This,LPCGUID AudioSessionGuid,DWORD StreamFlags,ISimpleAudioVolume **AudioVolume) {
1327     return This->lpVtbl->GetSimpleAudioVolume(This,AudioSessionGuid,StreamFlags,AudioVolume);
1328 }
1329 /*** IAudioSessionManager2 methods ***/
1330 static FORCEINLINE HRESULT IAudioSessionManager2_GetSessionEnumerator(IAudioSessionManager2* This,IAudioSessionEnumerator **SessionEnum) {
1331     return This->lpVtbl->GetSessionEnumerator(This,SessionEnum);
1332 }
1333 static FORCEINLINE HRESULT IAudioSessionManager2_RegisterSessionNotification(IAudioSessionManager2* This,IAudioSessionNotification *SessionNotification) {
1334     return This->lpVtbl->RegisterSessionNotification(This,SessionNotification);
1335 }
1336 static FORCEINLINE HRESULT IAudioSessionManager2_UnregisterSessionNotification(IAudioSessionManager2* This,IAudioSessionNotification *SessionNotification) {
1337     return This->lpVtbl->UnregisterSessionNotification(This,SessionNotification);
1338 }
1339 static FORCEINLINE HRESULT IAudioSessionManager2_RegisterDuckNotification(IAudioSessionManager2* This,LPCWSTR sessionID,IAudioVolumeDuckNotification *duckNotification) {
1340     return This->lpVtbl->RegisterDuckNotification(This,sessionID,duckNotification);
1341 }
1342 static FORCEINLINE HRESULT IAudioSessionManager2_UnregisterDuckNotification(IAudioSessionManager2* This,IAudioVolumeDuckNotification *duckNotification) {
1343     return This->lpVtbl->UnregisterDuckNotification(This,duckNotification);
1344 }
1345 #endif
1346 #endif
1347 
1348 #endif
1349 
1350 HRESULT STDMETHODCALLTYPE IAudioSessionManager2_GetSessionEnumerator_Proxy(
1351     IAudioSessionManager2* This,
1352     IAudioSessionEnumerator **SessionEnum);
1353 void __RPC_STUB IAudioSessionManager2_GetSessionEnumerator_Stub(
1354     IRpcStubBuffer* This,
1355     IRpcChannelBuffer* pRpcChannelBuffer,
1356     PRPC_MESSAGE pRpcMessage,
1357     DWORD* pdwStubPhase);
1358 HRESULT STDMETHODCALLTYPE IAudioSessionManager2_RegisterSessionNotification_Proxy(
1359     IAudioSessionManager2* This,
1360     IAudioSessionNotification *SessionNotification);
1361 void __RPC_STUB IAudioSessionManager2_RegisterSessionNotification_Stub(
1362     IRpcStubBuffer* This,
1363     IRpcChannelBuffer* pRpcChannelBuffer,
1364     PRPC_MESSAGE pRpcMessage,
1365     DWORD* pdwStubPhase);
1366 HRESULT STDMETHODCALLTYPE IAudioSessionManager2_UnregisterSessionNotification_Proxy(
1367     IAudioSessionManager2* This,
1368     IAudioSessionNotification *SessionNotification);
1369 void __RPC_STUB IAudioSessionManager2_UnregisterSessionNotification_Stub(
1370     IRpcStubBuffer* This,
1371     IRpcChannelBuffer* pRpcChannelBuffer,
1372     PRPC_MESSAGE pRpcMessage,
1373     DWORD* pdwStubPhase);
1374 HRESULT STDMETHODCALLTYPE IAudioSessionManager2_RegisterDuckNotification_Proxy(
1375     IAudioSessionManager2* This,
1376     LPCWSTR sessionID,
1377     IAudioVolumeDuckNotification *duckNotification);
1378 void __RPC_STUB IAudioSessionManager2_RegisterDuckNotification_Stub(
1379     IRpcStubBuffer* This,
1380     IRpcChannelBuffer* pRpcChannelBuffer,
1381     PRPC_MESSAGE pRpcMessage,
1382     DWORD* pdwStubPhase);
1383 HRESULT STDMETHODCALLTYPE IAudioSessionManager2_UnregisterDuckNotification_Proxy(
1384     IAudioSessionManager2* This,
1385     IAudioVolumeDuckNotification *duckNotification);
1386 void __RPC_STUB IAudioSessionManager2_UnregisterDuckNotification_Stub(
1387     IRpcStubBuffer* This,
1388     IRpcChannelBuffer* pRpcChannelBuffer,
1389     PRPC_MESSAGE pRpcMessage,
1390     DWORD* pdwStubPhase);
1391 
1392 #endif  /* __IAudioSessionManager2_INTERFACE_DEFINED__ */
1393 
1394 #endif
1395 /* Begin additional prototypes for all interfaces */
1396 
1397 
1398 /* End additional prototypes */
1399 
1400 #ifdef __cplusplus
1401 }
1402 #endif
1403 
1404 #endif /* __audiopolicy_h__ */
1405