#include "multimediapch.h" #pragma hdrstop #define _WINMM_ #include static void WINAPI MigrateAllDrivers ( void ) { return; } static void WINAPI MigrateSoundEvents ( void ) { return; } static BOOL WINAPI PlaySoundW( LPCWSTR szSoundName, HMODULE hModule, DWORD wFlags ) { return FALSE; } static BOOL WINAPI PlaySoundA( LPCSTR szSoundName, HMODULE hModule, DWORD wFlags ) { return FALSE; } static void WINAPI WinmmLogoff( void ) { return; } static void WINAPI WinmmLogon( BOOL fConsole ) { return; } static UINT WINAPI waveOutGetNumDevs( void ) { return 0; } static MMRESULT WINAPI waveOutMessage( IN HWAVEOUT hwo, IN UINT uMsg, IN DWORD_PTR dw1, IN DWORD_PTR dw2 ) { // Perhaps should raise an exception here. There's no way to know // the proper return value, and this shouldn't be called if other // wave functions have failed. return MMSYSERR_ERROR; } static MMRESULT WINAPI mixerClose( IN OUT HMIXER hmx ) { return MMSYSERR_ERROR; } static MMRESULT WINAPI mixerGetControlDetailsW( IN HMIXEROBJ hmxobj, IN OUT LPMIXERCONTROLDETAILS pmxcd, IN DWORD fdwDetails ) { return MMSYSERR_ERROR; } static MMRESULT WINAPI mixerGetLineControlsW( IN HMIXEROBJ hmxobj, IN OUT LPMIXERLINECONTROLSW pmxlc, IN DWORD fdwControls ) { return MMSYSERR_ERROR; } MMRESULT WINAPI mixerGetID( IN HMIXEROBJ hmxobj, OUT UINT FAR *puMxId, IN DWORD fdwId ) { return MMSYSERR_ERROR; } static MMRESULT WINAPI mixerGetLineInfoW( IN HMIXEROBJ hmxobj, OUT LPMIXERLINEW pmxl, IN DWORD fdwInfo ) { return MMSYSERR_ERROR; } static DWORD WINAPI mixerMessage( IN HMIXER hmx, IN UINT uMsg, IN DWORD_PTR dwParam1, IN DWORD_PTR dwParam2 ) { // Perhaps should raise an exception here. There's no way to know // the proper return value, and this shouldn't be called if other // mixer functions have failed. return MMSYSERR_ERROR; } static MMRESULT WINAPI mixerOpen( OUT LPHMIXER phmx, IN UINT uMxId, IN DWORD_PTR dwCallback, IN DWORD_PTR dwInstance, IN DWORD fdwOpen ) { return MMSYSERR_ERROR; } static MMRESULT WINAPI mixerSetControlDetails( IN HMIXEROBJ hmxobj, IN LPMIXERCONTROLDETAILS pmxcd, IN DWORD fdwDetails ) { return MMSYSERR_ERROR; } static MMRESULT WINAPI mmioAscend( HMMIO hmmio, LPMMCKINFO lpck, UINT wFlags ) { return MMSYSERR_ERROR; } static MMRESULT WINAPI mmioClose( HMMIO hmmio, UINT wFlags ) { return MMSYSERR_ERROR; } static MMRESULT WINAPI mmioDescend( HMMIO hmmio, LPMMCKINFO lpck, const MMCKINFO *lpckParent, UINT wFlags ) { return MMSYSERR_ERROR; } static HMMIO WINAPI mmioOpenW( LPWSTR szFilename, LPMMIOINFO lpmmioinfo, DWORD dwOpenFlags ) { if (lpmmioinfo) { // Must fill in wErrorRet field. Docs say, of MMIOERR_INVALIDFILE: // "Another failure condition occurred. This is the default error for an open-file failure." lpmmioinfo->wErrorRet = MMIOERR_INVALIDFILE; } return NULL; } static LONG WINAPI mmioRead( HMMIO hmmio, HPSTR pch, LONG cch ) { return -1; } static BOOL WINAPI sndPlaySoundW( IN LPCWSTR pszSound, IN UINT fuSound ) { return FALSE; } static MCIERROR WINAPI mciSendCommandW( IN MCIDEVICEID IDDevice, IN UINT uMsg, IN DWORD_PTR fdwCommand, IN DWORD_PTR dwParam ) { return MCIERR_OUT_OF_MEMORY; } static MCIERROR WINAPI mciSendStringW( IN LPCWSTR lpstrCommand, OUT LPWSTR lpstrReturnString, IN UINT uReturnLength, IN HWND hwndCallback ) { return MCIERR_OUT_OF_MEMORY; } // // !! WARNING !! The entries below must be in alphabetical order, and are CASE SENSITIVE (eg lower case comes last!) // DEFINE_PROCNAME_ENTRIES(winmm) { DLPENTRY(MigrateAllDrivers) DLPENTRY(MigrateSoundEvents) DLPENTRY(PlaySoundA) DLPENTRY(PlaySoundW) DLPENTRY(WinmmLogoff) DLPENTRY(WinmmLogon) DLPENTRY(mciSendCommandW) DLPENTRY(mciSendStringW) DLPENTRY(mixerClose) DLPENTRY(mixerGetControlDetailsW) DLPENTRY(mixerGetID) DLPENTRY(mixerGetLineControlsW) DLPENTRY(mixerGetLineInfoW) DLPENTRY(mixerMessage) DLPENTRY(mixerOpen) DLPENTRY(mixerSetControlDetails) DLPENTRY(mmioAscend) DLPENTRY(mmioClose) DLPENTRY(mmioDescend) DLPENTRY(mmioOpenW) DLPENTRY(mmioRead) DLPENTRY(sndPlaySoundW) DLPENTRY(waveOutGetNumDevs) DLPENTRY(waveOutMessage) }; DEFINE_PROCNAME_MAP(winmm)