ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

mxdMessage.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.