Share via


SndGetSoundDirectoriesList

Send Feedback

This function returns an array of possible directories for sound files for the specified sound event type and memory location.

HRESULT SndGetSoundDirectoriesList(
   SND_EVENT seSoundEvent,
   DWORD grfLocations, 
   SNDDIRECTORYINFO** ppSoundDirectories,
   int* pcSoundDirectories
);

Parameters

  • seSoundEvent
    [in] Indicates the type of sound event to query for.

  • grfLocations
    [in] Indicates locations in memory that are searched for sound directories. The following table shows the bitmask values for this parameter, with a description of the purpose of each.

    Bitmask Description
    SND_LOCATION_STORAGECARD Retrieve sound files or directories from the storage card.
    SND_LOCATION_USERDATA Retrieve sound files from user data folders such as \My Documents and \Application Data\Sounds or \Storage Application Data.
    SND_LOCATION_ROM Retrieve sound files from ROM.
    SND_LOCATION_ALL Retrieves sound files from all locations - storage card, user data folders, and ROM.
  • ppSoundDirectories
    [out] A pointer to an array of sound directories. This function will create the array of SNDDIRECTORYINFO structures, and allocate the appropriate amount of memory.

  • pcSoundDirectories
    [out] A pointer to an integer which indicates the number of SNDDIRECTORYINFO structures created and returned in ppSoundDirectories.

Return Values

The function may return any HRESULT and the application should use the SUCCEEDED and FAILED macros to check the results.

Remarks

This function enables an application to query directories where sound files should be copied to for any of the sound events listed in the SND_EVENT enumeration. The fully qualified path for the directory is returned. This function allocates memory for all SNDDIRECTORYINFO structures as one contiguous block. The user is responsible for freeing all memory returned by this function by calling LocalFree function on the returned pointer.

Code Example

The following code example demonstrates how to use SndGetSoundDirectoriesList.

Note   To make the following code example easier to read, security checking and error handling are not included. This code example should not be used in a release configuration unless it has been modified to include them.

void CopyAndSetRingtone(TCHAR* pszCurrentDirectory, TCHAR* pszFileName)
{

    TCHAR szPathAndFile[MAX_PATH];
    TCHAR szDestination[MAX_PATH];

    // Initialize an empty SNDFILEINFO structure.
    SNDFILEINFO sndFile               = {0};

    SNDDIRECTORYINFO* pSndDirectories = NULL;
    int cSoundDirectories             = 0;

    // Build the path to the file.
    StringCchPrintf(szPathAndFile, MAX_PATH, _T("%s\\%s"), pszCurrentDirectory, pszFileName);

    // Get the list of User Data directories.
    SndGetSoundDirectoriesList(SND_EVENT_RINGTONELINE1, SND_LOCATION_USERDATA, &pSndDirectories, &cSoundDirectories);

    // Set the destination to the first User Data directory.
    StringCchPrintf(szDestination, MAX_PATH, _T("%s\\%s"), pSndDirectories->szPathName, pszFileName);

    CopyFile(szPathAndFile, szDestination, FALSE);

    // Setup values in the SNDFILEINFO structure.
    // For SndSetSound, you only need to set sndFile.szPathName, not sndFile.szDisplayName.
    sndFile.sstType = SND_SOUNDTYPE_FILE;
    StringCchCopy(sndFile.szPathName, MAX_PATH, szDestination);

    // Set the ringtone.
    SndSetSound(SND_EVENT_RINGTONELINE1, &sndFile, TRUE);

    // Free memory.
    LocalFree(pSndDirectories);

    return;

}

Requirements

Pocket PC: Windows Mobile Version 5.0 and later
Smartphone: Windows Mobile Version 5.0 and later
OS Versions: Windows CE 5.0 and later
Header: Soundfile.h

Send Feedback on this topic to the authors

Feedback FAQs

© 2006 Microsoft Corporation. All rights reserved.