The sndPlaySound function plays a waveform sound specified either by a file name or by an entry in the registry or the WIN.INI file. This function offers a subset of the functionality of the PlaySound function; sndPlaySound is being maintained for backward compatibility.

BOOL sndPlaySound(
  LPCTSTR lpszSound,  
  UINT fuSound       



A string that specifies the sound to play. This parameter can be either an entry in the registry or in WIN.INI that identifies a system sound, or it can be the name of a waveform-audio file. (If the function does not find the entry, the parameter is treated as a file name.) If this parameter is NULL, any currently playing sound is stopped.


Flags for playing the sound. The following values are defined.

Value Meaning
SND_ASYNC The sound is played asynchronously and the function returns immediately after beginning the sound. To terminate an asynchronously played sound, call sndPlaySound with lpszSoundName set to NULL.
SND_LOOP The sound plays repeatedly until sndPlaySound is called again with the lpszSoundName parameter set to NULL. You must also specify the SND_ASYNC flag to loop sounds.
SND_MEMORY The parameter specified by lpszSoundName points to an image of a waveform sound in memory.
SND_NODEFAULT If the sound cannot be found, the function returns silently without playing the default sound.
SND_NOSTOP If a sound is currently playing, the function immediately returns FALSE, without playing the requested sound.
SND_SENTRY Requires Windows Vista or later. If this flag is set, the function triggers a SoundSentry event when the sound is played. For more information, see PlaySound.
SND_SYNC The sound is played synchronously and the function does not return until the sound ends.
SND_SYSTEM Requires Windows Vista or later. If this flag is set, the sound is assigned to the audio session for system notification sounds. For more information, see PlaySound.

Return Values

Returns TRUE if successful or FALSE otherwise.


If the specified sound cannot be found, sndPlaySound plays the system default sound. If there is no system default entry in the registry or WIN.INI file, or if the default sound cannot be found, the function makes no sound and returns FALSE.

The specified sound must fit in available physical memory and be playable by an installed waveform-audio device driver. If sndPlaySound does not find the sound in the current directory, the function searches for it using the standard directory-search order.

Winmm.dll exports sndPlaySoundA for the ANSI character set, and sndPlaySoundW for Unicode character sets. Which function is actually called depends on whether the code is defined in the header to compile for ANSI or Unicode.

Windows 95/98/Me: sndPlaySoundW is supported by the Microsoft Layer for Unicode. To use this, you must add certain files to your application, as outlined in Microsoft Layer for Unicode on Windows 95/98/Me Systems.


  Windows NT/2000/XP: Included in Windows NT 3.1 and later.
  Windows 95/98/Me: Included in Windows 95 and later.
  Header: Declared in Mmsystem.h; include Windows.h.
  Library: Use Winmm.lib.
  Unicode: Implemented as Unicode and ANSI versions on Windows NT/2000/XP. Also supported by Microsoft Layer for Unicode.

See Also

Waveform Audio, Waveform Functions, PlaySound