102 DPRINT1(
"invalid mixer id %lu\n", MixerId);
110 *MixerHandle = (
HANDLE)MixerInfo;
139 DPRINT1(
"invalid mixer id %lu\n", MixerId);
158 ULONG DestinationLineID;
180 if (MixerLine->cbStruct !=
sizeof(
MIXERLINEW))
182 DPRINT1(
"MixerLine Expected %lu but got %lu\n",
sizeof(
MIXERLINEW), MixerLine->cbStruct);
187 Flags &=~MIXER_OBJECTF_HMIXER;
189 DPRINT(
"MMixerGetLineInfo MixerId %lu Flags %lu\n", MixerId,
Flags);
202 if (MixerLineSrc ==
NULL)
229 if (MixerLineSrc ==
NULL)
243 DestinationLineID = (MixerLine->dwSource *
SOURCE_LINE) + MixerLine->dwDestination;
247 MixerLine->dwSource, MixerLine->dwDestination,
278 DPRINT1(
"MMixerGetLineInfo: MixerName %S Line not found 0x%lx\n", MixerInfo->
MixCaps.
szPname, MixerLine->dwLineID);
303 DPRINT1(
"Failed to find component type %x\n", MixerLine->dwComponentType);
320 DPRINT1(
"MIXER_GETLINEINFOF_TARGETTYPE handling is unimplemented\n");
324 DPRINT1(
"Unknown Flags %lx handling is unimplemented\n",
Flags);
356 DPRINT1(
"Invalid MixerLineControls cbStruct passed %lu expected %lu\n", MixerLineControls->cbStruct,
sizeof(
MIXERLINECONTROLSW));
363 DPRINT1(
"Invalid MixerLineControls cbmxctrl passed %lu expected %lu\n", MixerLineControls->cbmxctrl,
sizeof(
MIXERCONTROLW));
380 Flags &= ~MIXER_OBJECTF_HMIXER;
382 DPRINT(
"MMixerGetLineControls MixerId %lu Flags %lu\n", MixerId,
Flags);
395 DPRINT(
"MMixerGetLineControls Line not found %lx\n", MixerLineControls->dwLineID);
399 if (MixerLineSrc->
Line.
cControls != MixerLineControls->cControls)
402 DPRINT1(
"Invalid control count %lu expected %lu\n", MixerLineControls->cControls, MixerLineSrc->
Line.
cControls);
436 DPRINT1(
"MMixerGetLineControls Line not found %lx\n", MixerLineControls->dwLineID);
441 ASSERT(MixerLineControls->cControls == 1);
460 DPRINT(
"DeviceInfo->u.MixControls.dwControlType %x not found in Line %x cControls %u \n", MixerLineControls->dwControlType, MixerLineControls->dwLineID, MixerLineSrc->
Line.
cControls);
473 DPRINT(
"MMixerGetLineControls ControlID not found %lx\n", MixerLineControls->dwLineID);
477 ASSERT(MixerLineControls->cControls == 1);
541 DPRINT1(
"invalid control id %lu\n", MixerControlDetails->dwControlID);
621 DPRINT1(
"Not Implemented MIXERCONTROL_CONTROLTYPE_ONOFF\n");
643 Entry = MixerLine->ControlsList.Flink;
644 while(
Entry != &MixerLine->ControlsList)
678 ULONG Index, SubIndex, DestinationLineID, SrcIndex;
682 DPRINT1(
"MixerList %p\n", MixerList);
683 DPRINT1(
"MidiInCount %lu\n", MixerList->MidiInListCount);
684 DPRINT1(
"MidiOutCount %lu\n", MixerList->MidiOutListCount);
685 DPRINT1(
"WaveInCount %lu\n", MixerList->WaveInListCount);
686 DPRINT1(
"WaveOutCount %lu\n", MixerList->WaveOutListCount);
687 DPRINT1(
"MixerCount %p\n", MixerList->MixerListCount);
710 DPRINT1(
"//----------------------------------------------------------------------------------------------\n");
712 DPRINT1(
"Destination Index %lu\n", SubIndex);
728 DPRINT1(
"Target.vDriverVersion %lx\n", DstMixerLine->
Line.
Target.vDriverVersion);
736 DestinationLineID = (
SOURCE_LINE * SrcIndex) + SubIndex;
740 DPRINT1(
"//==============================================================================================\n");
742 DPRINT1(
"SrcLineIndex : %lu\n", SrcIndex);
758 DPRINT1(
"Target.vDriverVersion %lx\n", SrcMixerLine->
Line.
Target.vDriverVersion);
839 DPRINT1(
"Failed to enumerate device %lu\n", DeviceIndex);
MIXER_STATUS MMixerAddEvent(IN PMIXER_CONTEXT MixerContext, IN OUT LPMIXER_INFO MixerInfo, IN PVOID MixerEventContext, IN PMIXER_EVENT MixerEventRoutine)
VOID MMixerHandleAlternativeMixers(IN PMIXER_CONTEXT MixerContext, IN PMIXER_LIST MixerList, IN LPMIXER_DATA MixerData, IN PTOPOLOGY Topology)
MIXER_STATUS MMixerSetupFilter(IN PMIXER_CONTEXT MixerContext, IN PMIXER_LIST MixerList, IN LPMIXER_DATA MixerData, IN PULONG DeviceCount)
MIXER_STATUS MMixerRemoveEvent(IN PMIXER_CONTEXT MixerContext, IN OUT LPMIXER_INFO MixerInfo, IN PVOID MixerEventContext, IN PMIXER_EVENT MixerEventRoutine)
MIXER_CONTEXT MixerContext
#define InitializeListHead(ListHead)
VOID(CALLBACK * PMIXER_EVENT)(IN PVOID MixerEventContext, IN HANDLE hMixer, IN ULONG NotificationType, IN ULONG Value)
@ MM_STATUS_NOT_IMPLEMENTED
@ MM_STATUS_INVALID_PARAMETER
@ MM_STATUS_NO_MORE_DEVICES
MIXER_STATUS(* PMIXER_ENUM)(IN PVOID EnumContext, IN ULONG DeviceIndex, OUT LPWSTR *DeviceName, OUT PHANDLE OutHandle, OUT PHANDLE OutDevInterfaceKey)
#define MIXER_OBJECTF_MIXER
#define MIXER_GETLINEINFOF_LINEID
#define MIXERCONTROL_CONTROLTYPE_ONOFF
#define MIXER_GETLINEINFOF_TARGETTYPE
#define MIXERCONTROL_CONTROLTYPE_MUX
#define MIXER_GETLINEINFOF_DESTINATION
#define MIXER_GETLINECONTROLSF_ONEBYID
#define MIXERCONTROL_CONTROLTYPE_VOLUME
#define MIXER_LONG_NAME_CHARS
#define MIXER_GETLINEINFOF_COMPONENTTYPE
#define MIXER_GETLINEINFOF_SOURCE
#define MIXER_GETLINECONTROLSF_ALL
#define MIXER_GETLINECONTROLSF_ONEBYTYPE
#define MIXER_SHORT_NAME_CHARS
#define MIXER_OBJECTF_HMIXER
#define MIXERCONTROL_CONTROLTYPE_MUTE
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
MIXER_STATUS MMixerGetControlDetails(IN PMIXER_CONTEXT MixerContext, IN HANDLE MixerHandle, IN ULONG MixerId, IN ULONG Flags, OUT LPMIXERCONTROLDETAILS MixerControlDetails)
VOID MMixerPrintMixers(IN PMIXER_CONTEXT MixerContext, IN PMIXER_LIST MixerList)
MIXER_STATUS MMixerClose(IN PMIXER_CONTEXT MixerContext, IN ULONG MixerId, IN PVOID MixerEventContext, IN PMIXER_EVENT MixerEventRoutine)
VOID MMixerPrintMixerLineControls(IN LPMIXERLINE_EXT MixerLine)
MIXER_STATUS MMixerOpen(IN PMIXER_CONTEXT MixerContext, IN ULONG MixerId, IN PVOID MixerEventContext, IN PMIXER_EVENT MixerEventRoutine, OUT PHANDLE MixerHandle)
MIXER_STATUS MMixerGetLineControls(IN PMIXER_CONTEXT MixerContext, IN HANDLE MixerHandle, IN ULONG MixerId, IN ULONG Flags, OUT LPMIXERLINECONTROLSW MixerLineControls)
MIXER_STATUS MMixerSetControlDetails(IN PMIXER_CONTEXT MixerContext, IN HANDLE MixerHandle, IN ULONG MixerId, IN ULONG Flags, OUT LPMIXERCONTROLDETAILS MixerControlDetails)
MIXER_STATUS MMixerGetCapabilities(IN PMIXER_CONTEXT MixerContext, IN ULONG MixerIndex, OUT LPMIXERCAPSW MixerCaps)
ULONG MMixerGetCount(IN PMIXER_CONTEXT MixerContext)
MIXER_STATUS MMixerGetLineInfo(IN PMIXER_CONTEXT MixerContext, IN HANDLE MixerHandle, IN ULONG MixerId, IN ULONG Flags, OUT LPMIXERLINEW MixerLine)
MIXER_STATUS MMixerInitialize(IN PMIXER_CONTEXT MixerContext, IN PMIXER_ENUM EnumFunction, IN PVOID EnumContext)
MIXER_STATUS MMixerSetGetMuxControlDetails(IN PMIXER_CONTEXT MixerContext, IN LPMIXER_INFO MixerInfo, IN ULONG NodeId, IN ULONG bSet, IN ULONG Flags, LPMIXERCONTROL_EXT MixerControl, IN LPMIXERCONTROLDETAILS MixerControlDetails, LPMIXERLINE_EXT MixerLine)
MIXER_STATUS MMixerSetGetMuteControlDetails(IN PMIXER_CONTEXT MixerContext, IN LPMIXER_INFO MixerInfo, IN LPMIXERCONTROL_EXT MixerControl, IN ULONG dwLineID, IN LPMIXERCONTROLDETAILS MixerControlDetails, IN ULONG bSet)
LPMIXER_INFO MMixerGetMixerInfoByIndex(IN PMIXER_CONTEXT MixerContext, IN ULONG MixerIndex)
struct MIXER_DATA * LPMIXER_DATA
struct MIXERCONTROL_EXT * LPMIXERCONTROL_EXT
struct MIXER_LIST * PMIXER_LIST
MIXER_STATUS MMixerGetMixerControlById(LPMIXER_INFO MixerInfo, DWORD dwControlID, LPMIXERLINE_EXT *MixerLine, LPMIXERCONTROL_EXT *MixerControl, PULONG NodeId)
MIXER_STATUS MMixerVerifyContext(IN PMIXER_CONTEXT MixerContext)
LPMIXERLINE_EXT MMixerGetSourceMixerLineByComponentType(LPMIXER_INFO MixerInfo, DWORD dwComponentType)
MIXER_STATUS MMixerSetGetVolumeControlDetails(IN PMIXER_CONTEXT MixerContext, IN LPMIXER_INFO MixerInfo, IN ULONG NodeId, IN ULONG bSet, LPMIXERCONTROL_EXT MixerControl, IN LPMIXERCONTROLDETAILS MixerControlDetails, LPMIXERLINE_EXT MixerLine)
MIXER_STATUS MMixerCreateMixerData(IN PMIXER_CONTEXT MixerContext, IN PMIXER_LIST MixerList, IN ULONG DeviceId, IN LPWSTR DeviceName, IN HANDLE hDevice, IN HANDLE hKey)
LPMIXERLINE_EXT MMixerGetSourceMixerLineByLineId(LPMIXER_INFO MixerInfo, DWORD dwLineID)
struct MIXER_INFO * LPMIXER_INFO
base of all file and directory entries
PMIXER_ALLOC_EVENT_DATA AllocEventData
PMIXER_DEVICE_CONTROL Control
PMIXER_QUERY_KEY_VALUE QueryKeyValue
PMIXER_FREE_EVENT_DATA FreeEventData
struct _LIST_ENTRY * Flink
WCHAR szPname[MAXPNAMELEN]
WCHAR szName[MIXER_LONG_NAME_CHARS]
union tagMIXERCONTROLW::@3041 Bounds
WCHAR szShortName[MIXER_SHORT_NAME_CHARS]
union tagMIXERCONTROLW::@3042 Metrics
struct tagMIXERLINEW::@3036 Target
WCHAR szName[MIXER_LONG_NAME_CHARS]
WCHAR szShortName[MIXER_SHORT_NAME_CHARS]
#define CONTAINING_RECORD(address, type, field)
_In_ WDFCOLLECTION _In_ ULONG Index
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_opt_ PCUNICODE_STRING DeviceName
_Must_inspect_result_ _In_ ULONG Flags