28 #define NO_MIXER_SELECTED ((UINT)(~0)) 113 PUINT DisplayControls,
122 if (*Controls !=
NULL)
128 LineControls.
cbStruct =
sizeof(LineControls);
144 (*DisplayControls)++;
147 DPRINT(
"Line control: %ws (0x%x, 0x%x)\n", (*Controls)[
j].
szName, (*Controls)[
j].fdwControl, (*Controls)[
j].dwControlType);
163 DPRINT(
"Failed to allocate memory for %d line (ID: 0x%x) controls!\n", LineInfo->
dwLineID, LineInfo->
cControls);
178 UINT i, DispControls;
183 LineInfo.
cbStruct =
sizeof(LineInfo);
184 for (
i =
Line->Info.cConnections;
i > 0;
i--)
205 DPRINT(
"Failed to query connection controls\n");
215 Con->Info = LineInfo;
216 Con->Controls = Controls;
217 Con->DisplayControls = DispControls;
230 DPRINT(
"Failed to get connection information: %d\n",
Result);
254 Line->Info.cbStruct =
sizeof(
Line->Info);
255 Line->Info.dwDestination =
i - 1;
260 DPRINT(
"+ Destination: %ws (0x%x, %d)\n",
Line->Info.szName,
Line->Info.dwLineID,
Line->Info.dwComponentType);
263 &
Line->DisplayControls,
267 DPRINT(
"Failed to query mixer controls!\n");
274 DPRINT(
"Failed to query mixer connections!\n");
284 DPRINT(
"Failed to get line information for id %d!\n",
i);
294 DPRINT(
"Allocation of SND_MIXER_DEST structure for id %d failed!\n",
i);
404 if (
Line->Info.dwLineID == LineID)
464 DPRINT(
"Failed to get device capabilities for mixer id %d!\n",
i);
538 Line->DisplayControls,
563 if (
Line->Info.dwLineID == LineID)
567 if (
Line->DisplayControls != 0)
578 for (Connection =
Line->Connections; Connection !=
NULL; Connection = Connection->
Next)
627 if (
Line->Info.dwLineID == LineID)
629 if (
Line->DisplayControls != 0)
637 for (Connection =
Line->Connections; Connection !=
NULL; Connection = Connection->
Next)
641 return &Connection->
Info;
UINT WINAPI mixerSetControlDetails(HMIXEROBJ hmix, LPMIXERCONTROLDETAILS lpmcd, DWORD fdwDetails)
INT SndMixerGetDestinationCount(PSND_MIXER Mixer)
#define MIXER_GETCONTROLDETAILSF_VALUE
PSND_MIXER_DESTINATION Lines
#define MIXER_GETLINECONTROLSF_ALL
CHAR szPname[MAXPNAMELEN]
INT SndMixerGetLineName(PSND_MIXER Mixer, DWORD LineID, LPTSTR lpBuffer, UINT uSize, BOOL LongName)
BOOL(CALLBACK * PFNSNDMIXENUMPRODUCTS)(PSND_MIXER Mixer, UINT Id, LPCTSTR ProductName, PVOID Context)
UINT WINAPI mixerClose(HMIXER hMix)
#define mixerGetLineControls
BOOL SndMixerEnumConnections(PSND_MIXER Mixer, DWORD LineID, PFNSNDMIXENUMCONNECTIONS EnumProc, PVOID Context)
BOOL SndMixerIsDisplayControl(PSND_MIXER Mixer, LPMIXERCONTROL Control)
static BOOL SndMixerQueryDestinations(PSND_MIXER Mixer)
CHAR szShortName[MIXER_SHORT_NAME_CHARS]
MIXERCONTROLA MIXERCONTROL
#define MIXERCONTROL_CT_CLASS_MASK
static VOID ClearMixerCache(PSND_MIXER Mixer)
INT SndMixerSetVolumeControlDetails(PSND_MIXER Mixer, DWORD dwControlID, DWORD cChannels, DWORD cbDetails, LPVOID paDetails)
#define MIXER_OBJECTF_MIXER
BOOL SndMixerQueryControls(PSND_MIXER Mixer, PUINT DisplayControls, LPMIXERLINE LineInfo, LPMIXERCONTROL *Controls)
#define MIXERCONTROL_CT_CLASS_SWITCH
BOOL SndMixerEnumLines(PSND_MIXER Mixer, PFNSNDMIXENUMLINES EnumProc, PVOID Context)
#define MIXER_SETCONTROLDETAILSF_VALUE
#define NO_MIXER_SELECTED
static TAGREF LPCWSTR LPDWORD LPVOID lpBuffer
_In_ WDF_WMI_PROVIDER_CONTROL Control
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
#define MIXER_GETLINEINFOF_DESTINATION
UINT WINAPI mixerOpen(LPHMIXER lphMix, UINT uDeviceID, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
#define MIXERCONTROL_CONTROLF_DISABLED
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
INT SndMixerGetVolumeControlDetails(PSND_MIXER Mixer, DWORD dwControlID, DWORD cChannels, DWORD cbDetails, LPVOID paDetails)
CHAR szName[MIXER_LONG_NAME_CHARS]
UINT SndMixerGetSelection(PSND_MIXER Mixer)
VOID SndMixerClose(PSND_MIXER Mixer)
#define MIXER_OBJECTF_HMIXER
struct _SND_MIXER_CONNECTION * Next
#define memcpy(s1, s2, n)
static BOOL SndMixerQueryConnections(PSND_MIXER Mixer, PSND_MIXER_DESTINATION Line)
BOOL SndMixerEnumProducts(PSND_MIXER Mixer, PFNSNDMIXENUMPRODUCTS EnumProc, PVOID Context)
struct _SND_MIXER * PSND_MIXER
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
VOID SndMixerDestroy(PSND_MIXER Mixer)
#define MIXERCONTROL_CT_CLASS_FADER
#define MIXER_GETLINEINFOF_SOURCE
UINT WINAPI mixerGetNumDevs(void)
_In_ ULONGLONG _In_ PUNICODE_STRING _In_ PUNICODE_STRING LongName
BOOL(CALLBACK * PFNSNDMIXENUMCONNECTIONS)(PSND_MIXER Mixer, DWORD LineID, LPMIXERLINE Line, PVOID Context)
struct tMIXERCONTROLDETAILS MIXERCONTROLDETAILS
#define mixerGetControlDetails
struct _SND_MIXER_DESTINATION SND_MIXER_DESTINATION
struct _SND_MIXER_CONNECTION SND_MIXER_CONNECTION
BOOL SndMixerSelect(PSND_MIXER Mixer, UINT MixerId)
static const WCHAR szName[]
static BOOL CALLBACK EnumProc(_In_ HWND hWnd, _In_ LPARAM lParam)
struct _SND_MIXER SND_MIXER
INT SndMixerGetProductName(PSND_MIXER Mixer, LPTSTR lpBuffer, UINT uSize)
PSND_MIXER SndMixerCreate(HWND hWndNotification, UINT MixerId)
BOOL(CALLBACK * PFNSNDMIXENUMLINES)(PSND_MIXER Mixer, LPMIXERLINE Line, UINT DisplayControls, PVOID Context)
#define HeapFree(x, y, z)
LPMIXERLINE SndMixerGetLineByName(PSND_MIXER Mixer, DWORD LineID, LPWSTR LineName)