2 * PROJECT: ReactOS Sound System "MME Buddy" Library
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: lib/sound/mmebuddy/mixer/mxdMessage.c
6 * PURPOSE: Provides the mxdMessage exported function, as required by
7 * the MME API, for mixer device support.
9 * PROGRAMMERS: Andrew Greenwood (silverblade@reactos.org)
24 IN DWORD_PTR PrivateHandle
,
25 IN DWORD_PTR Parameter1
,
26 IN DWORD_PTR Parameter2
)
29 PSOUND_DEVICE_INSTANCE SoundDeviceInstance
;
30 PSOUND_DEVICE SoundDevice
;
31 PMMFUNCTION_TABLE FunctionTable
;
33 //SND_TRACE(L"Getting mixer info %u\n", Message);
35 VALIDATE_MMSYS_PARAMETER( PrivateHandle
);
36 SoundDeviceInstance
= (PSOUND_DEVICE_INSTANCE
) PrivateHandle
;
38 Result
= GetSoundDeviceFromInstance(SoundDeviceInstance
, &SoundDevice
);
39 if ( ! MMSUCCESS(Result
) )
40 return TranslateInternalMmResult(Result
);
42 Result
= GetSoundDeviceFunctionTable(SoundDevice
, &FunctionTable
);
43 if ( ! MMSUCCESS(Result
) )
44 return TranslateInternalMmResult(Result
);
46 if ( ! FunctionTable
->QueryMixerInfo
)
47 return MMSYSERR_NOTSUPPORTED
;
49 Result
= FunctionTable
->QueryMixerInfo(SoundDeviceInstance
, Message
, (LPVOID
)Parameter1
, Parameter2
);
56 Standard MME driver entry-point for messages relating to mixers.
63 DWORD_PTR PrivateHandle
,
67 MMRESULT Result
= MMSYSERR_NOTSUPPORTED
;
69 AcquireEntrypointMutex(MIXER_DEVICE_TYPE
);
71 //SND_TRACE(L"mxdMessage - Message type %d\n", Message);
75 case MXDM_GETNUMDEVS
:
77 Result
= GetSoundDeviceCount(MIXER_DEVICE_TYPE
);
81 case MXDM_GETDEVCAPS
:
83 Result
= MmeGetSoundDeviceCapabilities(MIXER_DEVICE_TYPE
,
92 Result
= MMSYSERR_NOERROR
;
98 Result
= MmeOpenDevice(MIXER_DEVICE_TYPE
,
100 (LPWAVEOPENDESC
) Parameter1
, /* unused */
102 (DWORD
*) PrivateHandle
);
109 Result
= MmeCloseDevice(PrivateHandle
);
114 case MXDM_GETCONTROLDETAILS
:
116 Result
= MmeGetLineInfo(Message
,
124 case MXDM_SETCONTROLDETAILS
:
126 Result
= MmeGetLineInfo(Message
,
134 case MXDM_GETLINECONTROLS
:
136 Result
= MmeGetLineInfo(Message
,
144 case MXDM_GETLINEINFO
:
146 Result
= MmeGetLineInfo(Message
,
154 case DRV_QUERYDEVICEINTERFACESIZE
:
156 Result
= MmeGetDeviceInterfaceString(MIXER_DEVICE_TYPE
, DeviceId
, NULL
, 0, (DWORD
*)Parameter1
); //FIXME DWORD_PTR
160 case DRV_QUERYDEVICEINTERFACE
:
162 Result
= MmeGetDeviceInterfaceString(MIXER_DEVICE_TYPE
, DeviceId
, (LPWSTR
)Parameter1
, Parameter2
, NULL
); //FIXME DWORD_PTR
168 //SND_TRACE(L"mxdMessage returning MMRESULT %d\n", Result);
170 ReleaseEntrypointMutex(MIXER_DEVICE_TYPE
);