ReactOS  0.4.15-dev-492-ga1108f6
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 <strsafe.h>
14 #include <assert.h>
15 
16 #include "resources.h"
17 
18 #define VOLUME_MIN 0
19 #define VOLUME_MAX 500
20 #define VOLUME_TICKS 5
21 #define VOLUME_PAGE_SIZE 100
22 #define BALANCE_LEFT 0
23 #define BALANCE_CENTER 32
24 #define BALANCE_RIGHT 64
25 #define BALANCE_STEPS 64
26 #define BALANCE_TICKS 1
27 #define BALANCE_PAGE_SIZE 12
28 
29 #define PLAY_MIXER 0
30 #define RECORD_MIXER 1
31 
32 #define ADVANCED_BUTTON_HEIGHT 16
33 
34 typedef enum _WINDOW_MODE
35 {
40 
41 typedef struct _MIXER_WINDOW
42 {
45  struct _SND_MIXER *Mixer;
50 
61 
62 extern HINSTANCE hAppInstance;
63 extern ATOM MainWindowClass;
64 extern HWND hMainWnd;
65 extern HANDLE hAppHeap;
66 
67 #define SZ_APP_CLASS TEXT("Volume Control")
68 #define _countof(array) (sizeof(array) / sizeof(array[0]))
69 
70 ULONG DbgPrint(PCH , ...);
71 #define DPRINT DbgPrint("SNDVOL32: %s:%i: ", __FILE__, __LINE__); DbgPrint
72 
73 
74 /*
75  * MIXER
76  */
77 
78 typedef struct _SND_MIXER_CONNECTION
79 {
85 
86 
87 typedef struct _SND_MIXER_DESTINATION
88 {
95 
96 typedef struct _SND_MIXER
97 {
101  HMIXER hmx;
105 
106 typedef struct _PREFERENCES_CONTEXT
107 {
111 
118 
121 
122 typedef struct _SET_VOLUME_CONTEXT
123 {
129 
130 typedef struct _ADVANCED_CONTEXT
131 {
137 
138 
139 /* NOTE: do NOT modify SNDVOL_REG_LINESTATE for binary compatibility with XP! */
140 typedef struct _SNDVOL_REG_LINESTATE
141 {
145 
146 
150 
151 PSND_MIXER SndMixerCreate(HWND hWndNotification, UINT MixerId);
154 BOOL SndMixerSelect(PSND_MIXER Mixer, UINT MixerId);
156 INT SndMixerSetVolumeControlDetails(PSND_MIXER Mixer, DWORD dwControlID, DWORD cChannels, DWORD cbDetails, LPVOID paDetails);
157 INT SndMixerGetVolumeControlDetails(PSND_MIXER Mixer, DWORD dwControlID, DWORD cChannels, DWORD cbDetails, LPVOID paDetails);
165 BOOL SndMixerQueryControls(PSND_MIXER Mixer, PUINT DisplayControls, LPMIXERLINE LineInfo, LPMIXERCONTROL *Controls);
166 LPMIXERLINE SndMixerGetLineByName(PSND_MIXER Mixer, DWORD LineID, LPWSTR LineName);
167 
168 /* advanced.c */
169 
170 INT_PTR
171 CALLBACK
173  HWND hwndDlg,
174  UINT uMsg,
175  WPARAM wParam,
176  LPARAM lParam);
177 
178 
179 /*
180  * dialog.c
181  */
185 
186 /*
187  * MISC
188  */
189 
190 extern HKEY hAppSettingsKey;
191 
192 BOOL
194 
195 VOID
197 
198 BOOL
200 
201 BOOL
203  IN PPREFERENCES_CONTEXT PrefContext);
204 
205 INT
206 AllocAndLoadString(OUT LPWSTR *lpTarget,
208  IN UINT uID);
209 
210 DWORD
212  IN UINT uID,
213  OUT LPWSTR *lpTarget,
214  ...);
215 
216 BOOL
218  IN LPTSTR szLineName,
219  IN LPTSTR szControlName,
220  OUT DWORD *Flags);
221 
222 BOOL
224  IN LPTSTR szLineName,
225  IN PSNDVOL_REG_LINESTATE LineState,
226  IN DWORD cbSize);
227 
228 DWORD
230 
231 /* tray.c */
232 
233 INT_PTR
234 CALLBACK
236  HWND hwndDlg,
237  UINT uMsg,
238  WPARAM wParam,
239  LPARAM lParam);
240 
241 #endif /* __SNDVOL32_H */
BOOL SndMixerEnumConnections(PSND_MIXER Mixer, DWORD LineID, PFNSNDMIXENUMCONNECTIONS EnumProc, PVOID Context)
Definition: mixer.c:552
LPMIXERLINE Line
Definition: sndvol32.h:135
#define IN
Definition: typedefs.h:39
ATOM MainWindowClass
Definition: sndvol32.c:31
const CHAR * LPCTSTR
Definition: xmlstorage.h:193
PSND_MIXER_DESTINATION Lines
Definition: sndvol32.h:103
UINT MixerId
Definition: sndvol32.h:52
INT_PTR CALLBACK AdvancedDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: advanced.c:225
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:149
ULONG DbgPrint(PCH,...)
DWORD LoadAndFormatString(IN HINSTANCE hInstance, IN UINT uID, OUT LPWSTR *lpTarget,...)
Definition: misc.c:76
WORD ATOM
Definition: dimm.idl:113
enum _WINDOW_MODE WINDOW_MODE
struct _PREFERENCES_CONTEXT * PPREFERENCES_CONTEXT
static COORD Position
Definition: mouse.c:34
HFONT hFont
Definition: sndvol32.h:56
INT SndMixerGetVolumeControlDetails(PSND_MIXER Mixer, DWORD dwControlID, DWORD cChannels, DWORD cbDetails, LPVOID paDetails)
Definition: mixer.c:498
#define CALLBACK
Definition: compat.h:27
HWND hWnd
Definition: settings.c:17
struct _ADVANCED_CONTEXT * PADVANCED_CONTEXT
struct _SET_VOLUME_CONTEXT * PSET_VOLUME_CONTEXT
UINT_PTR WPARAM
Definition: windef.h:207
PSND_MIXER Mixer
Definition: sndvol32.h:109
INT_PTR CALLBACK TrayDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: tray.c:262
int32_t INT_PTR
Definition: typedefs.h:63
_WINDOW_MODE
Definition: sndvol32.h:34
struct _PREFERENCES_CONTEXT PREFERENCES_CONTEXT
BOOL SaveXYCoordWnd(IN HWND hWnd, IN PPREFERENCES_CONTEXT PrefContext)
Definition: misc.c:218
#define BOOL
Definition: nt_native.h:43
int32_t INT
Definition: typedefs.h:57
WPARAM wParam
Definition: combotst.c:138
CHAR * LPTSTR
Definition: xmlstorage.h:192
DWORD Id
HWND hWndNotification
Definition: sndvol32.h:99
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:48
VOID CloseAppConfig(VOID)
Definition: misc.c:152
unsigned int BOOL
Definition: ntddk_ex.h:94
long LONG
Definition: pedump.c:60
static TAGREF LPCWSTR LPDWORD LPVOID lpBuffer
Definition: db.cpp:173
BOOL SndMixerIsDisplayControl(PSND_MIXER Mixer, LPMIXERCONTROL Control)
Definition: mixer.c:598
CHAR * PCH
Definition: ntbasedef.h:398
struct _SND_MIXER * Mixer
Definition: sndvol32.h:45
struct _ADVANCED_CONTEXT ADVANCED_CONTEXT
VOID UpdateDialogLineSwitchControl(PPREFERENCES_CONTEXT PrefContext, LPMIXERLINE Line, LONG fValue)
Definition: dialog.c:769
LONG_PTR LPARAM
Definition: windef.h:208
struct _SND_MIXER_DESTINATION * Next
Definition: sndvol32.h:89
LPMIXERCONTROL Controls
Definition: sndvol32.h:82
UINT SelectedLine
Definition: sndvol32.h:46
INT SndMixerSetVolumeControlDetails(PSND_MIXER Mixer, DWORD dwControlID, DWORD cChannels, DWORD cbDetails, LPVOID paDetails)
Definition: mixer.c:474
PMIXER_WINDOW MixerWindow
Definition: sndvol32.h:133
BOOL bShowExtendedControls
Definition: sndvol32.h:54
BOOL SndMixerQueryControls(PSND_MIXER Mixer, PUINT DisplayControls, LPMIXERLINE LineInfo, LPMIXERCONTROL *Controls)
Definition: mixer.c:112
struct _SND_MIXER_DESTINATION * PSND_MIXER_DESTINATION
UINT DialogCount
Definition: sndvol32.h:49
MIXERCAPS Caps
Definition: sndvol32.h:102
char TCHAR
Definition: xmlstorage.h:189
struct _MIXER_WINDOW MIXER_WINDOW
BOOL InitAppConfig(VOID)
Definition: misc.c:138
PSND_MIXER Mixer
Definition: sndvol32.h:134
HMIXER hmx
Definition: sndvol32.h:101
__wchar_t WCHAR
Definition: xmlstorage.h:180
PSND_MIXER_CONNECTION Connections
Definition: sndvol32.h:93
UINT WindowCount
Definition: sndvol32.h:47
unsigned long DWORD
Definition: ntddk_ex.h:95
WINDOW_MODE Mode
Definition: sndvol32.h:51
PSND_MIXER SndMixerCreate(HWND hWndNotification, UINT MixerId)
Definition: mixer.c:69
struct _MIXER_WINDOW * PMIXER_WINDOW
Definition: ncftp.h:79
WCHAR LineName[MIXER_LONG_NAME_CHARS]
Definition: sndvol32.h:143
VOID LoadDialogCtrls(PPREFERENCES_CONTEXT PrefContext)
Definition: dialog.c:676
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:80
SIZE baseUnit
Definition: sndvol32.h:57
UINT MixerId
Definition: sndvol32.h:100
struct _SND_MIXER * PSND_MIXER
static const WCHAR szDeviceName[]
Definition: provider.c:56
#define MIXER_LONG_NAME_CHARS
Definition: mmsystem.h:294
WCHAR LineName[MIXER_LONG_NAME_CHARS]
Definition: sndvol32.h:124
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:272
TCHAR DeviceName[128]
Definition: sndvol32.h:117
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:148
WCHAR LineName[MIXER_LONG_NAME_CHARS]
Definition: sndvol32.h:132
BOOL LoadXYCoordWnd(IN PPREFERENCES_CONTEXT PrefContext)
Definition: misc.c:162
unsigned int UINT
Definition: ndis.h:50
HWND hMainWnd
Definition: magnifier.c:32
struct _SND_MIXER_DESTINATION SND_MIXER_DESTINATION
DWORD GetStyleValue(VOID)
Definition: misc.c:388
struct _SND_MIXER_CONNECTION SND_MIXER_CONNECTION
UINT MixersCount
Definition: sndvol32.h:98
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
LPMIXERLINE SndMixerGetLineByName(PSND_MIXER Mixer, DWORD LineID, LPWSTR LineName)
Definition: mixer.c:615
#define OUT
Definition: typedefs.h:40
UINT SndMixerGetSelection(PSND_MIXER Mixer)
Definition: mixer.c:361
struct tagContext Context
Definition: acpixf.h:1034
unsigned int ULONG
Definition: retypes.h:1
LPMIXERCONTROL Controls
Definition: sndvol32.h:91
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
HKEY hAppSettingsKey
Definition: misc.c:135
BOOL bHasExtendedControls
Definition: sndvol32.h:53
BOOL(CALLBACK * PFNSNDMIXENUMLINES)(PSND_MIXER Mixer, LPMIXERLINE Line, UINT DisplayControls, PVOID Context)
Definition: sndvol32.h:147
WCHAR * LPWSTR
Definition: xmlstorage.h:184
BOOL SndMixerSelect(PSND_MIXER Mixer, UINT MixerId)
Definition: mixer.c:304
LPARAM lParam
Definition: combotst.c:139
BOOL ReadLineConfig(IN LPTSTR szDeviceName, IN LPTSTR szLineName, IN LPTSTR szControlName, OUT DWORD *Flags)
Definition: misc.c:307
VOID UpdateDialogLineSliderControl(PPREFERENCES_CONTEXT PrefContext, LPMIXERLINE Line, DWORD DialogID, DWORD Position)
Definition: dialog.c:815
struct _SET_VOLUME_CONTEXT SET_VOLUME_CONTEXT
HWND hStatusBar
Definition: sndvol32.h:44
struct Line Line
unsigned int * PUINT
Definition: ndis.h:50
PMIXER_WINDOW MixerWindow
Definition: sndvol32.h:108