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