ReactOS 0.4.17-dev-769-g1500a35
mediabtns.h
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS Explorer
3 * LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
4 * PURPOSE: Backend class for media buttons (header)
5 * COPYRIGHT: Copyright 2026 Vitaly Orekhov <vkvo2000@vivaldi.net>
6 */
7
8#include <mmddk.h>
9
10typedef MMRESULT (WINAPI* pmxControlDetails)(HMIXEROBJ hmxobj, LPMIXERCONTROLDETAILS pmxcd, DWORD fdwDetails);
11typedef MMRESULT (WINAPI* pmxGetID)(HMIXEROBJ hmxobj, UINT* puMxId, DWORD fdwId);
12typedef MMRESULT (WINAPI* pmxLine)(HMIXEROBJ hmxobj, LPMIXERLINEW pmxcd, DWORD fdwDetails);
13typedef MMRESULT (WINAPI* pmxLineControls)(HMIXEROBJ hmxobj, LPMIXERLINECONTROLSW pmxcd, DWORD fdwDetails);
14typedef MMRESULT (WINAPI* pmxOpen)(LPHMIXER phmx, UINT uMxId, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen);
15typedef MMRESULT (WINAPI* pmxClose)(HMIXER hmx);
16typedef MMRESULT (WINAPI* pwoGetErrText)(MMRESULT mmrError, LPWSTR pszText, UINT cchText);
18typedef MMRESULT (WINAPI* pwoMessage)(HWAVEOUT hwo, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2);
19#define WINMM_PROC(func, type) ((func) = (type)GetProcAddress(hWinMM, #func))
20
21/* Media volume buttons are synchronized against sndvol32 meters */
22#define VOLUME_STEPS_COUNT 25
23
25{
26public:
33
34 void Initialize();
35 bool Mute();
37
38private:
40 void LogError(_In_ const char* pszFunctionName, _In_ const char* pszMessage, _In_ MMRESULT mmres);
42
53
55 HMIXER m_hMixer = NULL;
59 struct
60 {
65};
#define VOID
Definition: acefi.h:82
HMODULE m_hWinMM
Definition: mediabtns.h:54
CMultimediaBackend(CMultimediaBackend &)=delete
bool AdjustVolume(_In_ UINT direction, _In_ HANDLE hProcessHeap)
Definition: mediabtns.cpp:184
pmxControlDetails mixerGetControlDetailsW
Definition: mediabtns.h:44
pmxLineControls mixerGetLineControlsW
Definition: mediabtns.h:47
pmxControlDetails mixerSetControlDetails
Definition: mediabtns.h:43
DWORD m_dwMasterChannels
Definition: mediabtns.h:58
pwoGetNumDevs waveOutGetNumDevs
Definition: mediabtns.h:51
DWORD m_dwMasterVolumeID
Definition: mediabtns.h:57
pwoMessage waveOutMessage
Definition: mediabtns.h:52
DWORD m_dwMasterMuteControlID
Definition: mediabtns.h:56
pmxLine mixerGetLineInfoW
Definition: mediabtns.h:46
PDWORD m_pdwChannelSteps
Definition: mediabtns.h:64
MMRESULT GetCurrentVolume(_Inout_ PMIXERCONTROLDETAILS pmxcd)
Definition: mediabtns.cpp:334
pmxGetID mixerGetID
Definition: mediabtns.h:45
CMultimediaBackend & operator=(CMultimediaBackend &&)=delete
struct CMultimediaBackend::@96 m_dwMasterRanges
pwoGetErrText waveOutGetErrorTextW
Definition: mediabtns.h:50
pmxOpen mixerOpen
Definition: mediabtns.h:48
void CalculateSteps(_Inout_ PMIXERCONTROLDETAILS_UNSIGNED pmxcdVolume)
Definition: mediabtns.cpp:280
pmxClose mixerClose
Definition: mediabtns.h:49
CMultimediaBackend & operator=(CMultimediaBackend &)=delete
CMultimediaBackend(CMultimediaBackend &&)=delete
_In_ ULONG _In_ BOOLEAN LogError
Definition: classpnp.h:1311
#define NULL
Definition: types.h:112
HANDLE hProcessHeap
Definition: explorer.cpp:25
unsigned long DWORD
Definition: ntddk_ex.h:95
unsigned int UINT
Definition: sysinfo.c:13
MMRESULT(WINAPI * pmxGetID)(HMIXEROBJ hmxobj, UINT *puMxId, DWORD fdwId)
Definition: mediabtns.h:11
MMRESULT(WINAPI * pmxLine)(HMIXEROBJ hmxobj, LPMIXERLINEW pmxcd, DWORD fdwDetails)
Definition: mediabtns.h:12
MMRESULT(WINAPI * pmxLineControls)(HMIXEROBJ hmxobj, LPMIXERLINECONTROLSW pmxcd, DWORD fdwDetails)
Definition: mediabtns.h:13
MMRESULT(WINAPI * pwoMessage)(HWAVEOUT hwo, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2)
Definition: mediabtns.h:18
MMRESULT(WINAPI * pwoGetErrText)(MMRESULT mmrError, LPWSTR pszText, UINT cchText)
Definition: mediabtns.h:16
MMRESULT(WINAPI * pmxClose)(HMIXER hmx)
Definition: mediabtns.h:15
MMRESULT(WINAPI * pmxOpen)(LPHMIXER phmx, UINT uMxId, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen)
Definition: mediabtns.h:14
MMRESULT(WINAPI * pwoGetNumDevs)(VOID)
Definition: mediabtns.h:17
MMRESULT(WINAPI * pmxControlDetails)(HMIXEROBJ hmxobj, LPMIXERCONTROLDETAILS pmxcd, DWORD fdwDetails)
Definition: mediabtns.h:10
UINT MMRESULT
Definition: mmsystem.h:964
HMIXER * LPHMIXER
Definition: mmsystem.h:1213
direction
Definition: netio.c:882
#define _Inout_
Definition: no_sal2.h:162
#define _In_
Definition: no_sal2.h:158
DWORD * PDWORD
Definition: pedump.c:68
uint32_t DWORD_PTR
Definition: typedefs.h:65
uint16_t * LPWSTR
Definition: typedefs.h:56
#define WINAPI
Definition: msvc.h:6
_In_ int cchText
Definition: winuser.h:4619