Hi.
Hello, I made a small program to listen to MP3
After listening to 3 or 4 MP3 program crashes, can not close the wDeviceID You know why? 
Help 
thanks
The Code is:
DWORD MMPlay::mciOpen(LPCSTR lpFileName)
{
     GetShortPathName(lpFileName, ShortFileName, 255);
    UINT wDeviceID;
    DWORD dwReturn;
    MCI_OPEN_PARMS mciOpenParms;
   MCI_SET_PARMS mciSetParms;
   MCI_STATUS_PARMS mciStatusParms;
    mciSetParms.dwTimeFormat = MCI_FORMAT_MILLISECONDS;
    mciOpenParms.lpstrDeviceType = "mpegvideo";
   mciOpenParms.lpstrElementName = ShortFileName;
   //GetFileTitle(lpFileName, strAlias, 255);
   //mciOpenParms.lpstrAlias = strAlias;
   mciStatusParms.dwItem = MCI_STATUS_LENGTH;
    Sleep(300);
    mciSendCommand(MCI_ALL_DEVICE_ID, MCI_CLOSE, MCI_WAIT, NULL);
    Sleep(300);
    if (dwReturn = (mciSendCommand(0, MCI_OPEN,
       MCI_OPEN_TYPE | MCI_OPEN_ELEMENT,
       (DWORD)(LPVOID) &mciOpenParms)))
    {
        mciError(dwReturn);
        return (0L);
    }
    wDeviceID = mciOpenParms.wDeviceID;
   if (dwReturn = (mciSendCommand(wDeviceID, MCI_SET, MCI_SET_TIME_FORMAT, (DWORD)(LPVOID) &mciSetParms)))
   {
        mciError(dwReturn);
        return (0L);
    }
    if (dwReturn = mciSendCommand(wDeviceID, MCI_STATUS, MCI_STATUS_ITEM,
                                      (DWORD)(LPMCI_STATUS_PARMS) &mciStatusParms))
    {
        mciError(dwReturn);
        return (0L);
    }
    intTrackLenght = (int)mciStatusParms.dwReturn;
    ///////////////
   return wDeviceID;
}
[attachment deleted by admin]