WASAPI_Notification_Interfaces/AudioSessionEvents.h

114 lines
4.0 KiB
C

#ifndef _AUDIOSESSIONECENTS_H_
#define _AUDIOSESSIONECENTS_H_
#include <combaseapi.h>
#include <audiopolicy.h>
#include <cstdbool>
#include <stdio.h>
#ifndef __IAudioSessionEvents_FWD_DEFINED__
#define __IAudioSessionEvents_FWD_DEFINED__
typedef interface IAudioSessionEvents IAudioSessionEvents;
#endif /* __IAudioSessionEvents_FWD_DEFINED__ */
HRESULT STDMETHODCALLTYPE QueryInterface(IAudioSessionNotification*, REFIID, void**);
ULONG STDMETHODCALLTYPE AddRef(IAudioSessionEvents*);
ULONG STDMETHODCALLTYPE Release(IAudioSessionEvents*);
HRESULT OnChannelVolumeChanged(IAudioSessionEvents*, DWORD, float*, DWORD, LPCGUID);
HRESULT OnDisplayNameChanged(IAudioSessionEvents*, LPCWSTR, LPCGUID);
HRESULT OnGroupingParamChanged(IAudioSessionEvents*, LPCGUID, LPCGUID);
HRESULT OnIconPathChanged(IAudioSessionEvents*, LPCWSTR, LPCGUID);
HRESULT OnSessionDisconnected(IAudioSessionEvents*, AudioSessionDisconnectReason);
HRESULT OnSimpleVolumeChanged(IAudioSessionEvents*, float, BOOL, LPCGUID);
HRESULT OnStateChanged(IAudioSessionEvents*, AudioSessionState);
typedef struct IAudioSessionEventsVtbl
{
BEGIN_INTERFACE
DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
HRESULT(STDMETHODCALLTYPE* QueryInterface)(
IAudioSessionEvents* This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
_COM_Outptr_ void** ppvObject);
DECLSPEC_XFGVIRT(IUnknown, AddRef)
ULONG(STDMETHODCALLTYPE* AddRef)(
IAudioSessionEvents* This);
DECLSPEC_XFGVIRT(IUnknown, Release)
ULONG(STDMETHODCALLTYPE* Release)(
IAudioSessionEvents* This);
DECLSPEC_XFGVIRT(IAudioSessionEvents, OnChannelVolumeChange)
HRESULT(STDMETHODCALLTYPE* OnChannelVolumeChange)(
IAudioSessionEvents* This,
/* [annotation][in] */
_In_ DWORD ChannelCount,
/* [annotation][in] */
_In_ float* NewChannelVolumeArray,
/* [annotation][in] */
_In_ DWORD ChangedChannel,
/* [annotation][in] */
_In_ LPCGUID EventContext );
DECLSPEC_XFGVIRT(IAudioSessionEvents, OnDisplayNameChanged)
HRESULT(STDMETHODCALLTYPE* OnDisplayNameChanged)(
IAudioSessionEvents* This,
/* [annotation][in] */
_In_ LPCWSTR NewDisplayName,
/* [annotation][in] */
_In_ LPCGUID EventContext);
DECLSPEC_XFGVIRT(IAudioSessionEvents, OnGroupingParamChanged)
HRESULT(STDMETHODCALLTYPE* OnGroupingParamChanged)(
IAudioSessionEvents* This,
/* [annotation][in] */
_In_ LPCGUID NewGroupingParam,
/* [annotation][in] */
_In_ LPCGUID EventContext);
DECLSPEC_XFGVIRT(IAudioSessionEvents, OnIconPathChanged)
HRESULT(STDMETHODCALLTYPE* OnIconPathChanged)(
IAudioSessionEvents* This,
/* [annotation][in] */
_In_ LPCWSTR NewIconPath,
/* [annotation][in] */
_In_ LPCGUID EventContext);
DECLSPEC_XFGVIRT(IAudioSessionEvents, OnSessionDisconnected)
HRESULT(STDMETHODCALLTYPE* OnSessionDisconnected)(
IAudioSessionEvents* This,
/* [annotation][in] */
_In_ AudioSessionDisconnectReason DisconnectReason );
DECLSPEC_XFGVIRT(IAudioSessionEvents, OnSimpleVolumeChanged)
HRESULT(STDMETHODCALLTYPE* OnSimpleVolumeChanged)(
IAudioSessionEvents* This,
/* [annotation][in] */
_In_ float NewVolume,
/* [annotation][in] */
_In_ BOOL NewMute,
/* [annotation][in] */
_In_ LPCGUID EventContext );
DECLSPEC_XFGVIRT(IAudioSessionEvents, OnStateChanged)
HRESULT(STDMETHODCALLTYPE* OnStateChanged)(
IAudioSessionEvents* This,
/* [annotation][in] */
_In_ AudioSessionState NewState );
END_INTERFACE
} IAudioSessionEventsVtbl;
interface IAudioSessionEvents
{
CONST_VTBL struct IAudioSessionEventsVtbl* lpVtbl;
LONG m_cRefAll;
};
#endif