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