ReactOS  0.4.12-dev-36-g472787f
sndvol32.h
Go to the documentation of this file.
1 #ifndef __SNDVOL32_H
2 #define __SNDVOL32_H
3 
4 #include <stdarg.h>
5 
6 #include <windef.h>
7 #include <winbase.h>
8 #include <wingdi.h>
9 #include <winuser.h>
10 #include <mmsystem.h>
11 #include <commctrl.h>
12 #include <tchar.h>
13 #include <assert.h>
14 
15 #include "resources.h"
16 
17 #define VOLUME_STEPS 500
18 #define VOLUME_TICKS 5
19 #define VOLUME_PAGE_SIZE 100
20 #define BALANCE_STEPS 64
21 #define BALANCE_TICKS 1
22 #define BALANCE_PAGE_SIZE 12
23 
24 typedef enum _WINDOW_MODE
25 {
30 
31 typedef struct _MIXER_WINDOW
32 {
35  struct _SND_MIXER *Mixer;
39 
45 
46 extern HINSTANCE hAppInstance;
47 extern ATOM MainWindowClass;
48 extern HWND hMainWnd;
49 extern HANDLE hAppHeap;
50 
51 #define SZ_APP_CLASS TEXT("Volume Control")
52 
53 ULONG DbgPrint(PCH , ...);
54 #define DPRINT DbgPrint("SNDVOL32: %s:%i: ", __FILE__, __LINE__); DbgPrint
55 
56 
57 /*
58  * MIXER
59  */
60 
61 typedef struct _SND_MIXER_CONNECTION
62 {
68 
69 
70 typedef struct _SND_MIXER_DESTINATION
71 {
76  PSND_MIXER_CONNECTION Connections;
78 
79 typedef struct _SND_MIXER
80 {
84  HMIXER hmx;
86  PSND_MIXER_DESTINATION Lines;
88 
89 typedef struct _PREFERENCES_CONTEXT
90 {
91  PMIXER_WINDOW MixerWindow;
92  PSND_MIXER Mixer;
94 
101 
105 
106 typedef struct
107 {
112 
114 
115 /* NOTE: do NOT modify SNDVOL_REG_LINESTATE for binary compatibility with XP! */
116 typedef struct _SNDVOL_REG_LINESTATE
117 {
121 
122 
123 typedef BOOL (CALLBACK *PFNSNDMIXENUMLINES)(PSND_MIXER Mixer, LPMIXERLINE Line, UINT DisplayControls, PVOID Context);
125 typedef BOOL (CALLBACK *PFNSNDMIXENUMPRODUCTS)(PSND_MIXER Mixer, UINT Id, LPCTSTR ProductName, PVOID Context);
126 
127 PSND_MIXER SndMixerCreate(HWND hWndNotification, UINT MixerId);
128 VOID SndMixerDestroy(PSND_MIXER Mixer);
129 VOID SndMixerClose(PSND_MIXER Mixer);
130 BOOL SndMixerSelect(PSND_MIXER Mixer, UINT MixerId);
131 UINT SndMixerGetSelection(PSND_MIXER Mixer);
132 INT SndMixerSetVolumeControlDetails(PSND_MIXER Mixer, DWORD dwControlID, DWORD cbDetails, LPVOID paDetails);
133 INT SndMixerGetVolumeControlDetails(PSND_MIXER Mixer, DWORD dwControlID, DWORD cbDetails, LPVOID paDetails);
134 INT SndMixerGetProductName(PSND_MIXER Mixer, LPTSTR lpBuffer, UINT uSize);
135 INT SndMixerGetLineName(PSND_MIXER Mixer, DWORD LineID, LPTSTR lpBuffer, UINT uSize, BOOL LongName);
141 BOOL SndMixerQueryControls(PSND_MIXER Mixer, PUINT DisplayControls, LPMIXERLINE LineInfo, LPMIXERCONTROL *Controls);
142 
143 /*
144  * dialog.c
145  */
146 VOID LoadDialogCtrls(PPREFERENCES_CONTEXT PrefContext);
147 VOID UpdateDialogLineSliderControl(PPREFERENCES_CONTEXT PrefContext, LPMIXERLINE Line, DWORD dwControlID, DWORD DialogID, DWORD Position);
148 VOID UpdateDialogLineSwitchControl(PPREFERENCES_CONTEXT PrefContext, LPMIXERLINE Line, LONG fValue);
149 
150 /*
151  * MISC
152  */
153 
154 extern HKEY hAppSettingsKey;
155 
156 BOOL
158 
159 VOID
161 
162 INT
163 AllocAndLoadString(OUT LPWSTR *lpTarget,
165  IN UINT uID);
166 
167 DWORD
169  IN UINT uID,
170  OUT LPWSTR *lpTarget,
171  ...);
172 
173 BOOL
175  IN LPTSTR szLineName,
176  IN LPTSTR szControlName,
177  OUT DWORD *Flags);
178 
179 BOOL
181  IN LPTSTR szLineName,
182  IN PSNDVOL_REG_LINESTATE LineState,
183  IN DWORD cbSize);
184 
185 /* tray.c */
186 
187 INT_PTR
188 CALLBACK
190  HWND hwndDlg,
191  UINT uMsg,
192  WPARAM wParam,
193  LPARAM lParam);
194 
195 #endif /* __SNDVOL32_H */
BOOL SndMixerEnumConnections(PSND_MIXER Mixer, DWORD LineID, PFNSNDMIXENUMCONNECTIONS EnumProc, PVOID Context)
Definition: mixer.c:552
#define IN
Definition: typedefs.h:38
ATOM MainWindowClass
Definition: sndvol32.c:31
const CHAR * LPCTSTR
Definition: xmlstorage.h:193
PSND_MIXER_DESTINATION Lines
Definition: sndvol32.h:86
UINT MixerId
Definition: sndvol32.h:41
VOID SndMixerDestroy(PSND_MIXER Mixer)
Definition: mixer.c:91
HANDLE hAppHeap
Definition: mmc.c:24
BOOL(CALLBACK * PFNSNDMIXENUMPRODUCTS)(PSND_MIXER Mixer, UINT Id, LPCTSTR ProductName, PVOID Context)
Definition: sndvol32.h:125
ULONG DbgPrint(PCH,...)
DWORD LoadAndFormatString(IN HINSTANCE hInstance, IN UINT uID, OUT LPWSTR *lpTarget,...)
Definition: misc.c:76
WORD ATOM
Definition: dimm.idl:113
__wchar_t WCHAR
Definition: xmlstorage.h:180
enum _WINDOW_MODE WINDOW_MODE
INT SndMixerGetVolumeControlDetails(PSND_MIXER Mixer, DWORD dwControlID, DWORD cbDetails, LPVOID paDetails)
Definition: mixer.c:498
struct _PREFERENCES_CONTEXT * PPREFERENCES_CONTEXT
static COORD Position
Definition: mouse.c:34
HFONT hFont
Definition: sndvol32.h:43
#define CALLBACK
Definition: compat.h:27
struct SET_VOLUME_CONTEXT * PSET_VOLUME_CONTEXT
PSND_MIXER Mixer
Definition: sndvol32.h:92
INT_PTR CALLBACK TrayDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: tray.c:50
WCHAR DeviceName[]
Definition: adapter.cpp:21
int32_t INT_PTR
Definition: typedefs.h:62
_WINDOW_MODE
Definition: sndvol32.h:24
struct _PREFERENCES_CONTEXT PREFERENCES_CONTEXT
int32_t INT
Definition: typedefs.h:56
WPARAM wParam
Definition: combotst.c:138
CHAR * LPTSTR
Definition: xmlstorage.h:192
DWORD Id
UINT_PTR WPARAM
Definition: windef.h:207
HWND hWndNotification
Definition: sndvol32.h:82
struct _SND_MIXER_CONNECTION * PSND_MIXER_CONNECTION
struct _SNDVOL_REG_LINESTATE * PSNDVOL_REG_LINESTATE
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
HINSTANCE hInstance
Definition: charmap.c:20
struct _SNDVOL_REG_LINESTATE SNDVOL_REG_LINESTATE
INT SndMixerGetDestinationCount(PSND_MIXER Mixer)
Definition: mixer.c:520
HWND * Window
Definition: sndvol32.h:38
VOID CloseAppConfig(VOID)
Definition: misc.c:152
long LONG
Definition: pedump.c:60
LONG_PTR LPARAM
Definition: windef.h:208
static TAGREF LPCWSTR LPDWORD LPVOID lpBuffer
Definition: db.cpp:163
BOOL SndMixerIsDisplayControl(PSND_MIXER Mixer, LPMIXERCONTROL Control)
Definition: mixer.c:598
CHAR * PCH
Definition: ntbasedef.h:398
struct _SND_MIXER * Mixer
Definition: sndvol32.h:35
VOID UpdateDialogLineSwitchControl(PPREFERENCES_CONTEXT PrefContext, LPMIXERLINE Line, LONG fValue)
Definition: dialog.c:560
struct _SND_MIXER_DESTINATION * Next
Definition: sndvol32.h:72
LPMIXERCONTROL Controls
Definition: sndvol32.h:65
UINT SelectedLine
Definition: sndvol32.h:36
BOOL SndMixerQueryControls(PSND_MIXER Mixer, PUINT DisplayControls, LPMIXERLINE LineInfo, LPMIXERCONTROL *Controls)
Definition: mixer.c:112
struct _SND_MIXER_DESTINATION * PSND_MIXER_DESTINATION
MIXERCAPS Caps
Definition: sndvol32.h:85
char TCHAR
Definition: xmlstorage.h:189
struct _MIXER_WINDOW MIXER_WINDOW
BOOL InitAppConfig(VOID)
Definition: misc.c:138
unsigned int BOOL
Definition: ntddk_ex.h:94
HMIXER hmx
Definition: sndvol32.h:84
PSND_MIXER_CONNECTION Connections
Definition: sndvol32.h:76
UINT WindowCount
Definition: sndvol32.h:37
unsigned int UINT
Definition: ndis.h:50
unsigned long DWORD
Definition: ntddk_ex.h:95
WINDOW_MODE Mode
Definition: sndvol32.h:40
PSND_MIXER SndMixerCreate(HWND hWndNotification, UINT MixerId)
Definition: mixer.c:69
struct _MIXER_WINDOW * PMIXER_WINDOW
Definition: ncftp.h:79
VOID LoadDialogCtrls(PPREFERENCES_CONTEXT PrefContext)
Definition: dialog.c:525
INT SndMixerGetProductName(PSND_MIXER Mixer, LPTSTR lpBuffer, UINT uSize)
Definition: mixer.c:367
VOID SndMixerClose(PSND_MIXER Mixer)
Definition: mixer.c:101
struct _SND_MIXER_CONNECTION * Next
Definition: sndvol32.h:63
UINT MixerId
Definition: sndvol32.h:83
struct _SND_MIXER * PSND_MIXER
static const WCHAR szDeviceName[]
Definition: provider.c:53
#define MIXER_LONG_NAME_CHARS
Definition: mmsystem.h:294
VOID UpdateDialogLineSliderControl(PPREFERENCES_CONTEXT PrefContext, LPMIXERLINE Line, DWORD dwControlID, DWORD DialogID, DWORD Position)
Definition: dialog.c:606
static const WCHAR Control[]
Definition: interface.c:27
BOOL WriteLineConfig(IN LPTSTR szDeviceName, IN LPTSTR szLineName, IN PSNDVOL_REG_LINESTATE LineState, IN DWORD cbSize)
Definition: misc.c:162
HINSTANCE hInst
Definition: dxdiag.c:13
enum _WINDOW_MODE * PWINDOW_MODE
BOOL SndMixerEnumLines(PSND_MIXER Mixer, PFNSNDMIXENUMLINES EnumProc, PVOID Context)
Definition: mixer.c:526
INT AllocAndLoadString(OUT LPWSTR *lpTarget, IN HINSTANCE hInst, IN UINT uID)
Definition: misc.c:50
_In_ ULONGLONG _In_ PUNICODE_STRING _In_ PUNICODE_STRING LongName
Definition: fsrtlfuncs.h:336
HINSTANCE hAppInstance
Definition: mmc.c:23
BOOL SndMixerEnumProducts(PSND_MIXER Mixer, PFNSNDMIXENUMPRODUCTS EnumProc, PVOID Context)
Definition: mixer.c:431
BOOL(CALLBACK * PFNSNDMIXENUMCONNECTIONS)(PSND_MIXER Mixer, DWORD LineID, LPMIXERLINE Line, PVOID Context)
Definition: sndvol32.h:124
HWND hMainWnd
Definition: magnifier.c:33
struct _SND_MIXER_DESTINATION SND_MIXER_DESTINATION
struct _SND_MIXER_CONNECTION SND_MIXER_CONNECTION
UINT MixersCount
Definition: sndvol32.h:81
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
#define OUT
Definition: typedefs.h:39
UINT SndMixerGetSelection(PSND_MIXER Mixer)
Definition: mixer.c:361
struct tagContext Context
Definition: acpixf.h:1027
unsigned int ULONG
Definition: retypes.h:1
LPMIXERCONTROL Controls
Definition: sndvol32.h:74
static BOOL CALLBACK EnumProc(_In_ HWND hWnd, _In_ LPARAM lParam)
Definition: SetParent.c:53
struct _SND_MIXER SND_MIXER
INT SndMixerGetLineName(PSND_MIXER Mixer, DWORD LineID, LPTSTR lpBuffer, UINT uSize, BOOL LongName)
Definition: mixer.c:390
INT SndMixerSetVolumeControlDetails(PSND_MIXER Mixer, DWORD dwControlID, DWORD cbDetails, LPVOID paDetails)
Definition: mixer.c:474
HKEY hAppSettingsKey
Definition: misc.c:135
BOOL(CALLBACK * PFNSNDMIXENUMLINES)(PSND_MIXER Mixer, LPMIXERLINE Line, UINT DisplayControls, PVOID Context)
Definition: sndvol32.h:123
WCHAR * LPWSTR
Definition: xmlstorage.h:184
BOOL SndMixerSelect(PSND_MIXER Mixer, UINT MixerId)
Definition: mixer.c:304
LPARAM lParam
Definition: combotst.c:139
#define BOOL
Definition: msvc.h:23
BOOL ReadLineConfig(IN LPTSTR szDeviceName, IN LPTSTR szLineName, IN LPTSTR szControlName, OUT DWORD *Flags)
Definition: misc.c:197
HWND hStatusBar
Definition: sndvol32.h:34
struct Line Line
unsigned int * PUINT
Definition: ndis.h:50
PMIXER_WINDOW MixerWindow
Definition: sndvol32.h:91