星小夜的登录器  v1.0
Public 成员函数 | Private 属性 | 所有成员列表
CMutedSessionEvents类 参考

#include <mutedsessionevents.h>

类 CMutedSessionEvents 继承关系图:
Inheritance graph
[图例]
CMutedSessionEvents 的协作图:
Collaboration graph
[图例]

Public 成员函数

 CMutedSessionEvents (IAudioSessionManager *pAudioSessionManager)
 
 ~CMutedSessionEvents ()
 
ULONG STDMETHODCALLTYPE AddRef ()
 
ULONG STDMETHODCALLTYPE Release ()
 
HRESULT STDMETHODCALLTYPE QueryInterface (REFIID riid, VOID **ppvInterface)
 
HRESULT STDMETHODCALLTYPE OnDisplayNameChanged (LPCWSTR NewDisplayName, LPCGUID EventContext)
 
HRESULT STDMETHODCALLTYPE OnIconPathChanged (LPCWSTR NewIconPath, LPCGUID EventContext)
 
HRESULT STDMETHODCALLTYPE OnSimpleVolumeChanged (float NewVolume, BOOL NewMute, LPCGUID EventContext)
 
HRESULT STDMETHODCALLTYPE OnChannelVolumeChanged (DWORD ChannelCount, float NewChannelVolumeArray[], DWORD ChangedChannel, LPCGUID EventContext)
 
HRESULT STDMETHODCALLTYPE OnGroupingParamChanged (LPCGUID NewGroupingParam, LPCGUID EventContext)
 
HRESULT STDMETHODCALLTYPE OnStateChanged (AudioSessionState NewState)
 
HRESULT STDMETHODCALLTYPE OnSessionDisconnected (AudioSessionDisconnectReason DisconnectReason)
 
bool TxSetMuted (bool bMuted)
 

Private 属性

LONG _cRef
 
IAudioSessionManager * m_AudioSessionManager
 

详细描述

在文件 mutedsessionevents.h17 行定义.

构造及析构函数说明

◆ CMutedSessionEvents()

CMutedSessionEvents::CMutedSessionEvents ( IAudioSessionManager *  pAudioSessionManager)

在文件 mutedsessionevents.cpp14 行定义.

15 {
16  m_AudioSessionManager = pAudioSessionManager;
17  _cRef = 1;
18 }

◆ ~CMutedSessionEvents()

CMutedSessionEvents::~CMutedSessionEvents ( )
inline

在文件 mutedsessionevents.h21 行定义.

21 {}

成员函数说明

◆ AddRef()

ULONG STDMETHODCALLTYPE CMutedSessionEvents::AddRef ( )
inline

在文件 mutedsessionevents.h25 行定义.

25 {return InterlockedIncrement(&_cRef);}
这是这个函数的调用关系图:

◆ OnChannelVolumeChanged()

HRESULT STDMETHODCALLTYPE CMutedSessionEvents::OnChannelVolumeChanged ( DWORD  ChannelCount,
float  NewChannelVolumeArray[],
DWORD  ChangedChannel,
LPCGUID  EventContext 
)
inline

在文件 mutedsessionevents.h54 行定义.

59  {
60  return S_OK;
61  }

◆ OnDisplayNameChanged()

HRESULT STDMETHODCALLTYPE CMutedSessionEvents::OnDisplayNameChanged ( LPCWSTR  NewDisplayName,
LPCGUID  EventContext 
)
inline

在文件 mutedsessionevents.h35 行定义.

38  {
39  return S_OK;
40  }

◆ OnGroupingParamChanged()

HRESULT STDMETHODCALLTYPE CMutedSessionEvents::OnGroupingParamChanged ( LPCGUID  NewGroupingParam,
LPCGUID  EventContext 
)
inline

在文件 mutedsessionevents.h63 行定义.

66  {
67  return S_OK;
68  }

◆ OnIconPathChanged()

HRESULT STDMETHODCALLTYPE CMutedSessionEvents::OnIconPathChanged ( LPCWSTR  NewIconPath,
LPCGUID  EventContext 
)
inline

在文件 mutedsessionevents.h42 行定义.

45  {
46  return S_OK;
47  }

◆ OnSessionDisconnected()

HRESULT STDMETHODCALLTYPE CMutedSessionEvents::OnSessionDisconnected ( AudioSessionDisconnectReason  DisconnectReason)
inline

在文件 mutedsessionevents.h76 行定义.

78  {
79  return S_OK;
80  }

◆ OnSimpleVolumeChanged()

HRESULT STDMETHODCALLTYPE CMutedSessionEvents::OnSimpleVolumeChanged ( float  NewVolume,
BOOL  NewMute,
LPCGUID  EventContext 
)

在文件 mutedsessionevents.cpp52 行定义.

56 {
57  // 防止其它程序对静音篡改
58  if ((BOOL)g_bMuted != NewMute)
59  {
61  }
62 
63  return S_OK;
64 }
函数调用图:

◆ OnStateChanged()

HRESULT STDMETHODCALLTYPE CMutedSessionEvents::OnStateChanged ( AudioSessionState  NewState)
inline

在文件 mutedsessionevents.h70 行定义.

72  {
73  return S_OK;
74  }

◆ QueryInterface()

HRESULT STDMETHODCALLTYPE CMutedSessionEvents::QueryInterface ( REFIID  riid,
VOID **  ppvInterface 
)

在文件 mutedsessionevents.cpp30 行定义.

33 {
34  if (IID_IUnknown == riid)
35  {
36  AddRef();
37  *ppvInterface = (IUnknown*)this;
38  }
39  else if (__uuidof(IAudioSessionEvents) == riid)
40  {
41  AddRef();
42  *ppvInterface = (IAudioSessionEvents*)this;
43  }
44  else
45  {
46  *ppvInterface = NULL;
47  return E_NOINTERFACE;
48  }
49  return S_OK;
50 }
函数调用图:

◆ Release()

ULONG STDMETHODCALLTYPE CMutedSessionEvents::Release ( )

在文件 mutedsessionevents.cpp20 行定义.

21 {
22  ULONG ulRef = InterlockedDecrement(&_cRef);
23  if (0 == ulRef)
24  {
25  delete this;
26  }
27  return ulRef;
28 }
这是这个函数的调用关系图:

◆ TxSetMuted()

bool CMutedSessionEvents::TxSetMuted ( bool  bMuted)

在文件 mutedsessionevents.cpp66 行定义.

67 {
68  HRESULT hr = S_FALSE;
69 
70  // 获得音量、静音控制接口
71  ISimpleAudioVolume *pAudioVolume = NULL;
72  hr = m_AudioSessionManager->GetSimpleAudioVolume(NULL,0,&pAudioVolume);
73  if (FAILED(hr)) return false;
74 
75  if(SUCCEEDED(hr))
76  {
77  pAudioVolume->SetMute(bMuted, &GUID_NULL);
78 
79  // 更改全局静音状态
80  g_bMuted = bMuted;
81  }
82 
83  if (pAudioVolume != NULL)
84  {
85  pAudioVolume->Release();
86  pAudioVolume = NULL;
87  }
88  return true;
89 }
这是这个函数的调用关系图:

类成员变量说明

◆ _cRef

LONG CMutedSessionEvents::_cRef
private

在文件 mutedsessionevents.h85 行定义.

◆ m_AudioSessionManager

IAudioSessionManager* CMutedSessionEvents::m_AudioSessionManager
private

在文件 mutedsessionevents.h88 行定义.


该类的文档由以下文件生成:
CMutedSessionEvents::_cRef
LONG _cRef
Definition: mutedsessionevents.h:85
g_bMuted
volatile bool g_bMuted
全局静音标志
Definition: main.cpp:22
CMutedSessionEvents::m_AudioSessionManager
IAudioSessionManager * m_AudioSessionManager
Definition: mutedsessionevents.h:88
CMutedSessionEvents::AddRef
ULONG STDMETHODCALLTYPE AddRef()
Definition: mutedsessionevents.h:25
CMutedSessionEvents::TxSetMuted
bool TxSetMuted(bool bMuted)
Definition: mutedsessionevents.cpp:66