Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > DoxygenmxdMessage.c
Go to the documentation of this file.
00001 /* 00002 * PROJECT: ReactOS Sound System "MME Buddy" Library 00003 * LICENSE: GPL - See COPYING in the top level directory 00004 * FILE: lib/sound/mmebuddy/mixer/mxdMessage.c 00005 * 00006 * PURPOSE: Provides the mxdMessage exported function, as required by 00007 * the MME API, for mixer device support. 00008 * 00009 * PROGRAMMERS: Andrew Greenwood (silverblade@reactos.org) 00010 */ 00011 00012 #include "precomp.h" 00013 00014 MMRESULT 00015 MmeGetLineInfo( 00016 IN UINT DeviceId, 00017 IN UINT Message, 00018 IN DWORD_PTR PrivateHandle, 00019 IN DWORD_PTR Parameter1, 00020 IN DWORD_PTR Parameter2) 00021 { 00022 MMRESULT Result; 00023 PSOUND_DEVICE_INSTANCE SoundDeviceInstance; 00024 PSOUND_DEVICE SoundDevice; 00025 PMMFUNCTION_TABLE FunctionTable; 00026 00027 //SND_TRACE(L"Getting mixer info %u\n", Message); 00028 00029 if ( PrivateHandle == 0 ) 00030 { 00031 Result = GetSoundDevice(MIXER_DEVICE_TYPE, DeviceId, &SoundDevice); 00032 00033 if ( ! MMSUCCESS(Result) ) 00034 return TranslateInternalMmResult(Result); 00035 00036 Result = GetSoundDeviceFunctionTable(SoundDevice, &FunctionTable); 00037 if ( ! MMSUCCESS(Result) ) 00038 return TranslateInternalMmResult(Result); 00039 00040 Result = FunctionTable->QueryMixerInfo(NULL, DeviceId, Message, (LPVOID)Parameter1, Parameter2); 00041 return Result; 00042 } 00043 00044 VALIDATE_MMSYS_PARAMETER( PrivateHandle ); 00045 SoundDeviceInstance = (PSOUND_DEVICE_INSTANCE) PrivateHandle; 00046 00047 Result = GetSoundDeviceFromInstance(SoundDeviceInstance, &SoundDevice); 00048 if ( ! MMSUCCESS(Result) ) 00049 return TranslateInternalMmResult(Result); 00050 00051 Result = GetSoundDeviceFunctionTable(SoundDevice, &FunctionTable); 00052 if ( ! MMSUCCESS(Result) ) 00053 return TranslateInternalMmResult(Result); 00054 00055 if ( ! FunctionTable->QueryMixerInfo ) 00056 return MMSYSERR_NOTSUPPORTED; 00057 00058 Result = FunctionTable->QueryMixerInfo(SoundDeviceInstance, DeviceId, Message, (LPVOID)Parameter1, Parameter2); 00059 00060 return Result; 00061 } 00062 00063 00064 /* 00065 Standard MME driver entry-point for messages relating to mixers. 00066 */ 00067 DWORD 00068 APIENTRY 00069 mxdMessage( 00070 UINT DeviceId, 00071 UINT Message, 00072 DWORD_PTR PrivateHandle, 00073 DWORD_PTR Parameter1, 00074 DWORD_PTR Parameter2) 00075 { 00076 MMRESULT Result = MMSYSERR_NOTSUPPORTED; 00077 00078 AcquireEntrypointMutex(MIXER_DEVICE_TYPE); 00079 00080 //SND_TRACE(L"mxdMessage - Message type %d\n", Message); 00081 00082 switch ( Message ) 00083 { 00084 case MXDM_GETNUMDEVS : 00085 { 00086 Result = GetSoundDeviceCount(MIXER_DEVICE_TYPE); 00087 break; 00088 } 00089 00090 case MXDM_GETDEVCAPS : 00091 { 00092 Result = MmeGetSoundDeviceCapabilities(MIXER_DEVICE_TYPE, 00093 DeviceId, 00094 (PVOID) Parameter1, 00095 Parameter2); 00096 break; 00097 } 00098 00099 case MXDM_INIT : 00100 { 00101 Result = MMSYSERR_NOERROR; 00102 break; 00103 } 00104 00105 case MXDM_OPEN : 00106 { 00107 Result = MmeOpenDevice(MIXER_DEVICE_TYPE, 00108 DeviceId, 00109 (LPWAVEOPENDESC) Parameter1, /* unused */ 00110 Parameter2, 00111 (DWORD*) PrivateHandle); 00112 VALIDATE_MMSYS_PARAMETER(*(DWORD_PTR*)PrivateHandle); 00113 break; 00114 } 00115 00116 case MXDM_CLOSE : 00117 { 00118 Result = MmeCloseDevice(PrivateHandle); 00119 00120 break; 00121 } 00122 00123 case MXDM_GETCONTROLDETAILS : 00124 { 00125 Result = MmeGetLineInfo(DeviceId, 00126 Message, 00127 PrivateHandle, 00128 Parameter1, 00129 Parameter2); 00130 00131 break; 00132 } 00133 00134 case MXDM_SETCONTROLDETAILS : 00135 { 00136 Result = MmeGetLineInfo(DeviceId, 00137 Message, 00138 PrivateHandle, 00139 Parameter1, 00140 Parameter2); 00141 00142 break; 00143 } 00144 00145 case MXDM_GETLINECONTROLS : 00146 { 00147 Result = MmeGetLineInfo(DeviceId, 00148 Message, 00149 PrivateHandle, 00150 Parameter1, 00151 Parameter2); 00152 00153 break; 00154 } 00155 00156 case MXDM_GETLINEINFO : 00157 { 00158 Result = MmeGetLineInfo(DeviceId, 00159 Message, 00160 PrivateHandle, 00161 Parameter1, 00162 Parameter2); 00163 00164 break; 00165 } 00166 00167 case DRV_QUERYDEVICEINTERFACESIZE : 00168 { 00169 Result = MmeGetDeviceInterfaceString(MIXER_DEVICE_TYPE, DeviceId, NULL, 0, (DWORD*)Parameter1); //FIXME DWORD_PTR 00170 break; 00171 } 00172 00173 case DRV_QUERYDEVICEINTERFACE : 00174 { 00175 Result = MmeGetDeviceInterfaceString(MIXER_DEVICE_TYPE, DeviceId, (LPWSTR)Parameter1, Parameter2, NULL); //FIXME DWORD_PTR 00176 break; 00177 } 00178 00179 } 00180 00181 //SND_TRACE(L"mxdMessage returning MMRESULT %d\n", Result); 00182 00183 ReleaseEntrypointMutex(MIXER_DEVICE_TYPE); 00184 00185 return Result; 00186 } Generated on Sun May 27 2012 04:36:12 for ReactOS by
1.7.6.1
|