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