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